CSS hoạt hình vòng tròn
ví dụ 1. Trong ví dụ này, chúng ta sẽ di chuyển phần tử HTML div theo một đường tròn. Hoạt hình xoay phần tử ở 360 độ trong bản dịch 100px và tạo một đường tròn Show HTML
đầu ra
ví dụ 2. Trong ví dụ này, chúng ta sẽ di chuyển phần tử hình ảnh theo đường tròn theo hướng ngược kim đồng hồ Thanh trượt hình ảnh (còn gọi là băng chuyền) ở khắp mọi nơi. Có rất nhiều thủ thuật CSS để tạo thanh trượt thông dụng cho hình ảnh trượt từ trái sang phải (hoặc ngược lại). Điều tương tự cũng xảy ra với nhiều thư viện JavaScript ngoài kia tạo ra các thanh trượt lạ mắt với các hoạt ảnh phức tạp. Chúng tôi sẽ không làm bất cứ điều gì trong bài viết này Thông qua một loạt bài viết nhỏ, chúng ta sẽ khám phá một số thanh trượt chỉ CSS lạ mắt và không phổ biến. Nếu bạn cảm thấy mệt mỏi khi nhìn thấy những thanh trượt cổ điển giống nhau, thì bạn đang ở đúng nơi Chuỗi thanh trượt CSS
Đối với bài viết đầu tiên này, chúng ta sẽ bắt đầu với thứ mà tôi gọi là “thanh trượt hình ảnh xoay tròn” Dự phòng nhúng CodePen Mát mẻ phải không? Đánh dấu HTMLNếu bạn đã theo dõi loạt trang trí hình ảnh ưa thích của tôi hoặc lưới CSS và hình dạng tùy chỉnh, thì bạn sẽ biết rằng quy tắc đầu tiên của tôi là làm việc với HTML nhỏ nhất có thể. Tôi luôn cố gắng hết sức để tìm các giải pháp CSS trước khi làm mã của mình lộn xộn với rất nhiều 7 và những thứ khácQuy tắc tương tự cũng được áp dụng ở đây - mã của chúng tôi không có gì khác ngoài danh sách hình ảnh trong vùng chứa Giả sử chúng ta đang làm việc với bốn hình ảnh
Đó là nó. Bây giờ hãy chuyển sang phần thú vị của mã. Nhưng trước tiên, chúng ta sẽ đi sâu vào vấn đề này để hiểu logic về cách thanh trượt của chúng ta hoạt động Làm thế nào nó hoạt động?Đây là video tôi xóa 8 khỏi CSS để chúng ta có thể hiểu rõ hơn cách hình ảnh chuyển độngNó giống như bốn hình ảnh của chúng tôi được đặt trên một vòng tròn lớn quay ngược chiều kim đồng hồ Tất cả các hình ảnh có cùng kích thước (ký hiệu là 9 trong hình). Lưu ý hình tròn màu xanh là hình tròn giao với tâm của tất cả các hình và có bán kính ( 0). Chúng tôi sẽ cần giá trị này sau cho hoạt hình của chúng tôi. 0 bằng với 2. (Tôi sẽ bỏ qua phần hình học cung cấp cho chúng ta phương trình đó. )Hãy viết một số CSSChúng tôi sẽ sử dụng CSS Grid để đặt tất cả các hình ảnh trong cùng một khu vực chồng lên nhau
Không có gì quá phức tạp cho đến nay. Phần khó khăn là hình ảnh động Chúng ta đã nói về việc xoay một vòng tròn lớn, nhưng trên thực tế, chúng ta sẽ xoay từng hình ảnh riêng lẻ để tạo ảo giác về một vòng tròn lớn đang xoay. Vì vậy, hãy định nghĩa một hoạt ảnh, 3 và áp dụng nó cho các thành phần hình ảnh
Thủ thuật chính dựa vào dòng được đánh dấu đó. Theo mặc định, thuộc tính CSS 4 bằng với 5 (hoặc 6) làm cho hình ảnh xoay quanh tâm của nó, nhưng chúng tôi không cần nó để làm điều đó. Chúng tôi cần hình ảnh xoay quanh tâm của vòng tròn lớn chứa hình ảnh của chúng tôi, do đó, giá trị mới cho 4Vì R bằng với 2, nên chúng ta có thể nói rằng 0 bằng với 0 của kích thước hình ảnh. Đây là một con số để minh họa cách chúng tôi nhận được giá trị 1Hãy chạy hoạt hình và xem điều gì sẽ xảy ra Dự phòng nhúng CodePen Tôi biết rồi mà. Kết quả khác xa với những gì chúng ta mong muốn, nhưng thực tế chúng ta đã rất gần. Có vẻ như chỉ có một hình ảnh ở đó, nhưng đừng quên rằng chúng tôi đã xếp chồng tất cả các hình ảnh lên nhau. Tất cả chúng đang quay cùng một lúc và chỉ có hình ảnh trên cùng là hiển thị. Những gì chúng ta cần là trì hoãn hoạt ảnh của từng hình ảnh để tránh sự chồng chéo này
Mọi thứ đã trở nên tốt hơn Dự phòng nhúng CodePen Nếu chúng tôi ẩn phần tràn trên vùng chứa, chúng tôi đã có thể thấy một thanh trượt, nhưng chúng tôi sẽ cập nhật hoạt ảnh một chút để mỗi hình ảnh vẫn hiển thị trong một khoảng thời gian ngắn trước khi nó di chuyển Chúng tôi sẽ cập nhật các khung hình chính hoạt hình của mình để làm việc đó
Đối với mỗi 2 ( 3, trong đó 4 là số lượng hình ảnh), chúng tôi sẽ thêm một khoảng dừng nhỏ. Mỗi hình ảnh sẽ vẫn hiển thị trong khoảng thời gian tổng thể là 5 trước khi chúng tôi chuyển sang hình ảnh tiếp theo ( 6, 7, v.v. ). Tôi sẽ cập nhật 8 bằng cách sử dụng hàm 9 để làm cho hoạt ảnh đẹp hơn một chútDự phòng nhúng CodePen Bây giờ thanh trượt của chúng tôi là hoàn hảo. Chà, gần như hoàn hảo vì chúng tôi vẫn đang bỏ lỡ bước cuối cùng. đường viền tròn đầy màu sắc xoay quanh hình ảnh của chúng tôi. Chúng ta có thể sử dụng phần tử giả trên trình bao bọc 0 để làm cho nó
Tôi đã tạo một vòng tròn có nền trong khi sử dụng thủ thuật tạo mặt nạ chỉ hiển thị vùng đệm. Sau đó, tôi áp dụng cho nó cùng một hoạt ảnh mà chúng tôi đã xác định cho hình ảnh Chúng ta xong rồi. Chúng tôi có một thanh trượt tròn tuyệt vời Dự phòng nhúng CodePen Hãy thêm nhiều hình ảnh hơnLàm việc với bốn hình ảnh là tốt, nhưng sẽ tốt hơn nếu chúng ta có thể chia tỷ lệ cho bất kỳ số lượng hình ảnh nào. Rốt cuộc, đây là mục đích của thanh trượt hình ảnh. Chúng ta sẽ có thể xem xét các hình ảnh 1Đối với điều này, chúng tôi sẽ làm cho mã chung chung hơn bằng cách giới thiệu Sass. Đầu tiên, chúng tôi xác định một biến số cho số lượng hình ảnh (_______19_______2) và chúng tôi sẽ cập nhật mọi phần mà chúng tôi đã mã hóa cứng số lượng hình ảnh ( 4)Hãy bắt đầu với sự chậm trễ
Công thức cho độ trễ là 4, cho chúng ta vòng lặp Sass sau
Chúng tôi cũng có thể biến thời lượng thành một biến nếu chúng tôi thực sự muốn. Nhưng hãy chuyển sang hình ảnh động
Hãy đơn giản hóa nó để có cái nhìn rõ hơn về mẫu
Bước giữa mỗi trạng thái bằng 5 — là 6 — và chúng ta thêm một góc 7 — là 8. Điều đó có nghĩa là chúng ta có thể viết vòng lặp của mình như thế này 0Vì mỗi hình ảnh chiếm __16_______5 hoạt ảnh nên chúng tôi thay đổi điều này 1…Với cái này 2Cần lưu ý rằng 5 là một giá trị tùy ý mà tôi chọn cho ví dụ này. Chúng tôi cũng có thể biến nó thành một biến để kiểm soát thời gian mỗi hình ảnh sẽ hiển thị. Tôi sẽ bỏ qua điều đó vì mục đích đơn giản, nhưng đối với bài tập về nhà, bạn có thể thử làm và chia sẻ cách thực hiện của mình trong phần nhận xét 3Bit cuối cùng là để cập nhật 4. Chúng ta sẽ cần một số thủ thuật hình học. Bất kể số lượng hình ảnh, cấu hình luôn giống nhau. Chúng tôi có hình ảnh của chúng tôi (vòng tròn nhỏ) được đặt bên trong một vòng tròn lớn và chúng tôi cần tìm giá trị của bán kính, 0Bạn có thể không muốn một lời giải thích hình học nhàm chán, vì vậy đây là cách chúng tôi tìm thấy 0 4Nếu chúng ta biểu thị điều đó dưới dạng phần trăm, điều đó mang lại cho chúng ta 5…có nghĩa là giá trị 4 bằng 6Đã được thực hiện. Chúng tôi có một thanh trượt hoạt động với bất kỳ hình ảnh số nào Dự phòng nhúng CodePen Hãy ném chín hình ảnh vào đó Dự phòng nhúng CodePen Thêm bao nhiêu hình ảnh tùy thích và cập nhật biến 2 với tổng số hình ảnhkết thúcVới một vài thủ thuật sử dụng các phép biến đổi CSS và hình học tiêu chuẩn, chúng tôi đã tạo ra một thanh trượt hình tròn đẹp mắt mà không yêu cầu nhiều mã. Điều thú vị về thanh trượt này là chúng ta không cần phải sao chép hình ảnh để giữ hoạt ảnh vô hạn vì chúng ta có một vòng tròn. Sau khi quay hết một lượt, chúng ta sẽ quay lại hình ảnh đầu tiên Làm cách nào để tạo một vòng tròn trong CSS?Để tạo hình tròn, chúng ta có thể đặt bán kính đường viền cho phần tử . Điều này sẽ tạo ra các góc cong trên phần tử. Nếu chúng tôi đặt nó thành 50%, nó sẽ tạo ra một vòng tròn. Nếu bạn đặt chiều rộng và chiều cao khác, thay vào đó, chúng tôi sẽ nhận được hình bầu dục.
Làm cách nào để khoanh tròn văn bản trong CSS?Thêm CSS . Đặt bán kính đường viền thành "50%" Chỉ định chiều rộng và chiều cao của phần tử Tạo kiểu cho lớp bằng các thuộc tính nền, đường viền và màu sắc Căn giữa số bằng cách sử dụng giá trị "căn giữa" của thuộc tính căn chỉnh văn bản Chỉ định phông chữ của số CSS có tốt cho hoạt hình không?Hoạt ảnh CSS làm cho trang web hấp dẫn về mặt trực quan và nâng cao trải nghiệm người dùng . Chúng tôi hy vọng bạn có thể lấy cảm hứng từ 30 ví dụ hoạt hình CSS thú vị hàng đầu này để tạo một trang web hoạt hình tuyệt vời.
Hoạt ảnh CSS có tốt hơn hoạt ảnh JavaScript không?Thực tế là, trong hầu hết các trường hợp, hiệu suất của hoạt ảnh dựa trên CSS gần giống như hoạt ảnh được tạo bằng JavaScript — trong Firefox tại . Một số thư viện hoạt hình dựa trên JavaScript, như GSAP và Velocity. JS, thậm chí còn tuyên bố rằng chúng có thể đạt được hiệu suất tốt hơn so với chuyển đổi/hoạt ảnh CSS gốc. |