【发布时间】:2025-11-23 22:25:01
【问题描述】:
我正在尝试实现这样的水平导航链接:
|--------------------------------------|
|Link1 L2 LongLink3 Link4 Link5|
|--------------------------------------|
规则:
- 链接间隔均匀(每个链接之间的空白数量相同)
- 链接可以是可变宽度的
- 这些链接共同延伸到其容器的整个可用宽度
- 第一个和最后一个链接与其容器的边缘对齐(链接是合理的)
- 适用于 IE8+
- CSS/HTML 解决方案,无 JavaScript
- 无法设置特定的容器高度或链接高度
- 无法预先计算和硬编码链接之间的空间(链接数量可能会在以后更改)
This solution 几乎可以工作——它是如此接近。但是引入空的 :after 内容会在导航容器中添加不需要的额外垂直空间(为什么?)。有没有办法去除空的 :after 内容注入的额外垂直空间?
几乎可以工作的HTML:
<ul id="nav">
<li><a href="#">HOME</a></li> <!--
--><li><a href="#">ABOUT</a></li> <!--
--><li><a href="#">BASIC SERVICES</a></li> <!--
--><li><a href="#">OUR STAFF</a></li> <!--
--><li><a href="#">CONTACT US</a></li><!--
--></ul><!--
--><h2>next element</h2>
几乎可以工作的CSS:
* {
padding: 0;
margin: 0;
}
#nav {
text-align: justify;
outline: 1px solid grey;
}
#nav:after {
content: '';
display: inline-block;
width: 100%;
}
#nav li {
display: inline-block;
background-color: green;
}
#nav a:link {
display: block;
color: white;
padding: 1em 0;
}
jsfiddle 显示了它的样子,以及 :after 内容注入的额外垂直空间。 “下一个元素”应直接位于导航链接下方。谢谢。
【问题讨论】: