【问题标题】:Dropdown menu working differently in Firefox下拉菜单在 Firefox 中的工作方式不同
【发布时间】:2014-06-24 21:07:26
【问题描述】:

我有一个下拉菜单,它在 Chrome 中完全符合预期。

下拉列表的位置是绝对的,父级的位置是相对的。但是,它在 Firefox 中的呈现方式似乎有所不同。下拉菜单似乎与ul 元素相关,而不是li 元素

此下拉菜单使用 javascript 激活,点击时添加 display:block 任何想法为什么?

我没有使用桌子。

小提琴 http://jsfiddle.net/eyJ8e/1/

HTML

<div id="menubar">
    <div class="container"> 

        <ul class="menu-container title" style="float:left;">
            <li><a href="http://thehubwire.com/radioactive/index.php?module=Products&amp;view=latest">NEW</a>

            </li>
            <li class="dropdown">   <a class="click-dropdown" href="#">MEN</a><span class="caret"></span>

                <ul class="dropdown-menu" style="display:block">    <a href="#"><li>Jeans</li></a>
    <a href="#"><li>Pants</li></a>
    <a href="#"><li>Shirts</li></a>
    <a href="#"><li>Shorts</li></a>
    <a href="#"><li>Tees</li></a>

                </ul>
            </li>

        </ul>
    </div>
</div>

CSS

body
{
    width: 100%;
    margin: 0px;
    padding: 0px;
    font-family: Calibri, Candara, Segoe, "Segoe UI", Optima, Arial, sans-serif;
    font-size: 10pt;
    /* background-color: #f0f0f0; */
}
.title{
    /*font-family: Impact, Charcoal, sans-serif;*/
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    text-transform: uppercase;
    font-family: SourceSans Pro Bold;
}
.container{
    width:1024px;
    margin:0 auto;
}
a, a:active, a:visited
{
    color: #000000;
    text-decoration: none;
    outline: none;
}
a:hover
{
    text-decoration: none;
}


#menubar {
    width:100%;
    min-width:1000px;
    height:75px;
    background-color:#000;
    line-height: 75px;
    color:white;
}
#menubar .brand{
    display: block;
    height:75px;
    width: 120px;
    margin-right:30px;
    margin-top:3px;
    float:left;
    color:white!important;
}
#menubar .menu-container{
    list-style:none;
    margin:0px;
}
#menubar .menu-container li:first{
    border-left: 1px solid grey;
}
#menubar .menu-container li{
    position:relative;
    display:inline;
    padding:0px 15px;
    font-size: 14px;
    text-transform: uppercase;
    border-right: 1px solid grey;
    height:75px;
}
#menubar .menu-container > li.shopping-bag-wrapper:hover{
    text-decoration: none;
}
#menubar .menu-container li.shopping-bag-wrapper{
    border-right:none;
    padding-right:0px;
}
#menubar .authentication-fb-form{
    display:inline;
}
#menubar .menu-container li a{
    color: white!important;
}
#menubar .menu-container li:last-child{
    border:none;
}
#menubar .menu-container .dropdown ul.dropdown-menu > li:hover{
    background-color:#555555;
}
#menubar .menu-container ul.dropdown-menu{
    border:none;
    position:absolute;
    z-index:1000;
    background-color:black;
    display:none;
    margin-top:-20px;
}
#menubar .menu-container .dropdown-menu li{
    display:block;
    min-width:150px;
    max-width: 250px;
    height:auto;
}
#menubar .menu-container .dropdown-menu a{
    display:block;
    line-height:25px;
    padding: 5px 0px;
    height:auto;
    border: 2px solid white;
    border-bottom:0px;
}
#menubar .menu-container .dropdown-menu a:last-child{
    border: 2px solid white;
}

ul{
    list-style: none;
    margin:0px;
    padding:0px;
}


.inline-block{
    display: inline-block;
}
.pull-right{
    float:right!important;
}
.caret{
    display: inline-block;
    width: 0;
    height: 0;
    margin-left: 2px;
    vertical-align: middle;
    border-top: 4px solid;
    border-right: 4px solid transparent;
    border-left: 4px solid transparent;
}

【问题讨论】:

  • 要开始更改这个无效的 html:&lt;a href="#"&gt;&lt;li&gt;Pants&lt;/li&gt;&lt;/a&gt; 这必须是 &lt;li&gt;&lt;a href="#"&gt;Pants&lt;/a&gt;&lt;/li&gt;
  • @NicoO 试过了。没用。
  • 是的,链接应该在inside li,而不是相反。

标签: html css drop-down-menu


【解决方案1】:

这里有几个问题。首先,您将&lt;li&gt; 嵌套在无效的&lt;a&gt; 中。你需要解决这个问题:

<ul class="dropdown-menu">
    <li><a href="#">Jeans</a></li>
    <li><a href="#">Pants</a></li>
    <li><a href="#">Shirts</a></li>
    <li><a href="#">Shorts</a></li>
    <li><a href="#">Tees</a></li>
</ul>

其次,您实际上并没有给嵌套的&lt;ul&gt; FF 似乎需要的左侧位置:

#menubar .menu-container ul.dropdown-menu{ 
    left: 0;
}

然后,您还需要将边框从 &lt;a&gt; 移动到 &lt;li&gt;,以保持进行这些更改之前的样式。

DEMO

【讨论】:

    【解决方案2】:

    只需将 left:0 放入#menubar

    .menu-container ul.dropdown-menu{left:0}

    参考http://jsfiddle.net/aashi/eyJ8e/8/

    【讨论】:

    【解决方案3】:

    对于下拉菜单,您可以查看此演示链接:

    html部分:

    <ul class="menubar">
        <li><a href="#">NEW</a></li>
        <li><a href="#">MENU</a>
            <ul class="dropmenu">
                <li><a href="#">JEANS</a></li>
                <li><a href="#">PANTS</a></li>
                <li><a href="#">SHIRTS</a></li>
                <li><a href="#">SHORTS</a></li>
                <li><a href="#">TEES</a></li>
            </ul>
        </li>
    </ul>
    

    CSS 部分:

    *{ margin:0; padding:0;}
    ul.menubar{
        margin:0 auto;
        width:100%;
        background:#000;
        height:40px;
        display:block;
    }
    ul.menubar li{
        list-style-type:none;
        display:inline-block;
        float:left;
        position:relative;
    }
    ul.menubar li a{
        display:block;
        text-decoration:none;
        color:#fff;
        padding:10px;
    }
    ul.menubar li ul.dropmenu{
        position:absolute;
        width:120px;
        padding:10px 10px 10px 0;
        display:none;
    }
    ul.menubar li:hover ul.dropmenu{
        display:block;
        top:30px;
    }
    ul.menubar li:hover ul.dropmenu li{
        background:#222;
        width:100%;
    }
    ul.menubar li:hover ul.dropmenu li a:hover{
        background:#333;
    }
    

    这里是 JS 小提琴:

    http://jsfiddle.net/ameysawant/LPdqV/1/

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签