【问题标题】:Drop down menu not clearing properly下拉菜单未正确清除
【发布时间】:2023-03-05 04:20:01
【问题描述】:

我正在尝试构建一个非常简单的下拉菜单。我希望所有 li 的高度都为 60 像素。我已经为下拉菜单使用了一些不同的教程,但我一直遇到同样的问题。我无法让“Link 1”完全清除“Drop 1”。它会清除锚点,但不会清除 li 本身。

http://jsfiddle.net/ZFWBU/12/

    <nav>

    <ul id="nav">

        <li><a href="#">Drop 1</a>

            <ul>
                <li><a href="#">Link 1</a></li>
                <li><a href="#">Link 2</a></li>
                <li><a href="#">Link 3</a></li>
            </ul>

        </li>

        <li><a href="#">Drop 2</a>
            <ul>
                <li><a href="#">Link 1</a></li>
                <li><a href="#">Link 2</a></li>
                <li><a href="#">Link 3</a></li>
            </ul>
        </li>

    </ul>

</nav>

CSS:

a {
    color: #333;
}

nav {
    width: 992px;
    height: 50px;
    margin: 0 auto;

    border: 1px solid #ebebeb;
    background: red;
}

#nav {
    width: 992px;
    margin: 0 auto;
    line-height: 100%;

}

#nav li {
    float: left;
    position: relative;
    list-style: none;
}


/* main level link */
#nav a {
    width: 280px;
    font-weight: bold;
    color: #e7e5e5;
    text-decoration: none;
    display: block;
    padding:  16px 20px;
    margin: 0;

    border: 1px solid white;
}

/* main level link hover */
#nav .current a, #nav li:hover > a {
    background: blue;
}

/* level 2 list */
#nav ul {
    display: none;
    margin: 0;
    padding: 0;
    position: absolute;
    top: 35px;
    left: 0;

    background: #f5f5f5;
}

/* dropdown */
#nav li:hover > ul {
    display: block;
}

#nav ul li {
    float: none;
    margin: 0;
    padding: 0;
}

#nav ul a {
    font-weight: normal;
}

/* clearfix */
#nav:after {
    content: "";
    display: block;
    clear: both;
    visibility: hidden;
    line-height: 0;
    height: 0;
}

#nav {
    display: inline-block;
}

html[xmlns] #nav {
    display: block;
}

* html #nav {
    height: 1%;
}

【问题讨论】:

    标签: html css drop-down-menu navigation


    【解决方案1】:

    您已经在此声明中设置了top 属性,我将其调整为50px,您可以使用see on JSFiddle

    /* level 2 list */
    #nav ul {
        display: none;
        margin: 0;
        padding: 0;
        position: absolute;
        top: 50px;
        left: 0;
        background: #f5f5f5;
    }
    

    正如 pzin 在 cmets 中提到的,您可以通过使用 top: 100% 来减少未来的问题,这样您以后更改大小时就不需要对其进行编辑。

    【讨论】:

    • 无论您将哪个答案标记为已接受,我都建议使用top:100%,因为它更易于处理,并且您的子菜单将始终从li 元素的底部开始。
    • +1 to @pzin on using 100% - 当你将来改变你的尺寸时,它会给你减少一个编辑的价值。
    【解决方案2】:

    更新如下样式,添加margin-top:15px;

    #nav li:hover > ul {
        display: block;
        margin-top: 15px;
    }
    

    【讨论】:

      【解决方案3】:

      更好的解决方案是将顶部位置设置为 li 元素的完整高度,这样如果您以后更改它就不需要编辑它,因为它会自动适应自己:

      #nav ul {
        top: 100%;
        [...]
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-02
        • 2012-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-14
        • 2019-04-30
        相关资源
        最近更新 更多