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

Mô tả cửa tự động toà nhà IPH bằng CSS (fun)

0 0 20

Người đăng: Thất Thành Kai

Theo Viblo Asia

Hi anh em, trong một ngày đẹp trời đang ngồi uống cafe tại highland, mình thấy mấy đứa trẻ chạy ra chạy vào trước cái cửa tự động của toà nhà IPH. Thế là trong dây phút rảnh rỗi mình nghĩ thử mô tả cách hoạt động của cánh cửa tự động này bằng HTML/CSS ?

Bài toán

Cánh cửa tự động gồm 6 tấm kính tất cả, đối xứng nhau và có 4 tấm kính kích thước bằng nhau sẽ di chuyển dạt sang 2 bên khi có người đi vào khu vực mà cảm biến nhận diện được ( ở đây thay cho cảm ứng thì chúng ta dùng sự kiện hover vào khu vực 4 tấm kính 1, 1', 2 và 2') 2 tấm (1 và 1') gần trung tâm sẽ phải di chuyển nhanh hơn 2 tấm (2 và 2') để cả 4 tấm sẽ dạt về 2 phía cùng lúc.

Hiển thị nó ra với HTML/CSS trước cho dễ hình dung

<div class="main"> <h1 style="text-align: center;">IPH auto door</h1> <div class="door"> <div class="d-left"></div> <div class="d-animate"> <div class="d-side d-side--left"></div> <div class="d-center"> <div class="center-item"></div> <div class="center-item"></div> </div> <div class="d-side d-side--right"></div> </div> <div class="d-right"></div> </div>
</div> <style lang="scss">
.door { display: flex; width: 1200px; height: 400px; border: 1px solid; margin: 50px auto; .door-item { width: 200px; } .d-left,.d-right { width: 200px; background-color: #2c3e50; }
} .d-animate { display:flex; width: 800px; .d-side { position: relative; width: 200px; background-color: rgba(46, 204, 113, 0.7); } .d-center { width: 400px; display:flex; .center-item { position:relative; border: 1px solid #fff; background-color: rgba(41, 128, 185, 0.7); width:300px; } }
} </style>

Chúng ta sẽ được một cái hình như sau:

Khi có người đi đến khu vực cảm biến tương đương với việc hover vào khu vực 4 cái cửa màu xanh kia thì nó sẽ dạt sang 2 bên, để biết được điều đó chúng ta dựa vào class d-animate vì thằng này bao bọc bên ngoài cả 4 cánh cửa màu xanh, nên khi hover vào mình có thể tác động nên 4 cánh cửa bên trong nó.

Vậy chúng ta sẽ cho 4 cánh cửa đó dạt sang 2 bên khi hover vào class d-animate

.d-animate {
... (như đoạn ở trên) &:hover { cursor:pointer; .center-item { &:first-child { transform: translatex(-400px); } &:last-child { transform: translatex(400px); } } .d-side--left { transform: translatex(-200px); } .d-side--right { transform: translatex(200px); } }
}

Đoạn css trên chạy đã có vẻ đúng nhưng để ý kĩ lại thì chúng ta thấy có một vấn đề là 2 bên cửa đang bị đè lên nhau chưa đúng thứ tự (thứ tự đúng là xanh dương -> xanh lá -> đen) nên có màu sắc khác nhau và chưa được "mượt" cho lắm ?

Sửa tiếp css

.d-animate { ... .d-side { ... z-index:1; } .d-center { ... .center-item { ... z-index:2; } }
} 

Đến đoạn này thì 2 cánh cửa màu xanh dương đã được nhảy lên trên cùng rồi, nhưng cửa toà nhà mà mở nhanh thế này thì vỡ hết kính mất ? , thêm một ít transition cho những cái cửa này

.d-animate { ... .d-side { ... transition: transform 4s linear; z-index:1; } .d-center { ... .center-item { ... transition: transform 4s linear; z-index:2; } }
} 

Notes

Bài viết chỉ mang tính chất giải trí, bạn cũng có thể tham khảo qua một chút về cách xử lý animation của thành phần con khi hover một thành phần cha, nếu có cơ hội chúng ta sẽ làm nhiều ví dụ khác hơn về các animation thường dùng trong dự án của mình.

Link codepen

Bình luận

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

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

Căn giữa các phần tử HTML theo chiều dọc (phần 1)

Bài viết được dịch từ bài Vertical centering of elements in HTML xuất bản ngày 18/01/2015 trên trang Web++. .

0 0 79

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

Căn giữa phần tử trong CSS

1. Theo chiều ngang. Đó có phải là phần tử inline hay inline-* (như text hay links). .

0 0 66

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

99% không biết đến mẹo này khi sử dụng Flexbox CSS

Hello lại là mình đây. Bài viết hôm nay mình sẽ giới thiệu tới mọi người một trick khá hay khi dùng CSS flexbox nhé. 1. Chia layout với flexbox.

0 0 62

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

Vanilla JS Project: Tính tuổi

1. Yêu cầu.

0 0 74

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

1 số UI component và layout hữu ích với Frontend

Giới thiệu. Hôm nay mình xin chia sẻ 1 số Layout và UI component quen mà có lẽ là quen thuộc với nhiều người khi làm dự án, hay bắt gặp trên mạng.

0 0 65

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

Style text css

Giới thiệu. Chào 2021, mình sẽ giới thiệu vài kiểu style cho text màu mè chút cho rực rỡ .

0 0 44