html - CSS水平菜单使用 float 和内联显示给包含元素一个高度

标签 html css

两个示例的 HTML:

<div id="nav">
    <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">Services</a></li>
        <li><a href="#">About Us</a></li>
        <li><a href="#">Contact Us</a></li>
    </ul>
</div>

只有 display: inline 的 CSS:

ul {
    background-color: cyan;
    padding-left: 0;
    margin-left: 0;
    float: left;
    width: 100%;
}

ul li {
    display: inline;
}

ul li a {
    padding: 0.2em 1em;
    background-color: #036;
    color: white;
    text-decoration: none;
    border-right: 1px solid white;
}

结果:

https://jsfiddle.net/cbaanvzd/

带有 float: leftdisplay: inline 的 CSS

ul {
    background-color: cyan;
    padding-left: 0;
    margin-left: 0;
    float: left;
    width: 100%;
}

ul li {
    display: inline;
}

ul li a {
    padding: 0.2em 1em;
    background-color: #036;
    color: white;
    text-decoration: none;
    border-right: 1px solid white;
    float: left;
}

结果:

https://jsfiddle.net/dy78hzk5/

为什么第二个例子中 float 元素会调整包含元素的高度?现在这里应用了溢出属性或 clearfix。

最佳答案

我不确定为什么,但是如果你想阻止这种情况,你可以从 ul li a 的 css 中删除 float: left; 并将其放在ul li 的 CSS。

JSFiddle:http://jsfiddle.net/dy78hzk5/1/

关于html - CSS水平菜单使用 float 和内联显示给包含元素一个高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31977777/

相关文章:

javascript - 具有两个字段的可点击 Accordion 菜单

HTML Table 自动开始将行拆分为新的列

html - 添加 HTML 到 <h :messages/>

html - 浏览器不响应对我的代码所做的更改

c# - 从以编程方式下载的网页中评估/解析 javascript

html - 启动 bootstrap 3 元素?

css - Bootstrap 4 - 卡片按列裁剪

javascript - gojs 中悬停按钮的自定义样式

javascript - 将条形图数据链接到 d3 工具提示

jquery - 如何在 javascript 中设置滚动条处理程序?