css - 使行内 block 元素不占用垂直空间

标签 css

我有一个均匀分布的菜单,例如:

HTML

<nav>
    <ul>
        <li><a href="">Home</a>
        </li>
        <li><a href="">About</a>
        </li>
        <li><a href="">Contact</a>
        </li>
        <li><a href="">Blog</a>
        </li>
    </ul>
</nav>

CSS

nav ul {
    padding:0;
    margin:0;
    text-align: justify;
    text-transform: uppercase;
    background-color: #000;
}
nav ul:after {
    content:'';
    width: 100%;
    display: inline-block;
    height: 0;
    line-height: 0;
    font-size: 0px;
}
nav ul li {
    display: inline-block;
}
nav ul li a {
    color: #fff;
}

这非常适合将菜单项分布在栏的整个宽度上,如以下 fiddle 所示:http://jsfiddle.net/SjDEX/ .

但是,您还可以看到 ::after 元素的结果是 ul 的高度增加了,从而在菜单项下方留出了额外的空间。

有没有办法通过让 after 元素不占用垂直空间来摆脱这种情况? 将其高度设置为 0 没有任何作用,将其显示更改为 block 或其他内容会破坏布局。

最佳答案

ul 本身有那个高度,而不是 :after,所以只需添加

nav ul {
   height: 20px;
}

Fiddle

这段代码可以简化为:

nav ul:after {
    content:'';
    width: 100%;
    display: inline-block;
}

关于css - 使行内 block 元素不占用垂直空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19414413/

相关文章:

jQuery 和隐藏 :after/:before pseudo classes

javascript - Three.js CanvasRenderer,在将图像纹理设置为平面时遇到问题

javascript - jQuery Mobile 没有样式化附加元素

CSS:如何在行高底部设置文本

html - grails 中的 DatePicker 输入字段自定义

html - 有没有办法使用 CSS 为图像添加外层?

css - 移动端使用全屏背景图片固定约束的解决方法

html - 内联 block 元素换行时的CSS,父包装器不适合新宽度

css - 在 flexbox 中填充 <img> 并在没有 JavaScript 的情况下保留纵横比

html - <pdf :font> xhtml2pdf 的属性错误