display:none
полностью скроет элемент, как если бы его ширина и высота были равны нулюvisibility:hidden
, с другой стороны, скроет элемент, но сохранит в документе прямоугольник исходной ширины и высоты элемента.
Есть ли способ с помощью чистого CSS скрыть элемент так, чтобы он занимал нулевую высоту, но имел первоначальную ширину? Установка его высоты на ноль не работает, потому что я не знаю, на какую высоту установить элемент, когда я хочу показать его снова.
В частности, я хочу добиться следующего:
#top ul {take up zero height but original width}
#top:hover ul {restore original dimensions}
Изменить: решено! Идея состоит в том, чтобы установить height:auto
для восстановления исходной высоты.
См. здесь http://jsfiddle.net/yP59s/ полную версию или здесь css:
ul {margin:0px}
#top {border:1px solid}
#top ul {height:0px;overflow:hidden}
#top:hover ul {height:auto;}
и html:
<div id="top">
<h1>foobar</h1>
<ul>
<li>foo</li>
<li>bar</li>
</ul>
</div>
blubber
ul
внутри#top
- так что, пока все, что находится в#top
, не изменяется, все в порядке - person josch   schedule 22.05.2013