Các visibility
bất động sản trong CSS có hai chức năng khác nhau. Nó ẩn các hàng và cột của bảng, và nó cũng ẩn một phần tử mà không thay đổi bố cục.
p ( visibility: hidden; ) tr ( visibility: collapse; )
visibility
có bốn giá trị hợp lệ: visible
, hidden
, collapse
, và inherit
. Chúng tôi sẽ đi qua từng người trong số họ để tìm hiểu thêm.
có thể nhìn thấy
Giống như âm thanh, visible
làm cho mọi thứ hiển thị. Không có gì bị ẩn theo mặc định, vì vậy giá trị này không có tác dụng gì trừ khi bạn đã đặt hidden
trên phần tử này hoặc phần tử gốc của phần tử này.
ẩn
Các hidden
giá trị ẩn thứ. Điều này khác với việc sử dụng display: none
, vì hidden
chỉ ẩn các phần tử một cách trực quan. Phần tử vẫn ở đó và vẫn chiếm dung lượng trên trang, nhưng bạn không thể nhìn thấy nó nữa (giống như chuyển độ mờ về 0). Điều thú vị là thuộc tính này không kế thừa theo mặc định. Điều đó có nghĩa là, không giống như các thuộc tính display
hoặc opacity
, bạn có thể tạo một phần tử hidden
và vẫn có một trong các phần tử con của nó visible
như sau:
Lưu ý rằng, trong khi ẩn, phần tử mẹ không kích hoạt :hover
.
sự sụp đổ
Điều này chỉ ảnh hưởng đến các hàng trong bảng ( ), nhóm hàng (như
), cột (
), nhóm cột (
) hoặc các phần tử được tạo theo cách đó thông qua
display
).
Không giống như hidden
, giá trị này ẩn phần tử con của bảng mà không để lại khoảng trống ở vị trí của nó. Nếu được sử dụng ở bất kỳ đâu ngoại trừ phần tử con của bảng, nó hoạt động như thế nào visibility: hidden
.
Có rất nhiều điều kỳ quặc với điều này, thật khó để biết bắt đầu từ đâu. Chỉ như một món khai vị:
- Chrome / Safari sẽ thu gọn một hàng, nhưng không gian mà hàng đó chiếm sẽ vẫn còn. Và nếu các ô của bảng bên trong có đường viền, thì đường viền đó sẽ thu gọn thành một đường viền duy nhất dọc theo cạnh trên cùng.
- Chrome / Safari sẽ không thu gọn một cột hoặc nhóm cột.
- Safari thu gọn một ô trong bảng (sai) nhưng Chrome thì không (đúng).
- Trong bất kỳ trình duyệt nào, nếu một ô nằm trong cột bị thu gọn (cho dù nó có thực sự thu gọn hay không) thì văn bản trong ô đó sẽ không được hiển thị.
- Opera (trước WebKit) sẽ thu gọn tất cả mọi thứ, ngoại trừ một ô trong bảng (đúng như vậy).
Có nhiều hơn nữa, nhưng về cơ bản: không sử dụng cái này bao giờ.
thừa kế
Giá trị mặc định. Điều này chỉ đơn giản là làm cho phần tử kế thừa giá trị của phần tử gốc của nó.
Flexbox
visibility: collapse;
cũng được sử dụng trong Flexbox và được định nghĩa rõ ràng hơn.
Hỗ trợ trình duyệt
Những điều cơ bản, không xem xét tất cả các điều kỳ quặc với sự sụp đổ:
Bất kì | Bất kì | Bất kì | 4+ | 4+ | Bất kì | Bất kì |
IE 7- không hỗ trợ collapse
hoặc inherit
.