【问题标题】:CSS submenu not displaying under main menuCSS子菜单不显示在主菜单下
【发布时间】:2014-06-30 21:45:46
【问题描述】:

我正在开发一个移动网站。我终于得到了 JS 代码来显示点击而不是悬停的子菜单。现在我无法将子菜单直接定位在主菜单下方。我尽我所能进行了研究,发现我需要将主菜单位置设置为“相对”,将子菜单设置为“绝对”。我一直在兜圈子试图应用它,但没有运气。代码有点乱,请见谅。我只是个菜鸟。

HTML

<html>
<head>

<link rel="stylesheet" href="phone.css">
</head>
<body>

<img class="smlogo" alt="" src="clearlogo123.png">

<div id="menuclick" class="smenu_div">
    <ul>
            <li><a href="#">Menu</a>
</div>
<div id="hiddenMenu" class="smenu_div" style="display: none;">
                <ul>
                    <li><a href="#">1Submenu</a></li>
                    <li><a href="#">2Submenu</a></li>
                </ul>
</div>

            </li>


    </ul>   

<br>



<script>

var hidden = true;
document.getElementById('menuclick').onclick = function () {
    document.getElementById('hiddenMenu').style.display = (hidden) ? 'block' : 'none';
    hidden = !hidden;
};
</script>
</body></html>

CSS

.smenu_div ul
{
    padding:0px;
    margin-top:35px; 
    margin-right:40px;
    font-family:georgia;
    font-size:60px;
    color:#ffffff;
    list-style:none;
    text-indent:15px;
    text-align:center; 
    width:35%;
    float:right;
    overflow:hidden;
    position: relative;
    display: block;
}

.smenu_div ul li
{
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    border-radius: 10px;
    background:#000000;
    line-height:justified;
    border-bottom:1px solid #333;
    margin-top: 10px;
    z-index: 50;
    position:relative;
}
.smenu_div li ul
{ 
position:absolute;
float:right; 
}

.smenu_div ul li a
{
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    border-radius: 10px;
    text-decoration:none;
    color:#ffffff;
    display:block;
    position:relative;
}
.smenu_div ul li a:hover
{
    color:#000000;
    background:#fdff30;
}
.smenu_div ul li#active
{
    position:relative;
    color:#000000;
    background:#fdff30;
}

【问题讨论】:

    标签: javascript html css menu


    【解决方案1】:

    尝试更改您的 HTML,以便您的 div 不会在第一个 li 的中间结束。

    那么如果你直接把一个ID放到隐藏菜单上,你可以使用javascript直接隐藏/显示隐藏菜单

    http://jsbin.com/fexazihe/1/edit?html,css,js,output

    HTML

    <body>
    <img class="smlogo" alt="" src="clearlogo123.png">
    
    <div id="menuclick" class="smenu_div">
        <ul>
          <li>
            <a href="#">Menu</a>
            <ul id='hiddenMenu'>
               <li><a href="#">1Submenu</a></li>
               <li><a href="#">2Submenu</a></li>
             </ul>
            </li>
        </ul>   
    </div>
    </body>
    

    CSS

    .smenu_div ul
    {
        padding:0px;
        margin-top:35px; 
        margin-right:40px;
        font-family:georgia;
        font-size:60px;
        color:#ffffff;
        list-style:none;
        text-indent:15px;
        text-align:center; 
        width:35%;
        overflow:hidden;
        position: relative;
        display: block;
    }
    
    .smenu_div ul li
    {
        -webkit-border-radius: 10px;
        -moz-border-radius: 10px;
        border-radius: 10px;
        background: rgba(0,0,0,0);
        line-height:justified;
        border-bottom:1px solid #333;
        margin-top: 10px;
        z-index: 50;
        position:relative;
    }
    
    
    /* Changed this so that your hidden menu is hidden by default */
    .smenu_div li ul
    { 
      display: none;
      position: relative;
      width: 100%;
      background: transparent;
    }
    
    .smenu_div ul li a
    {
        -webkit-border-radius: 10px;
        -moz-border-radius: 10px;
        border-radius: 10px;
        text-decoration:none;
        color:#ffffff;
      background: #000000;
        display:block;
        position:relative;
    }
    .smenu_div ul li a:hover
    {
        color:#000000;
        background:#fdff30;
    }
    .smenu_div ul li#active
    {
        position:relative;
        color:#000000;
        background:#fdff30;
    }
    

    JS

    <script>
        var hidden = true;
        document.getElementById('menuclick').onclick = function () {
            document.getElementById('hiddenMenu').style.display = (hidden) ? 'block' : 'none';
            hidden = !hidden;
        };
    </script>
    

    【讨论】:

    • 谢谢。如果没有像你这样的人的帮助,我可能永远做不成任何事情。我很感激。再次感谢您抽出宝贵时间帮助学习“程序员”。
    猜你喜欢
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    相关资源
    最近更新 更多