Tạo hiệu ứng khói với HTML và CSS
Trong một số giao diện đặc biệt, chúng ta sẽ cần tạo ra những hiệu ứng chuyên biệt. Hôm nay, freetuts xin giới thiệu đến mọi người hiệu ứng tạo khói. Sau bài viết này mọi người có thể tạo được hiệu ứng như hình bên dưới
1. Phần HTML
Vẫn là thẻ div
chính cho phần bố cục, thêm vào đó là thẻ p
và thẻ span
.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Smoke</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" type="text/css" media="screen" href="smoke.css"> <script src="main.js"></script> </head> <body> <div> <p> <span class="s1">S</span> <span class="s2">M</span> <span class="s3">O</span> <span class="s4">K</span> <span class="s5">E</span> </p> </div> </body> </html>
Do hiệu ứng này cần chỉ định trực tiếp lên các chữ cái, nên việc dùng thẻ span
là hợp lý và mỗi thẻ sẽ có một tên class riêng biệt.
Lưu ý các bạn có thể thay thế thẻ span
bằng thẻ khác, ở freetuts ưu tiên dùng thẻ span
.
Bài viết này được đăng tại [free tuts .net]
2. Phần CSS
Trước hết hãy xem qua toàn bộ code.
div { height: 500px; display: flex; align-items: center; justify-content: center; } p { font-size: 50px; letter-spacing: -5px; } span { position: relative; animation: smoke 10s ease infinite; display: inline-block; transition: 2s ease-in-out; } .s1 { animation-delay: 0; } .s2 { animation-delay: 0.5s; } .s3 { animation-delay: 1s; } .s4 { animation-delay: 1.5s; } .s5 { animation-delay: 2s; } @keyframes smoke { 0% { transform: translate(0, 0) scale(1, 1) rotate(0deg); filter: blur(0); } 20% { filter: blur(5px); text-shadow: 5px 10px; } 40% { filter: blur(35px); text-shadow: 15px 20px; } 60% { filter: blur(55px); text-shadow: 25px 30px; } 80% { filter: blur(75px); text-shadow: 35px 40px; } 100% { transform: translate(-70px, -300px) scale(2, 4) rotate(360deg); filter: blur(100px); text-shadow: 45px 50px; } }
Bước 1: tạo định dạng cho thẻ div
div { height: 500px; display: flex; align-items: center; justify-content: center; }
Thiết lập các thuộc tính display
, align-items
, justify-content
như trên sẽ giúp các phần tử con canh giữa cả chiều dọc và ngang.
Lưu ý, giá trị height
được gán 500px
có thể theo đổi theo ý thích.
Bước 2: tạo định dạng cho thẻ p
p { font-size: 50px; letter-spacing: -5px; }
Chúng ta thiết lập một giá trị cho thuộc tính letter-spacing
vì từng chữ cái được để trong thẻ span
nên phải thu hẹp lại khoảng cách giữa các chữ cái cho hợp lý.
Bước 3: tạo định dạng cho thẻ span
span { position: relative; animation: smoke 10s ease infinite; display: inline-block; transition: 2s ease-in-out; }
Đây là định dạng chung cho tất cả các thẻ span
, thuộc tính display
được thiết lập lại thành inline-block
thay vì giá trị mặc định inline
. Sở dĩ làm như vậy vì các thuộc tính trong hiệu chỉ hoạt động đầy đủ khi một thẻ có thuộc tính display
khác inline
.
Bước 4: thiết lập độ trễ của hiệu ứng cho từng chữ cái
.s1 { animation-delay: 0; } .s2 { animation-delay: 0.5s; } .s3 { animation-delay: 1s; } .s4 { animation-delay: 1.5s; } .s5 { animation-delay: 2s; }
Bước này chỉ là canh chỉnh các giá trị thời gian để độ trễ từng chữ cái cho phù hợp.
Bước 5: tạo hiệu ứng khói
@keyframes smoke { 0% { transform: translate(0, 0) scale(1, 1) rotate(0deg); filter: blur(0); } 20% { filter: blur(5px); text-shadow: 5px 10px; } 40% { filter: blur(35px); text-shadow: 15px 20px; } 60% { filter: blur(55px); text-shadow: 25px 30px; } 80% { filter: blur(75px); text-shadow: 35px 40px; } 100% { transform: translate(-70px, -300px) scale(2, 4) rotate(360deg); filter: blur(100px); text-shadow: 45px 50px; } }
Hiệu ứng này khá rườm rà, vì freetuts chia nhỏ ra 5 tỷ lệ để thuộc tính filter: blur(value)
và thuộc tính text-shadow
hoạt động mượt mà hơn.
Các thuộc tính translate
, scale
, rotate
để tạo cảm giác giống khói đang bay lên.
3. Lời Kết
Qua bài viết này, bạn có thể tạo được một hiệu ứng đặc biệt như hiệu ứng khói. Nó tạo cảm giác mới lạ cho người dùng cũng như làm cho trang web của bạn trở nên sống động hơn (một điều mà không thể thiếu trong thế giới công nghệ ngày nay). Cảm ơn các bạn, hẹn gặp lại trong bài viết tiếp theo.
Danh sách file tải về
Tên file tải về | Pass giải nén |
---|---|
Tạo hiệu ứng khói | freetuts.net hoặc gameportable.net |