Magnetischer Button
Ein Button, der dem Cursor federnd hinterherläuft und zurückschnappt, sobald du dich entfernst.
Einstellungen
Code
import { motion, useMotionValue, useSpring } from "framer-motion";
interface MagneticButtonProps {
color?: string;
radius?: number;
text?: string;
intensity?: number;
}
export default function MagneticButton({
color = "#0071e3",
radius = 24,
text = "Zeig mit der Maus drauf",
intensity = 0.5,
}: MagneticButtonProps) {
const x = useMotionValue(0);
const y = useMotionValue(0);
const sx = useSpring(x, { stiffness: 200, damping: 15 });
const sy = useSpring(y, { stiffness: 200, damping: 15 });
return (
<motion.button
type="button"
style={{ x: sx, y: sy, backgroundColor: color, borderRadius: radius }}
className="px-6 py-3 text-sm font-semibold text-white shadow-lg"
onMouseMove={(e) => {
const r = e.currentTarget.getBoundingClientRect();
x.set((e.clientX - r.left - r.width / 2) * intensity);
y.set((e.clientY - r.top - r.height / 2) * intensity);
}}
onMouseLeave={() => {
x.set(0);
y.set(0);
}}
>
{text}
</motion.button>
);
}
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 Buttons
Wofür du ihn nutzen kannst
Setz ihn beim wichtigsten Klick ein: „Kostenlos testen“ auf der Landingpage eines SaaS, „Angebot anfragen“ bei einer Agentur oder der Download-Button einer App. Weil er dem Mauszeiger folgt, zieht er Blicke an, ohne zu blinken oder aufdringlich zu sein. Wer einen magnetischen Button mit Hover-Effekt in React sucht, ist hier richtig.
Bleib erst mal bei der voreingestellten Intensität und dreh sie nur bei großen, frei stehenden Buttons hoch. Neben einer Reihe Links wirkt er sonst unruhig. Auf Touchscreens gibt es kein Hover, am Handy verhält er sich also wie ein normaler Button.