Chạy dòng hoạt hình css

Hoạt ảnh CSS cho phép tạo hiệu ứng chuyển tiếp từ cấu hình kiểu CSS này sang cấu hình kiểu CSS khác. Hoạt ảnh bao gồm hai thành phần, một kiểu mô tả hoạt ảnh CSS và một tập hợp các khung hình chính cho biết trạng thái bắt đầu và kết thúc của kiểu hoạt ảnh, cũng như các điểm tham chiếu trung gian có thể có

Có ba lợi thế chính đối với hoạt ảnh CSS so với các kỹ thuật hoạt ảnh dựa trên tập lệnh truyền thống

  1. Chúng dễ sử dụng cho các hoạt ảnh đơn giản;
  2. Các hình ảnh động chạy tốt, ngay cả khi tải hệ thống vừa phải. Hoạt hình đơn giản thường có thể hoạt động kém trong JavaScript. Công cụ kết xuất có thể sử dụng bỏ qua khung hình và các kỹ thuật khác để giữ cho hiệu suất mượt mà nhất có thể
  3. Việc để trình duyệt kiểm soát chuỗi hoạt ảnh cho phép trình duyệt tối ưu hóa hiệu suất và hiệu quả, chẳng hạn như giảm tần suất cập nhật của hoạt ảnh chạy trong các tab hiện không hiển thị

Định cấu hình hoạt ảnh

Để tạo một chuỗi hoạt hình CSS, bạn tạo kiểu cho phần tử mà bạn muốn tạo hiệu ứng với thuộc tính

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
0 hoặc các thuộc tính phụ của nó. Điều này cho phép bạn định cấu hình thời gian, thời lượng và các chi tiết khác về cách trình tự hoạt hình sẽ tiến triển. Điều này không định cấu hình giao diện thực tế của hoạt ảnh, được thực hiện bằng cách sử dụng quy tắc
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
1 như được mô tả trong phần Xác định trình tự hoạt ảnh bằng cách sử dụng khung hình chính bên dưới

Các thuộc tính phụ của thuộc tính

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
0 là

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
3

Chỉ định độ trễ giữa tải phần tử và bắt đầu chuỗi hoạt ảnh và liệu hoạt ảnh sẽ bắt đầu ngay từ đầu hay giữa chừng hoạt ảnh

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
4

Chỉ định xem lần lặp đầu tiên của hoạt ảnh nên tiến hay lùi và liệu các lần lặp tiếp theo sẽ thay đổi hướng trên mỗi lần chạy qua trình tự hay đặt lại điểm bắt đầu và lặp lại

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
5

Chỉ định khoảng thời gian mà một hình ảnh động hoàn thành một chu kỳ

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
6

Chỉ định cách một hoạt ảnh áp dụng các kiểu cho mục tiêu của nó trước và sau khi nó chạy

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
7

Chỉ định số lần hoạt ảnh sẽ lặp lại

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
8

Chỉ định tên của quy tắc

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
1 mô tả các khung hình chính của hoạt ảnh

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
00

Chỉ định tạm dừng hoặc phát một chuỗi hoạt hình

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
01

Chỉ định cách hoạt ảnh chuyển tiếp qua các khung hình chính bằng cách thiết lập các đường cong gia tốc

Xác định trình tự hoạt ảnh bằng cách sử dụng khung hình chính

Sau khi bạn đã định cấu hình thời gian của hoạt ảnh, bạn cần xác định hình thức của hoạt ảnh. Điều này được thực hiện bằng cách thiết lập một hoặc nhiều khung hình chính bằng quy tắc

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
1. Mỗi khung hình chính mô tả cách phần tử hoạt ảnh sẽ hiển thị tại một thời điểm nhất định trong chuỗi hoạt ảnh

Vì thời gian của hoạt ảnh được xác định theo kiểu CSS định cấu hình hoạt ảnh, khung hình chính sử dụng

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
03 để biểu thị thời gian trong chuỗi hoạt ảnh mà chúng diễn ra. 0% biểu thị thời điểm đầu tiên của chuỗi hoạt ảnh, trong khi 100% biểu thị trạng thái cuối cùng của hoạt ảnh. Vì hai thời điểm này rất quan trọng nên chúng có bí danh đặc biệt.
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
04 và
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
05. Cả hai đều là tùy chọn. Nếu
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
04/
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
07 hoặc
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
05/
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
09 không được chỉ định, trình duyệt sẽ bắt đầu hoặc kết thúc hoạt ảnh bằng các giá trị được tính toán của tất cả các thuộc tính

Bạn có thể tùy chọn bao gồm các khung hình chính bổ sung mô tả các bước trung gian giữa phần đầu và phần cuối của hoạt ảnh

Sử dụng tốc ký hoạt hình

Tốc ký

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
0 rất hữu ích để tiết kiệm dung lượng. Ví dụ, một số quy tắc chúng tôi đã sử dụng thông qua bài viết này

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
1

có thể được thay thế bằng cách sử dụng tốc ký

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
0

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
3

Để tìm hiểu thêm về trình tự trong đó các giá trị thuộc tính hoạt hình khác nhau có thể được chỉ định bằng cách sử dụng tốc ký

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
0, hãy xem trang tham khảo
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
0

Đặt nhiều giá trị thuộc tính hoạt ảnh

Các thuộc tính longhand của hoạt ảnh CSS có thể chấp nhận nhiều giá trị, được phân tách bằng dấu phẩy. Tính năng này có thể được sử dụng khi bạn muốn áp dụng nhiều hoạt ảnh trong một quy tắc duy nhất và đặt các khoảng thời gian khác nhau, số lần lặp lại, v.v. , cho mỗi hoạt ảnh. Hãy xem xét một số ví dụ nhanh để giải thích các hoán vị khác nhau

Trong ví dụ đầu tiên này, có ba thời lượng và ba giá trị số lần lặp lại. Vì vậy, mỗi hoạt ảnh được gán một giá trị thời lượng và số lần lặp với cùng vị trí với tên hoạt ảnh. Hoạt ảnh

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
64 được chỉ định thời lượng là
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
65 và số lần lặp lại là
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
66 và hoạt hình
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
67 được chỉ định thời lượng là
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
68 và số lần lặp là
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
69

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;

Trong ví dụ thứ hai này, ba tên hoạt hình được đặt, nhưng chỉ có một thời lượng và số lần lặp lại. Trong trường hợp này, cả ba hoạt ảnh đều có cùng thời lượng và số lần lặp lại

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
0

Trong ví dụ thứ ba này, ba hoạt ảnh được chỉ định, nhưng chỉ có hai thời lượng và số lần lặp lại. Trong những trường hợp không có đủ giá trị trong danh sách để gán một giá trị riêng cho mỗi hoạt ảnh, việc gán giá trị sẽ chuyển từ mục đầu tiên sang mục cuối cùng trong danh sách khả dụng rồi quay trở lại mục đầu tiên. Vì vậy,

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
64 có thời lượng là
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
65 và
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
62 có thời lượng là
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
63, đây là giá trị cuối cùng trong danh sách giá trị thời lượng. Việc gán giá trị thời lượng hiện đặt lại về giá trị đầu tiên; . Các giá trị số lần lặp lại (và bất kỳ giá trị thuộc tính nào khác mà bạn chỉ định) sẽ được chỉ định theo cùng một cách

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
6

Nếu sự không khớp về số lượng hoạt ảnh và giá trị thuộc tính hoạt ảnh bị đảo ngược, giả sử có năm giá trị

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
5 cho ba giá trị
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
8, thì các giá trị thuộc tính hoạt ảnh bổ sung hoặc không được sử dụng, trong trường hợp này là hai giá trị
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
5, không áp dụng cho bất kỳ hoạt ảnh nào

ví dụ

Ghi chú. Một số trình duyệt cũ hơn (trước năm 2017) có thể cần tiền tố;

Làm cho văn bản trượt trên cửa sổ trình duyệt

Ví dụ đơn giản này tạo kiểu cho phần tử

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
50 để văn bản trượt vào từ cạnh phải của cửa sổ trình duyệt

Lưu ý rằng các hoạt ảnh như thế này có thể khiến trang trở nên rộng hơn cửa sổ trình duyệt. Để tránh sự cố này, hãy đặt phần tử được tạo hoạt ảnh trong một vùng chứa và đặt

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
51
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
52 trên vùng chứa

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
6

Trong ví dụ này, kiểu cho phần tử

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
50 chỉ định rằng hoạt ảnh sẽ mất 3 giây để thực thi từ đầu đến cuối, sử dụng thuộc tính
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
5 và tên của quy tắc tại
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
1 xác định khung hình chính cho chuỗi hoạt ảnh được đặt tên là "slidein

Nếu chúng tôi muốn bất kỳ kiểu dáng tùy chỉnh nào trên phần tử

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
50 xuất hiện trong các trình duyệt không hỗ trợ hoạt ảnh CSS, thì chúng tôi cũng sẽ đưa nó vào đây;

Các khung hình chính được xác định bằng quy tắc theo quy tắc

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
1. Trong trường hợp này, chúng tôi chỉ có hai khung hình chính. Lần đầu tiên xảy ra ở mức 0% (sử dụng bí danh
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
04). Ở đây, chúng tôi định cấu hình lề trái của phần tử ở mức 100% (nghĩa là ở cạnh ngoài cùng bên phải của phần tử chứa) và chiều rộng của phần tử là 300% (hoặc ba lần chiều rộng của phần tử chứa . Điều này làm cho khung hình đầu tiên của hoạt ảnh có tiêu đề được kéo ra khỏi cạnh phải của cửa sổ trình duyệt

Khung hình chính thứ hai (và cuối cùng) xảy ra ở mức 100% (sử dụng bí danh

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
05). Lề trái được đặt thành 0% và chiều rộng của phần tử được đặt thành 100%. Điều này làm cho tiêu đề kết thúc hoạt ảnh của nó đối với cạnh trái của khu vực nội dung

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
5

Ghi chú. Tải lại trang để xem hình ảnh động

Thêm một khung hình chính khác

Hãy thêm một khung hình chính khác vào hoạt ảnh của ví dụ trước. Giả sử chúng ta muốn kích thước phông chữ của tiêu đề tăng lên khi nó di chuyển từ phải sang trái trong một thời gian, sau đó giảm trở lại kích thước ban đầu. Điều đó đơn giản như việc thêm khung hình chính này

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
7

Mã đầy đủ bây giờ trông như thế này

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
8

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
5

Điều này cho trình duyệt biết rằng 75% trong suốt chuỗi hoạt ảnh, tiêu đề phải có lề trái là 25% và chiều rộng phải là 150%

Ghi chú. Tải lại trang để xem hình ảnh động

Lặp lại hoạt hình

Để làm cho hoạt ảnh tự lặp lại, hãy sử dụng thuộc tính

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
7 để cho biết số lần lặp lại hoạt ảnh. Trong trường hợp này, hãy sử dụng
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
71 để hoạt ảnh lặp lại vô thời hạn

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
30

Thêm nó vào mã hiện có

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
31

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
5

Làm cho hoạt hình di chuyển qua lại

Điều đó làm cho nó lặp lại, nhưng thật kỳ lạ khi nó quay lại từ đầu mỗi khi nó bắt đầu hoạt hình. Điều chúng tôi thực sự muốn là nó di chuyển qua lại trên màn hình. Điều đó dễ dàng thực hiện bằng cách đặt

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
4 thành
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
73

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
1

Và phần còn lại của mã

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
31

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
5

Sử dụng các sự kiện hoạt ảnh

Bạn có thể có thêm quyền kiểm soát hoạt ảnh — cũng như thông tin hữu ích về chúng — bằng cách sử dụng các sự kiện hoạt ảnh. Những sự kiện này, được đại diện bởi đối tượng

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
74, có thể được sử dụng để phát hiện thời điểm hoạt ảnh bắt đầu, kết thúc và bắt đầu một lần lặp lại mới. Mỗi sự kiện bao gồm thời gian xảy ra cũng như tên của hoạt ảnh đã kích hoạt sự kiện

Chúng tôi sẽ sửa đổi ví dụ văn bản trượt để xuất một số thông tin về từng sự kiện hoạt hình khi nó xảy ra, vì vậy chúng tôi có thể xem cách chúng hoạt động

Thêm CSS

Chúng tôi bắt đầu với việc tạo CSS cho hình ảnh động. Hoạt ảnh này sẽ kéo dài trong 3 giây, được gọi là "trượt", lặp lại 3 lần và thay đổi hướng mỗi lần. Trong

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
1, chiều rộng và lề trái được thao tác để làm cho phần tử trượt trên màn hình

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
36

Thêm trình xử lý sự kiện hoạt hình

Chúng tôi sẽ sử dụng mã JavaScript để lắng nghe cả ba sự kiện hoạt hình có thể xảy ra. Mã này định cấu hình trình xử lý sự kiện của chúng tôi;

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
37

Đây là mã khá chuẩn; . Công việc cuối cùng mà mã này thực hiện là đặt

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
77 trên thành phần mà chúng ta sẽ tạo hiệu ứng động thành "slidein";

Tại sao? . Vì vậy, chúng tôi sẽ tự bắt đầu hoạt ảnh bằng cách đặt lớp của phần tử thành kiểu sẽ hoạt ảnh sau khi thực tế

Nhận các sự kiện

Các sự kiện được gửi đến hàm

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
79, được hiển thị bên dưới

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
38

Mã này cũng vậy, rất đơn giản. Nó xem xét

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
80 để xác định loại sự kiện hoạt hình nào đã xảy ra, sau đó thêm một ghi chú thích hợp vào
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
81 (danh sách không có thứ tự) mà chúng tôi đang sử dụng để ghi lại những sự kiện này

Đầu ra, khi tất cả được nói và làm xong, trông giống như thế này

  • Đã bắt đầu. thời gian trôi qua là 0
  • Vòng lặp mới bắt đầu tại thời điểm 3. 01200008392334
  • Vòng lặp mới bắt đầu lúc 6. 00600004196167
  • Đã kết thúc. thời gian trôi qua là 9. 234000205993652

Lưu ý rằng thời gian rất gần, nhưng không chính xác, thời gian dự kiến ​​do thời gian được thiết lập khi hoạt ảnh được định cấu hình. Cũng lưu ý rằng sau lần lặp cuối cùng của hoạt ảnh, sự kiện

animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
82 không được gửi;

Để cho đầy đủ, đây là HTML hiển thị nội dung trang, bao gồm danh sách mà tập lệnh chèn thông tin về các sự kiện đã nhận vào đó