Dock mit Vergrößerung
Eine Reihe App-Icons, bei der das Icon unter dem Cursor wächst und sich hebt, die Nachbarn werden auch etwas größer.
Einstellungen
Code
import { useState } from "react";
import { motion } from "framer-motion";
import { Calendar, Compass, Layers, MessageCircle, User } from "lucide-react";
const spring = { type: "spring" as const, stiffness: 300, damping: 30 };
const ITEMS = [
{ icon: Compass, label: "Entdecken" },
{ icon: Calendar, label: "Kalender" },
{ icon: MessageCircle, label: "Nachrichten" },
{ icon: Layers, label: "Ebenen" },
{ icon: User, label: "Profil" },
];
interface DockProps {
zoom?: number;
}
export default function Dock({ zoom = 1.45 }: DockProps) {
const [hover, setHover] = useState(-9);
return (
<div className="flex h-24 items-end gap-2 rounded-[22px] bg-white/70 dark:bg-black/70 p-3 text-[#1d1d1f] dark:text-[#f5f5f7] shadow-[0_1px_2px_rgba(0,0,0,0.03),0_8px_28px_rgba(0,0,0,0.05)] backdrop-blur-[20px]">
{ITEMS.map(({ icon: Icon, label }, i) => (
<motion.button
key={label}
type="button"
aria-label={label}
onHoverStart={() => setHover(i)}
onHoverEnd={() => setHover(-9)}
animate={{
scale: hover === i ? zoom : Math.abs(hover - i) === 1 ? 1.12 : 1,
y: hover === i ? -10 : 0,
}}
transition={spring}
className="grid h-11 w-11 place-items-center rounded-xl bg-white dark:bg-[#1c1c1e] shadow-[0_1px_2px_rgba(0,0,0,0.03),0_8px_28px_rgba(0,0,0,0.05)]"
>
<Icon className="h-5 w-5" />
</motion.button>
))}
</div>
);
}
Prompt für KI
Füg ihn in ChatGPT, Claude oder Cursor ein und der Baustein wird mit diesen Einstellungen an dein Projekt angepasst, auch ohne React.
Mehr aus Navigation
Wofür du ihn nutzen kannst
Wer einen Mac benutzt hat, kennt dieses Dock, und genau diese Vertrautheit ist der Reiz. Es funktioniert als verspielte Navigation für das Portfolio einer Designerin, die Schnelllinks einer persönlichen Website oder eine Werkzeugleiste in einer Web-App. Wer einen macOS-Dock-Effekt in React sucht, will meist genau das: Icons, die unter der Maus wachsen.
Halte die Vergrößerung moderat, etwa 1,4, sonst überlappen sich die Icons. Ergänz Tooltips oder Labels, wenn die Icons nicht selbsterklärend sind. Am Handy gibt es kein Hover, dort sollte jedes Icon als normaler Button funktionieren.