css - 使用 CSS 在响应式导航菜单中隐藏/显示子菜单项

标签 css mobile menu navigation

我创建了一个仅在手机上可见的菜单。

我已经使用 CSS 成功地创建了一个显示/隐藏导航菜单。您可以在 http://js.co.nz/mobile-test.php 上看到实际效果(就我的开发而言,目前仅在手机上以纵向 View 显示)。

我也希望能够显示/隐藏子菜单项(因为导航菜单很长!)。例如,如果用户点击“按类型浏览”,我想要子菜单:椅子; table ;镜子等出现。

当前的 html 看起来像这样:

<nav id="responsivenav" role="navigation">
<a href="#responsivenav" title="Show navigation">Show navigation</a>
<a href="#" title="Hide navigation">Hide navigation</a>
<ul>
    <li><a href="../index.php">HOME</a></li>
    <li><a href="../all-stock.php">BROWSE ALL STOCK</a></li>
    <li><a href="#">BROWSE BY TYPE</a>
        <ul>
            <li><a href="../antique-chairs.php">Antique chairs</a></li>
            <li><a href="../dining-tables.php">Dining tables</a></li>
            <li><a href="../antique-mirrors.php">Antique mirrors</a><li>
        </ul>
    </li>     
    <li><a href="#">BROWSE BY CATEGORY</a></li>    
    <li><a href="#">BROWSE BY ROOM</a></li>    
    <li><a href="../reduced-items.php">REDUCED ITEMS</a></li>
    <li><a href="../opening-hours.php">OPENING HOURS</a></li>
    <li><a href="../news.php">NEWS</a></li>
    <li><a href="../find-us.php">FIND US</a></li>
    <li><a href="../about-john-stephens.php">ABOUT US</a></li>
    <li><a href="../brochures.php">BROCHURES</a></li>
    <li><a href="../period-styles.php">PERIOD STYLES</a></li>       
</ul>
<div class="clear"></div>
</nav>

CSS 看起来像这样:

#responsivenav {display:block;}

#responsivenav > a { }
#responsivenav:not( :target ) > a:first-of-type,
#responsivenav:target > a:last-of-type {
    display: block;
    height:50px;
    line-height:50px;
    font-size:15px;
    margin-bottom:0;
    padding:0;
    text-indent:100px;
    text-decoration:none;
    color:#fff;
    font-weight:bold;
    text-transform:uppercase;
    background: #393b3c url(../images/wd/mobile-menu-icon.jpg) no-repeat 40px center; }

/* first level */
#responsivenav > ul {
    height: auto;
    display: none;
    border-bottom:5px solid #fff;}

#responsivenav:target > ul {
    display: block;
    list-style:none;
    padding:0;
    margin:0;}

#responsivenav > ul > li {
    width: 100%;
    float: none;
    display:block;
    height:60px;
    line-height:60px;
    font-size:15px;
    text-indent:40px;
    border-top: 1px solid #eee;}

#responsivenav > ul > li a {
    text-decoration:none;
    color:#393b3c;}

/* second level */
#responsivenav > ul > li > ul {  
    display: none;
}
#responsivenav > ul > li:hover > ul {
    display:block;
}

我知道我做错的是第二层菜单。我尝试过各种方法,例如向子菜单添加类,使用 left:-9999px 而不是 display:none;等等,但似乎还没有任何效果。

求助!我相信这应该如此简单!

最佳答案

只需将 #responsivenav > ul > li 的属性 height: 60px 替换为 min-height: 60px(PhonePtest 中的第 138 行) .css 文件)。

目前,您的代码使子菜单出现在悬停时,如果在移动设备上单击则可以。这就是导航菜单在点击时隐藏的原因。为防止这种情况,您可以更换

<a href="#">BROWSE BY TYPE</a>

<a href="javascript:void(0)">BROWSE BY TYPE</a>

您可以对其他菜单元素执行相同的操作。

关于css - 使用 CSS 在响应式导航菜单中隐藏/显示子菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30717066/

相关文章:

html - 房地产网站元素 : No Space Between Columns 中的 Bootstrap 问题

javascript - IE7 忽略我的 .js css 规则 - CSS/Javascript 问题?

html - 移动网络应用程序和离线访问音频文件

css - 修复了 IE9 下的菜单中断

html - CSS/HTML - Firefox 上的填充问题和样式覆盖

mobile - 从 J2ME 中的文本字段解析 int 或 double

css - 确定移动浏览器是否支持 CSS 和 javascript

javascript - joomla 网站中的粘性菜单不起作用

javascript - js 中的响应式切换菜单(适用于移动设备)可以在本地工作,但不能在线工作

html - 将鼠标悬停在元素上时,CSS Cursor 属性不会更改光标