0
我已經將水平導航轉換爲垂直響應導航,但是當您通過klicking打開響應導航頂層(ul li)時在'菜單'上,ul li的高度太高(參見頂層下面的灰色區域),並且下一層的最後菜單點消失 (菜單1應該有7個子級菜單點,菜單2應該有5和菜單3應該有3)。水平導航到垂直響應導航,響應導航頂端水平太高,上一個水平導航消失
我想通了這是具有與桌面版本以下CSS做的,但不知道如何擺脫這個問題:
ul.topNav li ul {
display: none;
**position: absolute;
top: 2.3rem;**
background-color: rgb(245, 245, 245);
}
嘗試了很多,但沒有解決。在下面你可以找到所有的代碼和鏈接,讓它運行並查看結果。不要忘了調整窗口大小在320到979像素之間,並可能重新加載以確保它可以正常工作。
function init() {
var ww = document.body.clientWidth;
var mobileLayout = ww <= 1024;
if (mobileLayout) {
/* show topNav */
$("#menuIcon").click(function() {
$("#topNavResp").fadeToggle(100);
});
/* show topNav second level and close all others */
$('.topNavLi').on('click', function (event) {
event.preventDefault();
$(this).next('ul').slideToggle();
$(this).parent().siblings().children().next().slideUp();
return false;
});
} else {
alert('please reduce/shrink your window and reload');
}
}
html {
font-size: 15px;
background-color: rgba(227, 227, 227, 1);
}
ol, ul, li {
list-style-type: none;
}
a {
text-decoration: none;
}
/* ------------------- TOP NAV BAR ------------------------------------------ */
#headerNavBar {
width: 100%;
height: 2.4rem;
line-height: 2.4rem;
display: block;
background-color: #D3D3D3;
*zoom: 1;
}
ul.topNav {
float: right;
width: 75%;
height: 2.3rem;
position: relative;
z-index: 10;
}
ul.topNav > li {
line-height: 2.3rem;
float: left;
width: auto;
position: relative;
}
ul.topNav li a.topNavLi {
height: 2.3rem;
float: left;
padding: 0 10.3%;
}
ul.topNav li a:hover.topNavLi,
ul.topNav li:active a.topNavLi,
ul.topNav li:hover a.topNavLi {
border-bottom: 0.13rem solid #e23427;
color: #e23427;
}
/* ------------------- TOP NAV 2nd LEVEL------------------------------------- */
ul.topNav li ul {
display: none;
position: absolute;
top: 2.3rem;
background-color: rgb(245, 245, 245);
}
ul.topNav li ul li {
float: none;
display: block;
}
ul.topNav li ul li a {
display: block;
color: #231f20;
}
ul.topNav li ul li:hover,
ul.topNav li ul li:active {
background-color: rgb(227, 33, 33);
}
ul.topNav li ul li:hover a,
ul.topNav li ul li:active a {
color: #fff;
}
/**************************************************************************** */
/**************************************************************************** */
@media only screen and (min-width: 320px) and (max-width: 979px)
{
body {
width: 95%;
margin: 0 auto;
}
#wrapper {
width: 100%;
}
#pageHead {
width: 100%;
}
/* ------------------- NAVI Responsive --------------------------------- */
#headerNavBar {
height: 2.9rem;
line-height: 2.9rem;
position: relative;
}
#menuIcon {
display: block;
position: absolute;
top: 0;
right: 0;
padding: 0.3rem 1rem 0 0;
}
ul.topNav {
display: none;
float: none;
width: 100%;
position: absolute;
top: 2.9rem;
}
.topNav > li {
width: 100% !important;
background-color: #D3D3D3;
display: block;
position: static;
border-bottom: 1px solid #FFF;
}
ul#topNavResp.topNav li a.topNavLi,
ul#topNavResp.topNav li ul li a {
width: 100%;
}
ul.topNav li a:hover.topNavLi,
ul.topNav li:active a.topNavLi,
ul.topNav li:hover a.topNavLi {
border: none;
}
/* ------------------- TOP NAV Responsive 2nd LEVEL ------------------------- */
ul.topNav li ul {
display: none;
width: 100%;
position: static;
padding-left: 10.3%;
background-color: rgb(245, 245, 245);
}
ul.topNav li ul li {
width: 100%;
}
}
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body onload="init();">
<div id="wrapper">
<div id="pageHead">
<nav id="headerNavBar">
<a href="#" id="menuIcon">MENU</a>
<ul class="topNav" id="topNavResp">
<li>
<a href="#" class="topNavLi">Menu 1</a>
<ul>
<li><a href="#">11111</a></li>
<li><a href="#">22222</a></li>
<li><a href="#">33333</a></li>
<li><a href="#">44444</a></li>
<li><a href="#">55555</a></li>
<li><a href="#">66666</a></li>
<li><a href="#">77777</a></li>
</ul>
</li>
<li>
<a href="#" class="topNavLi">Menu 2</a>
<ul>
<li><a href="#">11111</a></li>
<li><a href="#">22222</a></li>
<li><a href="#">33333</a></li>
<li><a href="#">44444</a></li>
<li><a href="#">55555</a></li>
</ul>
</li>
<li>
<a href="#" class="topNavLi">Menu 3</a>
<ul>
<li><a href="#">11111</a></li>
<li><a href="#">22222</a></li>
<li><a href="#">33333</a></li>
</ul>
</li>
</ul>
</nav><!-- end topNav -->
</div>
</div><!-- end wrapper -->
</body>
</html>
道格拉斯嗨! :-)謝謝你的提示!它解決了這個問題。我添加了一些更多的顏色(如原來的),以顯示我們現在存在的問題:現在第一層看起來幾乎是正確的 - 當「活動」時它仍然「丟失」背景顏色 - 但是第一層層條目太高,覆蓋/覆蓋第一級導航條目。 –
解決了一件事:現在第一個高級菜單條目太高,覆蓋/覆蓋了第一級導航條目。我添加了以下內容:ul.topNav li ul li {* new */height:auto; /* new */overflow:hidden; }但是我怎樣才能保持一級菜單條目的背景顏色? –
嗨,第一個問題可以通過float:none來解決。 ul#topNavResp.topNav li a.topNavLi,ul#topNavResp.topNav li ul li a {'float:none'}。但是,爲了保持背景沒有:懸停,這將是必要的使用像輸入收音機或複選框,(沒有JS)。參見:http://codepen.io/CesarGabriel/pen/tLDwH –