我正在构建一个具有顶部导航栏的响应式网站。当窗口小于919px时,条形消失,出现MENU按钮(通常通过{display: none;}
隐藏)。点击之后,它会打开一个下拉菜单与关闭下拉并带回MENU按钮十字:避免jQuery在响应式导航菜单中覆盖CSS
<script>
function myFunction() {
$(document).ready(function(){
$(".icon").click(function(){
$(".icon").hide();
$("#dropdown").show();
});
});
}
</script>
<script>
function myFunction2() {
$(document).ready(function(){
$("#cross").click(function(){
$("#dropdown").hide();
$(".icon").show();
});
});
}
</script>
这一切工作正常的网站的小版本。但是,只要我点击了菜单按钮至少一次,并将网站重新调整到大于919像素,按钮或下拉菜单(取决于打开的任何一个)不会消失,除非我刷新页。
据我所知,jQuery的.show()
从某种程度上覆盖了我的CSS中的{display: none;}
,但我无法弄清楚如何防止它。我会非常感谢任何关于如何解决这个问题的想法!我是新手,很高兴能学会解决这个问题。
编辑
$(document).ready(function(){
$("#iconmenulink").click(function(){
\t \t $("#iconmenu").addClass("dropdownnav_hidden");
\t \t $("#dropdown").addClass("dropdownnav_shown");
});
});
$(document).ready(function(){
$("#cross").click(function(){
\t \t $("#dropdown").addClass("dropdownnav_hidden");
\t \t $("#iconmenu").addClass("dropdownnav_shown");
});
});
.dropdownnav_shown {
display:block;
position: absolute;
right: 28px;
top:29px;
float:right;
background-color:white;
border: 2px solid;
border-color:#8A2BE2;
text-decoration: none;
padding:0;
}
.dropdownnav_hidden {
display:none;
}
.dropdownnav_shown ul {
\t list-style-type: none;
transition: 0.3s;
font-family: 'Karla', sans-serif;
\t font-weight: bold;
\t font-size: 16px;
\t color: black;
\t padding-left:20px;
\t padding-right:10px;
\t line-height:150%;
\t margin-top:5px;
\t margin-bottom:10px;
}
.dropdownnav_shown ul li a {
text-decoration: none;
\t color:black;
\t margin-right:10px;
\t }
.dropdownnav_shown ul li a:visited {color: black;}
.dropdownnav_shown ul li a:hover {color:#8A2BE2;}
#iconmenu a {
\t line-height:100%;
\t padding:0;
\t vertical-align:bottom;
}
#cross {font-size: 22px;
\t \t text-align:right;
\t \t margin-bottom:5px;
}
#cross a {color: #8A2BE2;
}
<div class="dropdownnav_shown" id="iconmenu">
\t <ul>
\t <li id="iconmenulink"> <a> MENU </a>
<li>
</ul>
</div>
<div class ="dropdownnav_hidden" id="dropdown">
\t <ul>
\t \t <li id="cross"> <a href="#cross" onclick="myFunction2()"> × </a></li>
\t \t \t <li><a href="#recordings">RECORDINGS</a></li>
\t \t \t <li><a href="#news">NEWS</a></li>
<li><a href="#cv">CV</a></li>
\t \t \t <li><a href="mailto:[email protected]">CONTACT</a></li>
<li><a href="https://facebook.com/123" target=_blank>FB</a></li>
</ul>
</div>
使用[CSS媒体查询(http://www.w3schools.com/css/css_rwd_mediaqueries.asp)! –
jQuery不会覆盖。它只是变化。在你的情况下,它将'display:none'内联应用于元素。如果你的CSS比这个更强大(比如说你在你的CSS中加上'!important'),它会更强大,但是'$ .hide()'方法不会工作,因为只有最强的CSS规则适用。它在技术上是可行的(元素会得到'display:none'的内联属性),但它不适用。你可能需要做的是创建一个函数,可以决定该元素是否应该显示,并在'resize'事件页面上运行该函数。 –