Có nhiều cách để ẩn một yếu tố trong CSS, nhưng chúng khác nhau về cách chúng ảnh hưởng đến khả năng tiếp cận, bố cục, hoạt hình, hiệu suất và xử lý sự kiện.
Hoạt hình
Một số tùy chọn ẩn CSS là tất cả hoặc không có gì. Phần tử này có thể nhìn thấy đầy đủ hoặc vô hình và không có trạng thái ở giữa. Những người khác, chẳng hạn như tính minh bạch, có thể có một loạt các giá trị, do đó các hình ảnh động CSS được nội suy trở nên có thể.
Khả năng tiếp cận
Mỗi phương thức được mô tả dưới đây sẽ ẩn trực quan một phần tử, nhưng nó có thể hoặc không thể ẩn nội dung khỏi các công nghệ hỗ trợ. Ví dụ, một đầu đọc màn hình vẫn có thể thông báo văn bản trong suốt nhỏ. Các thuộc tính CSS hoặc các thuộc tính ARIA như aria-hidden="true"
có thể là cần thiết để mô tả hành động thích hợp.
Hãy cảnh giác rằng hoạt hình cũng có thể gây ra sự mất phương hướng, đau nửa đầu, co giật hoặc khó chịu về thể chất khác cho một số người. Xem xét sử dụng truy vấn phương tiện prefers-reduced-motion
để tắt hình ảnh động khi được chỉ định trong tùy chọn người dùng.
Xử lý sự kiện
Hiding sẽ dừng các sự kiện được kích hoạt trên phần tử đó hoặc không có hiệu lực - nghĩa là, phần tử không hiển thị nhưng vẫn có thể được nhấp hoặc nhận các tương tác người dùng khác.
Màn biểu diễn
Sau khi trình duyệt tải và phân tích mô hình đối tượng HTML DOM và CSS, trang được hiển thị trong ba giai đoạn:
- Bố cục: Tạo hình học và vị trí của từng phần tử generate the geometry and position of each element
- Sơn: Vẽ ra các pixel cho mỗi phần tử draw out the pixels for each element
- Thành phần: Các lớp phần tử vị trí theo thứ tự thích hợp: position element layers in the appropriate order
Một hiệu ứng chỉ gây ra sự thay đổi thành phần là mượt mà hơn đáng kể so với những ảnh hưởng đến bố cục. Trong một số trường hợp, trình duyệt cũng có thể sử dụng gia tốc phần cứng.
1. opacity
và filter: opacity[]
Các thuộc tính opacity: N
và filter: opacity[N]
có thể được truyền một số từ 0 đến 1, hoặc tỷ lệ phần trăm từ 0% đến 100% biểu thị hoàn toàn trong suốt và hoàn toàn mờ đục.
Xem Bút ẩn với Opacity: 0 bởi SitePoint [@SitePoint] trên CodePen.
hide with opacity: 0 by SitePoint [@SitePoint]
on CodePen.
Có rất ít sự khác biệt thực tế giữa hai trong các trình duyệt hiện đại, mặc dù nên sử dụng filter
nếu nhiều hiệu ứng được áp dụng cùng một lúc [mờ, tương phản, thang độ xám, v.v.]
Opacity có thể được hoạt hình và cung cấp hiệu suất tuyệt vời, nhưng hãy cảnh giác rằng một yếu tố hoàn toàn trong suốt vẫn còn trên trang và có thể kích hoạt các sự kiện.
Hỗ trợ trình duyệt | Tốt, nhưng IE chỉ hỗ trợ opacity 0 đến 1 |
khả năng tiếp cận | Nội dung không đọc nếu 0 hoặc 0% được đặt |
Bố cục bị ảnh hưởng? | không |
yêu cầu kết xuất | thành phần |
màn biểu diễn | Tốt nhất, có thể sử dụng tăng tốc phần cứng |
Khung hoạt hình có thể? | Vâng |
Các sự kiện được kích hoạt khi ẩn? | Vâng |
Các sự kiện được kích hoạt khi ẩn?
2.
[hidden] {
display: none;
}
0 Tính minh bạch Alpha opacity
ảnh hưởng đến toàn bộ phần tử, nhưng nó cũng có thể đặt các thuộc tính ____10,
3 và [hidden] {
display: none;
}
4 riêng biệt. Áp dụng kênh alpha bằng không bằng cách sử dụng [hidden] {
display: none;
}
5 hoặc tương tự hiển thị một mục hoàn toàn trong suốt:[hidden] {
display: none;
}
hide with color alpha by SitePoint [@SitePoint]
on
CodePen.
Xem Bút ẩn với Color Alpha bởi SitePoint [@SitePoint] trên CodePen.
Mỗi thuộc tính có thể được hoạt hình riêng biệt để tạo hiệu ứng thú vị. Lưu ý rằng tính minh bạch có thể được áp dụng cho các phần tử với nền hình ảnh trừ khi chúng được tạo bằng cách sử dụng
[hidden] {
display: none;
}
6 hoặc tương tự.- Kênh Alpha có thể được đặt bằng:
7: Không thể minh bạch hoàn toàn [không thể giữa các hình ảnh động]][hidden] { display: none; }
8: Đỏ, Xanh lục, Xanh lam và Alpha[hidden] { display: none; }
9: Huế, bão hòa, nhẹ và alpha[hidden] { display: none; }
Hỗ trợ trình duyệt | Tốt, nhưng IE chỉ hỗ trợ opacity 0 đến 1 |
khả năng tiếp cận | Nội dung không đọc nếu 0 hoặc 0% được đặt |
Bố cục bị ảnh hưởng? | không |
yêu cầu kết xuất | thành phần |
màn biểu diễn | Tốt nhất, có thể sử dụng tăng tốc phần cứng |
Khung hoạt hình có thể? | Vâng |
Các sự kiện được kích hoạt khi ẩn? | Vâng |
Các sự kiện được kích hoạt khi ẩn?
2.
[hidden] {
display: none;
}
0 Tính minh bạch Alpha opacity
ảnh hưởng đến toàn bộ phần tử, nhưng nó cũng có thể đặt các thuộc tính ____10,
3 và [hidden] {
display: none;
}
4 riêng biệt. Áp dụng kênh alpha bằng không bằng cách sử dụng [hidden] {
display: none;
}
5 hoặc tương tự hiển thị một mục hoàn toàn trong suốt:[hidden] {
display: none;
}
hide with transform: scale[0]; by SitePoint [@SitePoint]
on CodePen.
Xem Bút ẩn với Color Alpha bởi SitePoint [@SitePoint] trên CodePen.
Hỗ trợ trình duyệt | Tốt, nhưng IE chỉ hỗ trợ opacity 0 đến 1 |
khả năng tiếp cận | Nội dung không đọc nếu 0 hoặc 0% được đặt |
Bố cục bị ảnh hưởng? | không |
yêu cầu kết xuất | thành phần |
màn biểu diễn | Tốt nhất, có thể sử dụng tăng tốc phần cứng |
Khung hoạt hình có thể? | Vâng |
Các sự kiện được kích hoạt khi ẩn? | không |
yêu cầu kết xuất
thành phần
màn biểu diễn
hide with clip-path by SitePoint [@SitePoint]
on CodePen.
prefers-reduced-motion
0 cung cấp phạm vi cho các hoạt hình thú vị, mặc dù nó chỉ nên dựa vào các trình duyệt hiện đại.
Hỗ trợ trình duyệt | Chỉ dành cho các trình duyệt hiện đại |
khả năng tiếp cận | Nội dung vẫn được đọc bởi một số ứng dụng |
Bố cục bị ảnh hưởng? | Không - Kích thước ban đầu vẫn còn |
yêu cầu kết xuất | sơn |
màn biểu diễn | hợp lý |
Khung hoạt hình có thể? | Vâng, trong các trình duyệt hiện đại |
Các sự kiện được kích hoạt khi ẩn? | không |
5. prefers-reduced-motion
4
Thuộc tính prefers-reduced-motion
4 có thể được đặt thành prefers-reduced-motion
6 hoặc prefers-reduced-motion
7 để hiển thị và ẩn một phần tử:
Xem Bút ẩn với khả năng hiển thị: ẩn bởi SitePoint [@SitePoint] trên Codepen.
hide with visibility: hidden by SitePoint [@SitePoint]
on CodePen.
Không gian được sử dụng bởi phần tử vẫn ở vị trí trừ khi giá trị prefers-reduced-motion
8 được sử dụng.
Hỗ trợ trình duyệt | Chỉ dành cho các trình duyệt hiện đại |
khả năng tiếp cận | Nội dung vẫn được đọc bởi một số ứng dụng |
Bố cục bị ảnh hưởng? | Không - Kích thước ban đầu vẫn còn |
yêu cầu kết xuất | sơn |
màn biểu diễn | hợp lý |
Khung hoạt hình có thể? | không |
Các sự kiện được kích hoạt khi ẩn? | không |
5. prefers-reduced-motion
4
Thuộc tính prefers-reduced-motion
4 có thể được đặt thành prefers-reduced-motion
6 hoặc prefers-reduced-motion
7 để hiển thị và ẩn một phần tử:
Xem Bút ẩn với khả năng hiển thị: ẩn bởi SitePoint [@SitePoint] trên Codepen.
hide with display: none by SitePoint [@SitePoint]
on CodePen.
Không gian được sử dụng bởi phần tử vẫn ở vị trí trừ khi giá trị prefers-reduced-motion
8 được sử dụng.
Xuất sắc
Hỗ trợ trình duyệt | Chỉ dành cho các trình duyệt hiện đại |
khả năng tiếp cận | Nội dung vẫn được đọc bởi một số ứng dụng |
Bố cục bị ảnh hưởng? | Không - Kích thước ban đầu vẫn còn |
yêu cầu kết xuất | sơn |
màn biểu diễn | hợp lý |
Khung hoạt hình có thể? | không |
Các sự kiện được kích hoạt khi ẩn? | không |
5. prefers-reduced-motion
4
Hidden content
Thuộc tính prefers-reduced-motion
4 có thể được đặt thành prefers-reduced-motion
6 hoặc prefers-reduced-motion
7 để hiển thị và ẩn một phần tử:
[hidden] {
display: none;
}
Xem Bút ẩn với khả năng hiển thị: ẩn bởi SitePoint [@SitePoint] trên Codepen.
Không gian được sử dụng bởi phần tử vẫn ở vị trí trừ khi giá trị prefers-reduced-motion
8 được sử dụng.
Xuất sắc
Nội dung không đọc
hide with position: absolute by SitePoint [@SitePoint]
on CodePen.
Hỗ trợ trình duyệt | Không, trừ khi prefers-reduced-motion 8 được sử dụng |
khả năng tiếp cận | thành phần, trừ khi prefers-reduced-motion 8 được sử dụng |
Bố cục bị ảnh hưởng? | Không - Kích thước ban đầu vẫn còn |
yêu cầu kết xuất | sơn |
màn biểu diễn | hợp lý |
Khung hoạt hình có thể? | Vâng, trong các trình duyệt hiện đại |
Các sự kiện được kích hoạt khi ẩn? | không |
5. prefers-reduced-motion
4
Thuộc tính prefers-reduced-motion
4 có thể được đặt thành prefers-reduced-motion
6 hoặc prefers-reduced-motion
7 để hiển thị và ẩn một phần tử:
Xem Bút ẩn với khả năng hiển thị: ẩn bởi SitePoint [@SitePoint] trên Codepen.
hide with an overlay by SitePoint [@SitePoint]
on CodePen.
Không gian được sử dụng bởi phần tử vẫn ở vị trí trừ khi giá trị prefers-reduced-motion
8 được sử dụng.
Hỗ trợ trình duyệt | Chỉ dành cho các trình duyệt hiện đại |
khả năng tiếp cận | thành phần, trừ khi prefers-reduced-motion 8 được sử dụng |
Bố cục bị ảnh hưởng? | tốt |
yêu cầu kết xuất | sơn |
màn biểu diễn | hợp lý |
Khung hoạt hình có thể? | Không - Kích thước ban đầu vẫn còn |
Các sự kiện được kích hoạt khi ẩn? | không |
5. prefers-reduced-motion
4
Thuộc tính prefers-reduced-motion
4 có thể được đặt thành prefers-reduced-motion
6 hoặc prefers-reduced-motion
7 để hiển thị và ẩn một phần tử:
Xem Bút ẩn với khả năng hiển thị: ẩn bởi SitePoint [@SitePoint] trên Codepen.
hide with width or height by SitePoint [@SitePoint]
on CodePen.
Không gian được sử dụng bởi phần tử vẫn ở vị trí trừ khi giá trị prefers-reduced-motion
8 được sử dụng.
Hỗ trợ trình duyệt | Chỉ dành cho các trình duyệt hiện đại |
khả năng tiếp cận | thành phần, trừ khi prefers-reduced-motion 8 được sử dụng |
Bố cục bị ảnh hưởng? | Không - Kích thước ban đầu vẫn còn |
yêu cầu kết xuất | sơn |
màn biểu diễn | hợp lý |
Khung hoạt hình có thể? | Không - Kích thước ban đầu vẫn còn |
Các sự kiện được kích hoạt khi ẩn? | không |
5. prefers-reduced-motion
4
Thuộc tính prefers-reduced-motion
4 có thể được đặt thành prefers-reduced-motion
6 hoặc prefers-reduced-motion
7 để hiển thị và ẩn một phần tử: