عدد متحرک (AnimatedNumber)
عددی که تا مقدارش میشمارد، برای یک عدد سرتیتر تازهرسیده؛ KPI داخل کارت با MetricCard یا StatDisplay
معرفی
کامپوننت AnimatedNumber یک عدد را با انیمیشن شمارش افزایشی (count-up) نمایش میدهد. مناسب برای نمایش KPIها، آمار داشبورد، و هر جایی که تغییر عدد باید بصری برجسته شود.
بدون وابستگی به Framer Motion — از requestAnimationFrame خالص استفاده میکند.
چه زمانی استفاده کنیم:
- برای اعداد KPI در داشبورد که تغییرات آنها باید بصری برجسته شود
- در MetricCard و StatDisplay برای جلب توجه به مقادیر مهم
- هنگام بارگذاری اولیه صفحه برای ایجاد حس تعامل
چه زمانی استفاده نکنیم:
- وقتی کاربر نیاز به خواندن دقیق عدد دارد — انیمیشن خوانایی را کاهش میدهد
- برای اعداد داخل جدول — حرکت عدد در جدول دیده شدنش را سخت میکند
زمین بازی
با تغییر تنظیمات زیر، پیشنمایش زنده را مشاهده کنید.
زمین بازی
0
تنظیمات
داده
محتوا
کد این نمونه بهصورت خودکار قابل تولید نیست — برای کد آمادهی copy/paste به بخش «استفاده» در بالای صفحه مراجعه کنید.
استفاده
0
دنبالکننده
0.00
نرخ تعامل٪
0
پست تحلیلشده
import { AnimatedNumber } from '@partodata/ui'<AnimatedNumber value={1234} />مثالها
با فرمت سفارشی
<AnimatedNumber value={98.5} decimals={1} formatFn={(v) => `${v.toFixed(1)}%`} />با تابع formatLargeNumber از DS
import { AnimatedNumber, formatLargeNumber } from '@partodata/ui'
;<AnimatedNumber value={1500000} formatFn={(v) => formatLargeNumber(Math.round(v), 'fa')} />در MetricCard
<MetricCard>
<MetricCardHeader>
<MetricCardLabel>مجموع بازدید</MetricCardLabel>
</MetricCardHeader>
<MetricCardContent>
<MetricCardValue>
<AnimatedNumber value={45230} className="text-stat" />
</MetricCardValue>
</MetricCardContent>
</MetricCard>مدت انیمیشن سفارشی
<AnimatedNumber value={100} duration={1000} />Props
راهنمای استفاده
بکنید
- از
formatFnباformatLargeNumberبرای فرمتدهی فارسی استفاده کنید -durationرا برای اعداد بزرگتر بیشتر کنید تا انیمیشن طبیعیتر به نظر برسد - ازanimateOnChange={false}استفاده کنید اگر فقط انیمیشن اولیه میخواهید
نکنید
- از AnimatedNumber در جدول استفاده نکنید — حرکت اعداد خوانایی را کاهش میدهد -
durationرا خیلی طولانی نکنید (بیش از 2 ثانیه) — کاربر صبر نمیکند - تعداد زیادی AnimatedNumber همزمان در صفحه قرار ندهید — عملکرد کاهش مییابد
دسترسیپذیری
- انیمیشن در صورت فعال بودن
prefers-reduced-motion: reduceغیرفعال میشود - کلاس
tabular-numsرا میگذارد، ولی روی این ادعا حساب نکنید: فونت یکان بخ ویژگیtnumندارد (فهرست featureهایشaalt, fina, init, locl, medi, pnum, rlig, salt, ss01…است) و عرض ارقام فارسیاش از 260 تا 700 یونیت در em نوسان دارد. پس عدد در حال شمارش عرضش عوض میشود؛ اگر پرش چیدمان مهم است، ظرف را باmin-w-*یاw-*تثبیت کنید.
کامپوننتهای مرتبط
- StatDisplay — اگر نیاز به نمایش عدد با label و واحد دارید، از StatDisplay استفاده کنید
- MetricCard — اگر نیاز به کارت متریک کامل با sparkline دارید، AnimatedNumber را داخل MetricCardValue استفاده کنید