我正在構建一個具有頂部導航欄的響應式網站。當窗口小於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'事件頁面上運行該函數。 –