我正在做响应式设计,当宽度 <= 768px 时,菜单被菜单按钮替换;
目前,当我单击菜单按钮时,我正在使用 jQuery 来更改菜单的高度。
jQuery 添加style="height: 152px;"
到nav
元素中,CSS3transition: height 0.35s ease 0s;
确保它优雅地向下滑动。
这工作正常,直到我在菜单可见时调整窗口大小。当 时width > 768px
,菜单项彼此相邻浮动(因此它们在一行上而不是彼此下方)。
问题是菜单高度仍然是 152px 高,并导致菜单下方有空白区域。
我试图查看是否有一个侦听器可以检测菜单按钮是否变为隐藏(display: none;
),以便我可以删除style
,但我还没有找到任何东西。
我的问题有简单的解决方案吗?任何帮助表示赞赏。
// CSS
.nav-collapse {
overflow: hidden;
transition: height 0.35s ease 0s;
}
@media (max-width: 768px){
.collapse { height:0; }
}
// JS
$('.btn-navbar').click(function(){
var nav = $('.nav-collapse');
if($(nav).hasClass('collapse')){
$(nav).height($(nav).find('ul').height());
$(nav).removeClass('collapse');
} else {
$(nav).attr('style','');
$(nav).addClass('collapse');
}
});
// HTML
<nav class="nav-collapse collapse">
<ul>
<li> menu items </li>
</ul>
</nav>