- vừa được xem lúc

Tạo Bouncing Page Loader với CSS3 và Animations

0 0 21

Người đăng: Thanh Hung

Theo Viblo Asia

Sau đây mình xin hướng dẫn cách tạo một Bouncing Page Loader giống như hình bên trên, ta có thể làm theo cách sau:

🔸 HTML

  • Đầu tiên, hãy viết HTML cơ bản cho project của bạn
<p>Hello world!</p> <div class="loader"> <span></span> <span></span> <span></span>
</div>
  • Ta sẽ thêm một div mới với class là loader. div này chịu trách nhiệm cho thằng loader trên trang của mình. Trong div này, ta thêm ba thẻ span liên tiếp, mỗi thẻ đại diện cho vòng tròn trên trình tải trang.

🔸 CSS Style

  • Trước tiên hãy tạo style cho các thẻ cơ bản của chúng ta.
body { background: #2C294F; padding: 2rem;
} p { color: white; text-align: center;
}
  • Đoạn code trên xác định các kiểu CSS tùy chọn cho thẻ pbody
🔻 Tạo style cho class loader
  • Tiếp theo, ta tạo style cho thằng loader của mình với các thuộc tính sau:
.loader { display: flex; justify-content: center; align-items: center;
}
  • Ở đây ta sử dụng Flexbox (display: flex;). Thuộc tính để đặt bouncing page loader của mình ở giữa trang theo chiều ngang và chiều dọc.
.loader > span { background: #FAD000; border-radius: 50%; margin: 5rem 0.5rem; animation: bouncingLoader 0.6s infinite alternate;
} .loader > span:nth-child(2) { animation-delay: 0.2s;
} .loader > span:nth-child(3) { animation-delay: 0.4s;
}
  • Mỗi vòng tròn sẽ có được tạo style: width: 1rem;height:1rem; với màu là #FFB651. Theo mặc định, hình dạng loader của ta sẽ là hình vuông. Để tạo cho nó một hình tròn, ta đặt border-radius thành 50%.
  • Ta cũng đã chỉnh lề giữa cho các vòng tròn (margin: 5rem 0.5rem;). Tuy nhiên phần thú vị nhất ở đây là thuộc tính animation. Chúng ta đang sử dụng một animation keyframe được gọi là bouncingLoader chạy một lần trong 0,6 giây và cứ thế cứ thế nó lặp đi lặp lại. (Nếu bạn muốn loader của mình ở dạng hình vuông, hãy bỏ thuộc tính border-radius đi)


🔸 Tạo Animation Keyframe

  • Keyframes được sử dụng để định nghĩa cách hoạt động của animation mà mình đang tạo và cung cấp cho ta quyền kiểm soát hoàn toàn một chu kỳ của animation trong CSS. Chúng tôi định nghĩa nó là @keyframes theo sau là tên của animationtrong trường hợp này là bouncingLoader .
  • Bên trong @keyframe, ta sử dụng các từ khóa fromto để chỉ định điểm bắt đầu và điểm kết thúc cho animation của mình. Ta cũng có thể sử dụng 0% cho from để từ đó mô tả điểm bắt đầu và 100% cho to để mô tả điểm kết thúc cho animation.
  • Nếu ta muốn một vài hiệu ứng chuyển tiếp, ta có thể xác định một phạm vi tỷ lệ phần trăm, mỗi phần chứa danh sách các tùy chọn mà ta cần. Các tỷ lệ phần trăm này có thể được liệt kê theo bất kỳ thứ tự nào cùng với sự khác biệt giữa chúng. Ví dụ:
@keyframes animationExample { 0% { opacity: 1; } 30% { opacity: 0.75; } 50% { opacity: 0.5; } 100% { opacity: 0.25; }
}
  • Quay trở lại bài viết, ta sẽ viết keyframe cho thằng loader của mình
@keyframes bouncingLoader { from { width: 0.1rem; height: 0.1rem; opacity: 1; transform: translate3d(0); } to { width: 1rem; height: 1rem; opacity: 0.1; transform: translate3d(0, -1rem, 0); }
}
  • Ta sử dụng các từ khóa fromto để xác định các thuộc tính kiểu dáng cơ bản về chiều rộng, chiều cao và độ mờ của các vòng tròn. Ngoài ra, để tạo hiệu ứng bouncing, ta sử dụng thuộc tính transform CSS để thay đổi tọa độ của một phần tử đã cho để chuyển đổi vị trí của mỗi vòng tròn.
  • Với thuộc tính transform này, ta đã sử dụng hàm translate3D() có ba đầu vào là các tọa độ x, y, z. Vì ta muốn trình tải của mình chạy theo chuyển động sóng, nên ta cần dịch chủ yếu theo trục y và giữ cho trục x và z không đổi. Do đó, giá trị điểm kết thúc của ta là (0, -1rem, 0).
  • Nếu ta đặt giá trị điểm kết thúc của mình là biến đổi: translate3d (1rem, 0rem, 1rem);. Điều đó có nghĩa là ta đang chuyển đổi nó dọc theo trục x và z trong khi giữ cho trục y của ta không đổi. Nó sẽ thành như thế này:\

🔻 Sử dụng Animation Delay với Keyframe
  • Vì ta đã viết mã cho @keyframe của mình nên bây giờ ta sẽ thiết lập và chạy nó.
.loader > span { background: #FAD000; border-radius: 50%; margin: 5rem 0.5rem; animation: bouncingLoader 0.6s infinite alternate;
}
  • Ta định kiểu phần tử ta muốn tạo hiệu ứng với thuộc tính animation cộng với việc có thể có hoặc không có thuộc tính phụ cho nó. Sử dụng thuộc tính này, ta có thể kiểm soát timing, duration và các chi tiết khác của animation. Ví dụ:
animation: animation-name, animation-duration, animation-iteration-count, animation-direction;
/*animation-name: Xác định tên của animation của mình, trong trường hợp của ta là thằng loader*/
/*animation-duration: cấu hình thời lượng mà animation của mình sẽ mất để hoàn thành một chu kỳ*/
/*animation-iteration-count: Cho biết số lần ta muốn chu kỳ animation của mình phát trước khi dừng*/
/*animation-direction: Xác định rằng animation của mình sẽ phát theo hướng nào*/

OK, trên đây là cách mình tạo ra một Bouncing Page Loader. Cảm ơn các bạn đã đọc bài viết này!

Tài liệu tham khảo:

Bouncing Page Loader

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 525

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 397

- vừa được xem lúc

Đặt tên commit message sao cho "tình nghĩa anh em chắc chắn bền lâu"????

. Lời mở đầu. .

1 1 738

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 358

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 450

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 433