Transition trong CSS
Thuộc tính Transition trong CSS được sử dụng khá rộng rãi trong thiết kế web để tạo ra các hiệu ứng chuyển đổi đẹp mắt trên website một cách dễ dàng. Để tìm hiểu về Transition trong CSS, mời bạn đọc cùng eLib.VN tham khảo bài viết dưới đây.
Mục lục nội dung
1. Transition trong CSS
Thuộc tính Transition trong CSS được sử dụng khá rộng rãi trong thiết kế web để tạo ra các hiệu ứng chuyển đổi đẹp mắt trên website một cách dễ dàng.
Transition hoạt động bằng cách thay đổi giá trị thuộc tính một cách trơn tru từ giá trị này sang giá trị khác trong khoảng thời gian nhất định. Các tham số thường được sử dụng:
- transition-delay: khoảng thời gian dừng cho mỗi hiệu ứng chuyển đổi.
- transition-duration: khoảng thời gian chuyển đổi diễn ra.
- transition-property: thuộc tính cần chuyển đổi.
- transition-timing-function: tốc độ chuyển đổi diễn ra.
2. Cách sử dụng Transition trong CSS
Để tạo ra hiệu ứng chuyển đổi Transition, bạn phải xác định ít nhất hai điều:
- Thuộc tính CSS muốn thêm hiệu ứng vào
- Thời gian chuyển đổi diễn ra (duration).
Lưu ý: Nếu phần duration không được chỉ định, quá trình chuyển đổi sẽ không diễn ra mượt mà, trơn tru vì giá trị mặc định bằng 0.
Thay đổi giá trị một thuộc tính
Ví dụ: Phần tử <div> màu tím 100px * 100px, ta chỉ định hiệu ứng Transition cho thuộc tính width, với thời lượng 2 giây:
div {
width: 100px;
height: 100px;
background: purple;
-webkit-transition: width 2s; /* Safari */
transition: width 2s;
}
Hiệu ứng chuyển tiếp sẽ diễn ra khi thuộc tính width được thay đổi giá trị.
div:hover {
width: 300px;
}
Lưu ý: Khi con trỏ di chuyển ra khỏi phần tử, nó sẽ dần thay đổi trở lại kiểu ban đầu.
Thay đổi giá trị nhiều thuộc tính
Ví dụ: Thêm hiệu ứng chuyển tiếp cho cả thuộc tính width và height, với thời lượng 2 giây cho chiều rộng và 4 giây cho chiều cao.
div {
-webkit-transition: width 2s, height 4s; /* Safari */
transition: width 2s, height 4s;
}
3. Tốc độ chuyển đổi
Thuộc tính transition-timing-function dùng để xác định tốc độ thay đổi khi chuyển đổi.
Các giá trị có sẵn như sau:
- ease: tạo hiệu ứng chuyển đổi khi bắt đầu thì chậm sau đó nhanh dần và gần kết thúc lại chậm từ từ (giá trị mặc định).
- linear: tạo hiệu ứng chuyển đổi từ lúc bắt đầu với lúc kết thúc tốc độ là như nhau.
- ease-in: tạo hiệu ứng chuyển đổi chậm ở lúc bắt đầu.
- ease-out: tạo hiệu ứng chuyển đổi chậm ở lúc kết thúc.
- ease-in-out: tạo hiệu ứng chuyển đổi chậm ở lúc bắt đầu và lúc kết thúc.
#div1 {transition-timing-function: linear;}
#div2 {transition-timing-function: ease;}
#div3 {transition-timing-function: ease-in;}
#div4 {transition-timing-function: ease-out;}
#div5 {transition-timing-function: ease-in-out;}
Bạn tự chạy theo code sau để thấy rõ sự khác nhau nhé:
<!DOCTYPE html>
<html>
<head>
<style>
section{
background-color:#e9d8f4;
}
div {
width: 100px;
height: 50px;
background: #58257b;
color: white;
font-family:arial;
-webkit-transition: width 1s; /* Safari */
transition: width 2s;
}
/* Dành cho Safari 3.1 to 6.0 */
#div1 {-webkit-transition-timing-function: linear;}
#div2 {-webkit-transition-timing-function: ease;}
#div3 {-webkit-transition-timing-function: ease-in;}
#div4 {-webkit-transition-timing-function: ease-out;}
#div5 {-webkit-transition-timing-function: ease-in-out;}
/* Cú pháp chuẩn */
#div1 {transition-timing-function: linear;}
#div2 {transition-timing-function: ease;}
#div3 {transition-timing-function: ease-in;}
#div4 {transition-timing-function: ease-out;}
#div5 {transition-timing-function: ease-in-out;}
section:hover #div1, section:hover #div2, section:hover #div3, section:hover
#div4, section:hover #div5{
width:500px;
}
</style>
</head>
<body>
<section>
<div id="div1">linear</div>
<br>
<div id="div2">ease</div>
<br>
<div id="div3">ease-in</div>
<br>
<div id="div4">ease-out</div>
<br>
<div id="div5">ease-in-out</div>
<br>
</section>
</body>
</html>
4. Độ trễ của hiệu ứng Transition
Thuộc tính transition-delay sử dụng để xác định khoảng thời gian trì hoãn giữa thời gian một thuộc tính thay đổi và lúc chuyển tiếp thực sự bắt đầu.
Ví dụ: Độ trễ 1 giây trước khi bắt đầu chuyển đổi.
div {
-webkit-transition-delay: 1s; /* Safari */
transition-delay: 1s;
}
Khi rê chuột vào thì hiệu ứng không diễn ra ngay mà sẽ bị delay 1s là thời gian mà chúng ta đặt cho nó.
5. Kết hợp Transition với Transform
Kết hợp Transition với Transform với nhau sẽ tạo nên hiệu ứng chuyển tiếp cực kỳ đẹp mắt.
div {
-webkit-transition: width 2s, height 2s, -webkit-transform 2s; /* Safari */
transition: width 2s, height 2s, transform 2s;
}
Trên đây là bài viết của eLib.VN về Transition trong CSS. CSS transitions cung cấp một cách để điều khiển tốc độ của hiệu ứng khi thay đổi các thuộc tính của CSS. Bạn có thể sử dụng nó để làm phong phú hơn các hiệu ứng mà không cần dùng đến Javascript. Chúc các bạn thành công!