React + MotionButtons

Magnetischer Button

Ein Button, der dem Cursor federnd hinterherläuft und zurückschnappt, sobald du dich entfernst.

Einstellungen

24px
0.5

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.