Các thuộc tính CSS liên quan đến hoạt hình
Bài viết này giải thích các thuộc tính CSS liên quan đến hoạt hình.
Bạn có thể tìm hiểu về cách sử dụng và cú pháp của các thuộc tính @keyframes, animation và transition.
YouTube Video
HTML để Xem trước
css-animation.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>CSS Properties Example</title>
7 <link rel="stylesheet" href="css-base.css">
8 <link rel="stylesheet" href="css-animation.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>CSS Properties For Animation</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header>
19 <h2>Animation Related Properties</h2>
20 </header>
21 <article>
22 <h3>@keyframes</h3>
23 <section>
24 <h4>Animation Examples</h4>
25 <header><h4>animation: slide 3s ease infinite</h4></header>
26 <section class="sample-view">
27 <div class="box-animation-slide">Slide Box</div>
28 </section>
29 <header><h4>animation: color-change 3s ease infinite</h4></header>
30 <section class="sample-view">
31 <div class="box-animation-color-change">Color Change Box</div>
32 </section>
33 <header><h4>animation: fade 3s ease infinite</h4></header>
34 <section class="sample-view">
35 <div class="box-animation-fade">Fade Box</div>
36 </section>
37 </section>
38 </article>
39 <article>
40 <h3>animation</h3>
41 <section>
42 <h4>Animation Examples</h4>
43 <header><h4>animation: slide 3s ease-in-out infinite</h4></header>
44 <section class="sample-view">
45 <div class="box-animation-ease-in-out">Slide Box</div>
46 </section>
47 <header><h4>animation: color-change 3s ease-in-out 1s 3 alternate</h4></header>
48 <section class="sample-view">
49 <div class="box-animation-alternate">Color Change Box</div>
50 </section>
51 </section>
52 </article>
53 <article>
54 <h3>transition</h3>
55 <section>
56 <h4>Transition Examples</h4>
57 <header><h4>transition: background-color 2s ease</h4></header>
58 <section class="sample-view">
59 <div class="transition-box">Hover me!</div>
60 </section>
61 <header><h4>transition: background-color 5s ease, width 0.5s ease-in</h4></header>
62 <section class="sample-view">
63 <div class="transition-2-properties">Hover me!</div>
64 </section>
65 </section>
66 </article>
67 </main>
68</body>
69</html>Hoạt hình và Chuyển tiếp
Quy tắc @keyframes
1/* Animation definition */
2@keyframes slide {
3 0% {
4 transform: translateX(0);
5 }
6 50% {
7 transform: translateX(200px);
8 }
9 100% {
10 transform: translateX(0);
11 }
12}
13
14/* Apply the animation */
15.box-animation-slide {
16 width: 100px;
17 height: 100px;
18 background-color: skyblue;
19 animation: slide 3s ease infinite;
20}@keyframes được sử dụng trong hoạt hình CSS để xác định các thay đổi về kiểu dáng trong quá trình hoạt hình. Trong @keyframes, các thay đổi về kiểu dáng từ đầu đến cuối hoạt hình được xác định bằng phần trăm thời gian hoặc từ khóa (from và to).
- Đây là một ví dụ về một hoạt hình trong đó một phần tử trượt từ trái sang phải và quay trở lại vị trí ban đầu.
- Trong ví dụ này,
slideđược viết sau@keyframes, định nghĩa một hoạt hình có tên làslide. 0%là sự bắt đầu của hoạt hình, vớitranslateX(0)định vị phần tử tại vị trí ban đầu của nó.50%là vị trí giữa trong hoạt hình, nơi phần tử di chuyển 200px sang phải bằng cách sử dụngtranslateX(200px).100%là sự kết thúc của hoạt hình, với phần tử quay trở lại vị trí ban đầu của nó.- Trong lớp
box-animation-slide, thuộc tínhanimationđược sử dụng để áp dụng hoạt hìnhslidecách nhau 3 giây.
1@keyframes color-change {
2 0% {
3 background-color: red;
4 }
5 25% {
6 background-color: blue;
7 }
8 50% {
9 background-color: green;
10 }
11 75% {
12 background-color: yellow;
13 }
14 100% {
15 background-color: red;
16 }
17}
18
19.box-animation-color-change {
20 width: 100px;
21 height: 100px;
22 background-color: skyblue;
23 animation: color-change 3s ease infinite;
24}- Bạn có thể kiểm soát chi tiết các kiểu dáng trong quá trình hoạt hình. Bằng cách chỉ định phần trăm, bạn có thể áp dụng các kiểu dáng khác nhau tại các thời điểm tùy ý.
- Trong ví dụ này, màu sắc thay đổi dần từ đỏ sang xanh dương, sang xanh lá, sang vàng và trở lại đỏ.
1@keyframes fade {
2 from {
3 opacity: 0;
4 }
5 to {
6 opacity: 1;
7 }
8}
9
10.box-animation-fade {
11 width: 100px;
12 height: 100px;
13 background-color: blue;
14 animation: fade 3s ease infinite;
15}- Trong ví dụ này,
fromtương đương với0%vàtotương đương với100%. Điều này cho phép bạn định nghĩa các hoạt hình đơn giản.
Cú pháp Cơ bản
1@keyframes animation-name {
2 0% {
3 /* Style at the start */
4 }
5 50% {
6 /* Style at the midpoint */
7 }
8 100% {
9 /* Style at the end */
10 }
11}animation-name: Tên của hoạt hình. Điều này được chỉ định bằng thuộc tínhanimationhoặc thuộc tínhanimation-name.- Phần trăm hoặc Từ khóa: Sử dụng phần trăm từ
0%đến100%, hoặc các từ khóafrom(tương đương với0%) vàto(tương đương với100%).
Thuộc tính animation
1.box-animation-ease-in-out {
2 width: 100px;
3 height: 100px;
4 background-color: skyblue;
5 animation: slide 3s ease-in-out infinite;
6}Thuộc tính animation được sử dụng để áp dụng các hiệu ứng hoạt hình cho một phần tử. Các hiệu ứng hoạt hình xác định cách mà một tập hợp các kiểu CSS thay đổi theo thời gian. Với thuộc tính animation, bạn có thể kiểm soát thời gian, hành vi, độ trễ, số lần lặp lại và nhiều yếu tố khác của một hiệu ứng hoạt hình.
- Lớp
box-animation-ease-in-outchỉ địnhslidelàanimation-name, và sử dụng hiệu ứng hoạt hìnhslideđược định nghĩa trong@keyframes.3slàanimation-duration, có nghĩa là mỗi chu kỳ của hiệu ứng hoạt hình hoàn thành trong 3 giây.ease-in-outlàanimation-timing-function, làm cho hiệu ứng khởi động chậm, sau đó tăng tốc, và cuối cùng chậm lại khi kết thúc.infinitelàanimation-iteration-count, nghĩa là hiệu ứng hoạt hình sẽ lặp lại vô tận.
1.box-animation-alternate {
2 width: 100px;
3 height: 100px;
4 background-color: skyblue;
5 animation: color-change 3s ease-in-out 1s 3 alternate;
6}- Lớp
box-animation-alternatechỉ địnhcolor-changelàanimation-name, và sử dụng hiệu ứng hoạt hìnhcolor-changeđược định nghĩa trong@keyframes.1ssauease-in-outlàanimation-delay, chỉ định độ trễ trước khi hiệu ứng hoạt hình bắt đầu. Hiệu ứng hoạt hình sẽ bắt đầu sau 1 giây.3sau1slàanimation-iteration-count, nghĩa là hiệu ứng hoạt hình sẽ lặp lại 3 lần.alternatelàanimation-direction, chỉ định hướng phát lại của hiệu ứng hoạt hình.alternatechỉ định rằng hiệu ứng hoạt hình sẽ phát xen kẽ.
Cấu trúc của thuộc tính animation
Thuộc tính animation là một thuộc tính viết tắt kết hợp nhiều thuộc tính con khác nhau thành một. Dưới đây là các thuộc tính con chính:.
animation-name: Chỉ định tên của hiệu ứng hoạt hình sẽ được áp dụng. Nó phải khớp với tên của hiệu ứng hoạt hình được định nghĩa trong@keyframes.animation-duration: Chỉ định thời gian cần thiết để hoàn thành một chu kỳ hiệu ứng hoạt hình. Đơn vị thời gian là giây (s) hoặc mili giây (ms).animation-timing-function: Chỉ định đường cong tốc độ của hiệu ứng hoạt hình. Những giá trị nhưease,linear,ease-in,ease-out,ease-in-out, v.v. được sử dụng.- Chỉ định
easesẽ làm cho hiệu ứng hoạt hình bắt đầu chậm, sau đó tăng tốc, và cuối cùng lại chậm lại khi kết thúc. - Chỉ định
linearsẽ làm cho hiệu ứng hoạt hình diễn ra với tốc độ không đổi từ đầu đến cuối. - Chỉ định
ease-insẽ bắt đầu hoạt hình một cách chậm rãi và kết thúc nhanh chóng. - Chỉ định
ease-outsẽ bắt đầu hoạt hình nhanh và kết thúc chậm rãi. - Chỉ định
ease-in-outsẽ bắt đầu chậm, diễn tiến nhanh và kết thúc chậm rãi.
- Chỉ định
- Thuộc tính
animation-delayxác định độ trễ trước khi hoạt hình bắt đầu. Đơn vị thời gian là giây hoặc mili giây. - Thuộc tính
animation-iteration-countxác định số lần hoạt hình sẽ lặp lại. Chỉ địnhinfinitesẽ lặp đi lặp lại hoạt hình mãi mãi. - Thuộc tính
animation-directionxác định hướng phát lại của hoạt hình. Các tùy chọn bao gồmnormal(hướng tiến),reverse(hướng ngược),alternate(chạy xen kẽ), vàalternate-reverse(chạy xen kẽ bắt đầu từ ngược). - Thuộc tính
animation-fill-modexác định trạng thái của hoạt hình trước khi nó bắt đầu và sau khi nó kết thúc. Bạn có thể chỉ định bất kỳ giá trị nào trong sốnone,forwards,backwards, hoặcboth. - Thuộc tính
animation-play-statexác định hoạt hình đang chạy hay đã tạm dừng. Bạn có thể chỉ địnhrunninghoặcpaused.
Tóm tắt
Thuộc tính animation là một công cụ mạnh mẽ để thay đổi phong cách của các phần tử một cách động. Bằng cách sử dụng @keyframes, bạn có thể định nghĩa cách các phong cách thay đổi theo thời gian và điều khiển hành vi chi tiết của hoạt hình với từng thuộc tính con của animation.
Thuộc tính transition
1.transition-box {
2 background-color: lightgray;
3 transition: background-color 2s ease;
4}
5
6.transition-box:hover {
7 background-color: steelblue;
8}
9
10.transition-2-properties {
11 background-color: lightgray;
12 width: 150px;
13 height: 50px;
14 transition: background-color 5s ease, width 0.5s ease-in;
15}
16
17.transition-2-properties:hover {
18 background-color: blue;
19 width: 250px;
20}Thuộc tính transition được sử dụng để áp dụng hiệu ứng hoạt hình cho các thay đổi phong cách CSS. Nó cho phép các thay đổi diễn ra mượt mà trong suốt các thay đổi trạng thái như hover, focus, active, hoặc khi các phong cách được thay đổi động bởi JavaScript.
Hãy xem một ví dụ về lớp transition-box nơi màu nền thay đổi một cách mượt mà khi di chuột qua nút.
- Trong lớp transition-box, thuộc tính transition áp dụng một hiệu ứng chuyển đổi trong 2 giây cho sự thay đổi màu nền. Sự thay đổi được chỉ định là ease, làm cho nó trở nên mượt mà.
- Lớp giả hover thay đổi màu nền từ lightgray thành steelblue khi chuột di qua nút. Sự thay đổi này xảy ra một cách mượt mà trong 2 giây được chỉ định trong lớp transition-box.
Có thể áp dụng transition cho nhiều thuộc tính đồng thời.
- Trong ví dụ lớp transition-2-properties, màu nền thay đổi trong 5 giây và độ rộng thay đổi trong 0,5 giây.
Cú pháp Cơ bản
1/* Basic syntax of transition */
2transition: property duration timing-function delay;propertychỉ rõ những thuộc tính CSS nào sẽ được áp dụng hoạt ảnh. Chỉ địnhallsẽ áp dụng hoạt ảnh cho tất cả các thuộc tính.durationchỉ rõ thời gian mà hoạt ảnh sẽ hoàn thành. Chỉ định bằng giây (s) hoặc mili giây (ms).timing-functionchỉ rõ sự thay đổi về tốc độ của hoạt ảnh. Bạn có thể sử dụng các tùy chọn nhưease,linear,ease-in,ease-out,ease-in-out, v.v.delaychỉ rõ thời gian trì hoãn trước khi hoạt ảnh bắt đầu. Chỉ định bằng giây hoặc mili giây.
Các thuộc tính chi tiết của transition
1/* Detailed properties of transition */
2transition-property: background-color;
3transition-duration: 0.3s;
4transition-timing-function: ease;
5transition-delay: 500ms;transition cũng có thể được sử dụng dưới dạng các thuộc tính riêng lẻ như sau.
transition-property: Chỉ rõ thuộc tính mà hoạt ảnh được áp dụng.transition-duration: Chỉ rõ thời gian hoàn thành hoạt ảnh.transition-timing-function: Chỉ rõ tốc độ tiến triển của hoạt ảnh. Có thể sử dụng các tùy chọn nhưease,linear,ease-in,ease-out,ease-in-out.transition-delay: Chỉ rõ thời gian trì hoãn trước khi hoạt ảnh bắt đầu.
Bạn có thể làm theo bài viết trên bằng cách sử dụng Visual Studio Code trên kênh YouTube của chúng tôi. Vui lòng ghé thăm kênh YouTube.