[英]Responsive menu issues
(首先,如果我的英语有时很糟糕,我会道歉,我是法国人,所以详细解释一切都很难)
我正在个人网站上工作,但我的响应式导航问题出了问题。
我对1024px以下的屏幕尺寸进行了媒体查询。
当我高于1024px时,我的常规导航栏有一个列表。 当我在1024px以下时,我看到了出现的小菜单标识,上面的点击事件使整个菜单显示并消失。
但问题是如果我的菜单关闭并且我将窗口扩展到1024像素以上,则列表不可见,我不知道如何处理该问题。
这是我的代码:
<nav class="fixed_nav">
<div id="nav_left">
<img id="logo_nav" src="img/mini_trombi.png" alt="logo"/>
<p id="txt_nav">123</p>
</div>
<ul class="topnav">
<div id="show_n_hide_nav" class="responsive_link_bg">
<li><a id="top_nav_link" class="nav_links" href="#">ITEM 1</a></li>
<hr class="responsive_separator">
<li><a class="nav_links" href="#">ITEM 2</a></li>
<hr class="responsive_separator">
<li><a class="nav_links" href="#">ITEM 3</a></li>
</div>
<li class="icon">
<a div id="button_nav" class="menu_icon" href="javascript:void(0);">☰</a>
</li>
</ul>
</nav>
Jquery点击:
$(function(){
$("#button_nav").click(function () {
if(!$("#show_n_hide_nav").is(":visible")){
$("#show_n_hide_nav").slideDown("slow");
} else {
$("#show_n_hide_nav").slideUp("slow");
}
});
});
在我的CSS中,我将原始列表隐藏在1024像素以下,并在用户点击菜单徽标时在jquery的帮助下显示它。
再次,抱歉,如果这很难理解。
解决无效的HTML后,您可以尝试这样做:
问题是来自Jquery的slideUp/Down
函数将display
属性内联到元素本身,然后当您slideUp
并调整浏览器大小时,元素仍然slideUp
联样式隐藏:
<li id="show_n_hide_nav" class="responsive_link_bg" style="display: none;">
你可以解决它添加这个mediaquerie强制元素块超过1024
:
@media (min-width:1025px) {
#show_n_hide_nav {
display: block !important;
}
}
您最好切换类并添加css过渡以执行幻灯片效果,如果您高于1024,则忽略show
类。
$("#button_nav").click(function () {
$("#show_n_hide_nav").toggleClass("show");
});
如果你仍然想使用slideDown()
/ slideUp()
,你必须绑定$(window).resize()
事件并检查窗口是否高于/低于1024px。
$(function(){
$("#button_nav").click(function () {
if(!$("#show_n_hide_nav").is(":visible")){
$("#show_n_hide_nav").slideDown("slow");
} else {
$("#show_n_hide_nav").slideUp("slow");
}
});
});
$(window).resize(function(){
if($(window).width() > 1024){
$("#show_n_hide_nav").show();
}
});
在窗口调整大小时,您必须检查窗口大小并显示导航。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.