ạo hiệu ứng khói với HTML và CSS - Học CSS3 căn bản & nâng cao
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, Zaidap.com 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à ...
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, Zaidap.com 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, ở Zaidap.com ưu tiên dùng thẻ span
.
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ì Zaidap.com 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.
Chuyên đề học lập trình web: Học phần HTML / CSS
Đây là chương thứ nhất trong chuyên đề tự học lập trình web với PHP. Trong chương này chúng ta sẽ học HTML và CSS trước.
Các bạn hãy sub kênh để ủng hộ mình nhé. Link chuyên đê tại đây.