Ответ 1
Почему бы просто не использовать display: none
?
Возможно, я неправильно понял, так как вы сказали, что у вас есть div
с nav
внутри, но я не вижу этого в вашем примере html.
Я думаю, вы хотите показать/скрыть навигацию. Это можно сделать, добавив это правило css:
nav#menu-nav.hidden {
display: none;
}
и javascript
document.getElementById("toggle").onclick = function () {
document.getElementById("menu-nav").classList.toggle("hidden");
}
Если вы хотите оживить высоту, вы можете сделать это:
/* new rules that I added */
nav#menu-nav {
line-height: 1em;
-webkit-transition: line-height .2s, background-color .2s;
}
nav#menu-nav a {
display: inline-block;
overflow: hidden;
height: 1em;
-webkit-transition: height .2s;
}
nav#menu-nav.hidden {
line-height: 0em;
background-color: transparent;
}
nav#menu-nav.hidden a {
height: 0;
}
Трюк заключается в использовании overflow: hidden; display:inline-block
для ячеек таблицы вместо display:table-cell
.
Таким образом, изменение высоты и высоты линии до нуля отлично работает.
Тем не менее, по-прежнему существует некоторая высота (около 3 пикселей), поэтому я решил анимировать фоновый цвет и прозрачным. Если вы прокомментируете ту часть, которая оживляет цвет фона, вы поймете, что я имею в виду.