MotionNumber · MotionText
Con số có các chữ số cuộn như bánh xe, kể cả chữ số xuất hiện hay biến mất.
WebReact NativeSố và văn bản
Thử ngay
Đang chuẩn bị ví dụ…
Cách dùng ngắn nhất
<MotionNumber value={count} />
<MotionNumber value={total} mode="roll" intl locale="en-US"
format={{ style: 'currency', currency: 'USD' }} />
<MotionText>{status}</MotionText>Những gì nó xử lý giúp bạn
- Nhớ sang hàng:
999 → 1,000cuộn mọi chữ số thay đổi theo cùng một hướng, như đồng hồ công-tơ-mét. - Chữ số xuất hiện hay biến mất sẽ cuộn vào hoặc ra khỏi cột của chính nó thay vì bật ra đột ngột.
- Dấu phân cách, dấu và ký hiệu tiền tệ hiện ra rồi mờ đi cùng chữ số mà chúng thuộc về.
- Các chữ số còn lại trượt sang vị trí mới trong lúc cuộn, nên con số không bao giờ bị tách rời.
- Giá trị mới giữa chừng tiếp tục đúng từ những gì đang trên màn hình.
- Định dạng không bao giờ bắt buộc
Intl: truyền văn bản hoặc hàmformat, hoặc chủ động bật bằngintl.
Dùng cho
- Tổng giỏ hàng thay đổi khi thêm sản phẩm.
- Bộ đếm hoặc điểm số trực tiếp.
- Chỉ số bảng điều khiển làm mới sau vài giây.
Props
MotionNumber
| Prop | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
value | number | bigint | string | —bắt buộc | Con số, hoặc văn bản số đã được bên gọi định dạng. |
mode | 'replace' | 'roll' | 'replace' | replace dịch mỗi chữ số thay đổi một bước; roll đi qua các chữ số ở giữa. |
direction | 'auto' | 'digit' | 'up' | 'down' | 'auto' | auto theo sự thay đổi độ lớn để phần nhớ cuộn một hướng; digit so sánh từng chữ số riêng. |
stagger | number | 45 | Mili giây giữa các chữ số thay đổi, từ hàng đơn vị ra ngoài. Toàn bộ gợn sóng có giới hạn. |
format | (value) => string | Intl.NumberFormatOptions | Hàm trả về văn bản để hiển thị, hoặc tùy chọn Intl.NumberFormat (với intl). | |
intl | boolean | false | Dùng Intl.NumberFormat có sẵn. Mặc định tắt để không runtime nào bắt buộc có Intl. |
locale | string | string[] | Locale cho intl. | |
prefix | string | Văn bản trước con số. | |
suffix | string | Văn bản sau con số. | |
transition | Transition | spring | Đường cong timing { duration, easing } hoặc lò xo { tempo: 'spring', spring }. Lò xo giữ đà khi bị ngắt. |
onMotionComplete | (value) => void | Chạy với giá trị khi các chữ số đã dừng. |
MotionText
| Prop | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
children | ReactNode | Văn bản để hiển thị. | |
as | element | 'span' | Phần tử được render. |
transition | Transition | spring | Đường cong timing { duration, easing } hoặc lò xo { tempo: 'spring', spring }. Lò xo giữ đà khi bị ngắt. |
onMotionComplete | (text) => void | Chạy khi chuyển động dừng hẳn. |
Các props khác được chuyển tới phần tử được render, nên className, style và trình xử lý sự kiện hoạt động như bình thường.
Web và React Native
Trên web, mỗi chữ số là một chồng glyph nhỏ do Web Animations API phát, và văn bản vẫn chọn được. MotionText tạo hoạt ảnh cho mọi văn bản: văn bản số cuộn theo từng chữ số, văn bản khác thì hoán đổi.
Trên React Native, con số vẫn là Text thật cho bố cục, việc chọn và trợ năng, kể cả xuống dòng và numberOfLines; các glyph chuyển động bằng native driver.
Được dùng trong các ví dụ này
- Tóm tắt thanh toánSố lượng, tổng từng dòng và tổng tiền cuộn khi giỏ hàng thay đổi; thông báo mã giảm giá đi vào và rời đi; thanh toán đòi hỏi nhấn giữ có chủ đích.
MotionListMotionNumberMotionPresenceMotionHold - Hộp thưTab lọc có số đếm trực tiếp, hàng vuốt đi được và danh sách tự khép khoảng trống.
MotionHighlightMotionListMotionSwipeMotionNumber