簡體   English   中英

CSS下拉菜單跨瀏覽器

[英]CSS dropdown menu cross-browser

我的CSS下拉菜單在不同的瀏覽器中表現得很奇怪。 它在Chrome(Windows)中運行良好,但在Firefox和Android中存在問題。

Firefox:下拉菜單在菜單項的右側而不是下方打開。 另外,由於我在'#naviagtion ul li ul'中使用了填充以防止其與'#navigation ul li'一起剪切,因此下拉菜單與菜單項不一致。 刪除填充會使菜單項變薄,我想不出任何方法來修復它。

Android:顯示下拉菜單時,下拉菜單中的元素之間存在空白,我不知道這些元素來自何處。 我知道關於Android如何處理的想法,所以我不知道它是否正常或代碼是否正確。

這是代碼: https : //jsfiddle.net/5rd2czfL/

的HTML

<div id="navigation">
<ul>
    <li><a href="#">MENU L1</a></li>
    <li><a>MENU L2</a>
        <ul>
            <li><a href="#">Sub 1</a></li>
            <li><a href="#">Sub 2</a></li>
        </ul>
    </li>
    <li><a>MENU L3</a>
        <ul>
            <li><a href="#">Very long Sub 1</a></li>
            <li><a href="#">Very long Sub 2</a></li>
            <li><a href="#">Very long Sub 3</a></li>
        </ul>
    </li>
    <li><a href="#">MENU L4</a>
    </li>
    <li><a href="">MENU L5</a></li>

    <li class="menu-right"><a href="'">MENU R1</a></li>
    <li class="menu-right"><a href="#">MENU R2</a></li>
</ul>

的CSS

#navigation{
    max-width: 1180px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    color: #0000ff;
    width: 100%;
    color: #000000;
    padding: 10px;
    margin: 5px 0px;
    letter-spacing: 0.1em;
}

#navigation ul{
    padding: 0px;
    margin: 0px;
}

#navigation ul:after {
    clear: both;
    content: " ";
    display: block;
}

#navigation ul li{
    list-style: none;
    float: left;
    padding: 5px 0px;

    -webkit-transition:color 0.2s linear, background 0.2s linear;   
    -moz-transition:color 0.2s linear, background 0.2s linear;  
    -o-transition:color 0.2s linear, background 0.2s linear;    
    transition:color 0.2s linear, background 0.2s linear;
}

#navigation ul li.menu-right{
    float: right;
}

#navigation ul li a{
    text-decoration: none;
    padding: 0px 15px;
    color: #000000;
    cursor: pointer;
}

#navigation ul li ul{
    min-width: 50px;
    position: absolute;
    display: inline;
    visibility: hidden;
    padding-top: 5px;
    z-index: 1;
}

#navigation ul li:hover > ul{
    visibility: visible;
}

#navigation ul li ul li{
    float: none;
}

#navigation ul li:hover, #navigation ul li:hover > ul li{
    color: #ffffff;
    background-color: #555555;
}

#navigation ul li:hover a, #navigation ul li:hover > ul li a{
    color: #ffffff;
}

#navigation ul li ul li:hover{
    background-color: #777777;
}

問題是,您擁有絕對定位的元素,而沒有提及任何位置。 我添加了position:relative對於父級li並為子元素提供了適當的位置,如下所示。

 #navigation ul li{position:relative;}
 #navigation ul li ul{
  min-width: 50px;
  white-space:nowrap;
  position: absolute;
  left:0;
  top:20px;
  display: inline;
  visibility: hidden;
  padding-top: 5px;
  z-index: 1;
}

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM