glückliche Reisende
Hochzählende Zahl
Eine Zahl, die von null bis zu deinem Wert hochzählt, sobald sie ins Bild scrollt.
Einstellungen
Code
import { useEffect, useRef, useState } from "react";
import { useInView } from "framer-motion";
interface InViewCounterProps {
end?: number;
/** Milisegundos que tarda en llegar a la cifra final. */
duration?: number;
label?: string;
}
export default function InViewCounter({
end = 2400,
duration = 1200,
label = "glückliche Reisende",
}: InViewCounterProps) {
const ref = useRef<HTMLDivElement>(null);
// useInView mira el viewport y respeta el recorte de los contenedores con scroll: funciona en ambos casos.
const seen = useInView(ref, { once: false });
const [n, setN] = useState(0);
useEffect(() => {
if (!seen) {
setN(0);
return;
}
const start = performance.now();
let raf = 0;
const run = (t: number) => {
const p = Math.min(1, (t - start) / duration);
setN(Math.round(end * p));
if (p < 1) raf = requestAnimationFrame(run);
};
raf = requestAnimationFrame(run);
return () => cancelAnimationFrame(raf);
}, [seen, duration, end]);
return (
<div ref={ref} className="text-center text-[#1d1d1f] dark:text-[#f5f5f7]">
<strong className="text-5xl font-semibold tabular-nums">{n.toLocaleString("es-ES")}</strong>
<p className="text-sm text-[#86868b]">{label}</p>
</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 Text & Scroll
Wofür du ihn nutzen kannst
Zahlen, die hochzählen, werden gelesen, stehende werden überflogen. Nutz den Zähler für den Vertrauensbereich einer Landingpage: „2.400 glückliche Reisende“, abgeschlossene Projekte eines Studios, ausgegebene Mahlzeiten einer Hilfsorganisation oder Downloads einer App. Dieser animierte Zahlenzähler in React startet, wenn der Block sichtbar wird, nicht beim Laden.
Nimm nur Zahlen, die du belegen kannst, denn die Animation lenkt noch mehr Blicke darauf. Halte die Dauer bei etwa einer Sekunde, sonst scrollen Leute vorbei, bevor sie fertig ist. Er zählt jedes Mal neu, wenn er wieder auftaucht.