Trình tạo animation CSS
Viết @keyframes từ đầu rất nhàm chán: bạn chọn phần trăm, đoán thuộc tính, tải lại, xem, rồi chỉnh sửa. Trình tạo này cung cấp sáu animation có sẵn (mờ dần, trượt lên, nảy, xoay, nhịp đập và lắc) và cho phép bạn đặt tên animation, thời lượng, easing, số lần lặp và hướng. Kết quả phát lại theo thời gian thực; khi ưng ý, bạn có thể sao chép khối @keyframes đã tạo và thuộc tính rút gọn animation.
Cách tạo animation CSS
-
1
Chọn một preset
Chọn một trong sáu animation có sẵn: mờ dần, trượt lên, nảy, xoay, nhịp đập hoặc lắc.
-
2
Đặt tên cho animation
Đặt cho keyframes một định danh CSS hợp lệ, ví dụ `cardIn` hoặc `fadeIn`. Tên này cũng được dùng trong thuộc tính rút gọn `animation`.
-
3
Đặt thời lượng và số lần lặp
Thời lượng tính bằng giây, easing (ease, ease-in, ease-out, ease-in-out, linear hoặc spring), số lần lặp (1, 2, 3 hoặc infinite) và hướng (normal, reverse, alternate hoặc alternate-reverse).
-
4
Sao chép mã CSS
Quy tắc `@keyframes` đã tạo và dạng rút gọn `animation:` sẵn sàng để dán vào bảng định kiểu của bạn.
Giải phẫu animation
@keyframes slide-in {
0% { transform: translateX(-100%); opacity: 0; }
60% { transform: translateX(10%); opacity: 1; }
100% { transform: translateX(0); opacity: 1; }
}
.card {
animation: slide-in 400ms cubic-bezier(0.22, 1, 0.36, 1) both;
}
Tám thuộc tính trong dạng rút gọn: animation-name duration timing-function delay iteration-count direction fill-mode play-state.
Lựa chọn easing
Trình tạo cung cấp sáu hàm easing:
| Easing | cubic-bezier() | Cảm giác |
|---|---|---|
| linear | không có | Tốc độ không đổi |
| ease-in | 0.42, 0, 1, 1 |
Bắt đầu chậm, kết thúc nhanh |
| ease-out | 0, 0, 0.58, 1 |
Bắt đầu nhanh, kết thúc chậm |
| ease-in-out | 0.42, 0, 0.58, 1 |
Chậm-nhanh-chậm |
| ease (mặc định) | 0.25, 0.1, 0.25, 1 |
Mặc định nhẹ nhàng |
| spring | 0.68, -0.55, 0.27, 1.55 |
Vượt qua đích rồi ổn định |
Làm animation với đúng thuộc tính
Trình duyệt có thể làm animation với bất kỳ thuộc tính nào, nhưng chỉ một vài thuộc tính chạy mượt trên GPU mà không kích hoạt layout hoặc vẽ lại:
Rẻ (chỉ composite): transform, opacity, filter.
Đắt (layout/vẽ): width, height, top, left, margin, padding, background-color.
Animation sáu mươi khung hình mỗi giây trên width và top có thể chạy trên phần tử nhỏ, nhưng sẽ giật trên điện thoại nếu bạn làm nhiều phần tử cùng lúc. Với chuyển động phức tạp, luôn ưu tiên transform: translate(...) thay cho top / left, và transform: scale(...) thay cho việc làm animation chiều rộng/chiều cao.
will-change: dùng tiết kiệm
Báo cho trình duyệt cấp trước một lớp composite có thể giúp chuyển động mượt hơn:
.card { will-change: transform; }
Nhưng nó tốn bộ nhớ. Hãy áp dụng ngay trước khi animation kích hoạt và gỡ bỏ khi xong. Đặt will-change: transform vĩnh viễn trên nhiều phần tử có thể gây hại nhiều hơn lợi.
Giảm chuyển động
Một số người dùng nhạy cảm với chuyển động và cài đặt tùy chọn hệ điều hành:
@media (prefers-reduced-motion: reduce) {
.card {
animation: none;
}
}
Hãy tôn trọng thiết lập này. Cung cấp sự thay đổi trạng thái tức thì hoặc hiệu ứng mờ dần rất nhẹ để thay thế.
Câu hỏi thường gặp
CSS dành cho chuyển động đơn giản, khai báo rõ ràng, dùng một lần. Web Animations API (element.animate()) dành cho điều khiển thời lượng bằng JavaScript, keyframes động, tạm dừng và kiểm soát phát lại. Cả hai đều chạy trên compositor; không bên nào nhanh hơn về bản chất.
Gần như luôn vì bạn đang làm animation với thuộc tính kích hoạt layout (width, top, margin) thay vì transform. Chuyển sang translate() và scale(), tình trạng giật thường biến mất.
Có. animation: a 1s, b 1s 1s, c 1s 2s; chạy ba animation tuần tự nhờ độ trễ so le. Trình tạo này xuất ra một animation đơn lẻ, vì vậy bạn tự thêm các mục bổ sung vào dạng rút gọn. Với những chuỗi chuyển động phức tạp hơn, hãy dùng Web Animations API hoặc thư viện như GSAP.
Nó khiến phần tử nhận trạng thái from trước khi animation bắt đầu (trong thời gian trễ) và giữ trạng thái to sau khi animation kết thúc. Không có both, phần tử trở về kiểu trước animation khi nó hoàn tất. Trình tạo giữ dạng rút gọn tối giản, vì vậy hãy tự thêm fill mode nếu cần.
Công cụ liên quan
Bảng tham chiếu ASCII
Bảng ASCII đầy đủ từ 0 đến 127 với giá trị thập phân, thập lục phân, bát phân, nhị phân và ký hiệu tham chiếu ký tự số HTML, gồm NUL, LF và DEL.
Tham chiếu ký tự HTML
Danh sách có thể tìm kiếm các thực thể HTML, mã tên và mã số tương ứng của chúng, cùng chức năng sao chép chỉ với một cú nhấp cho các ký tự đặc biệt và biểu tượng.
Bộ chuyển đổi Base64 sang Hex
Chuyển chuỗi Base64 chuẩn thành các byte nền tảng được viết dưới dạng hexadecimal liên tục in hoa. Giải mã nghiêm ngặt, lý tưởng cho token, khóa và chữ ký JWT.
Trình tạo bảng màu ngẫu nhiên
Tạo bảng màu ngẫu nhiên từ 2 đến 15 mẫu màu, chọn phong cách rực rỡ, pastel, dịu hoặc tối, rồi sao chép mã HEX hoặc biến CSS.
Trình xem hex của tệp nhị phân
Chọn một tệp và kiểm tra phần dữ liệu giới hạn từ bất kỳ offset byte hợp lệ nào dưới dạng hex dump cục bộ với cột offset, hex và ASCII.
Bộ chọn màu HEX
Chọn hoặc nhập màu HEX để xem RGB, HSL, CMYK ước tính, độ chói tương đối và tương phản với trắng và đen.