display:none
sẽ hoàn toàn che giấu một yếu tố như thể nó bây giờ đã có một chiều rộng và chiều cao của zerovisibility:hidden
mặt khác sẽ giấu một yếu tố nhưng đặt hình chữ nhật chiều rộng và chiều cao ban đầu của phần tử trong tài liệu.
Có cách nào thông qua CSS tinh khiết, để ẩn phần tử sao cho nó chiếm không cao nhưng chiều rộng ban đầu của nó không? Đặt chiều cao của nó thành 0 không hoạt động bởi vì tôi không biết chiều cao nào để đặt thành phần một khi tôi muốn hiển thị lại nó.CSS: ẩn yếu tố nhưng giữ chiều rộng (và không phải chiều cao)
Cụ thể: Tôi muốn đạt được như sau:
#top ul {take up zero height but original width}
#top:hover ul {restore original dimensions}
Edit: giải quyết! Ý tưởng là đặt height:auto
để khôi phục chiều cao ban đầu.
Xem ở đây http://jsfiddle.net/yP59s/ cho phiên bản đầy đủ hoặc ở đây css:
ul {margin:0px}
#top {border:1px solid}
#top ul {height:0px;overflow:hidden}
#top:hover ul {height:auto;}
và html:
<div id="top">
<h1>foobar</h1>
<ul>
<li>foo</li>
<li>bar</li>
</ul>
</div>
blubber
Chỉ cần thiết lập chiều cao: tự động khi bạn muốn 'khôi phục' chiều cao. – powerbuoy
Tôi sẽ không khuyên bạn nên sử dụng "hàng đầu" làm ID phần tử, đây là từ dành riêng. –
Điều này không thực sự trả lời câu hỏi của bạn, nhưng bạn có thể muốn sử dụng ** chiều cao ** nhỏ (ví dụ: 1px hoặc 2px) thay vì 0. Nếu không, với chiều cao là 0, sẽ không có diện tích bề mặt trên đó để di chuột. – Sildoreth