【发布时间】:2014-10-09 07:56:53
【问题描述】:
我有一个水平菜单栏,可以有 1 到 4 个链接。
我希望每个链接的宽度为 25%,而不取决于它们的数量(因此,如果只有 3 个链接,菜单栏应该只有另一个有 4 个链接的链接的 75%)。
使用浮动到达目标,但如果较长的文本跨越 2 行,则无法相应调整其他链接的高度,因此我使用 display:table-cell 解决此问题,但如果是 3 个链接,则完全忽略width:25%,它的渲染就像宽度为 33%。
<div class="container">
<div class="block">
<a href="#">Link 1</a>
</div>
<div class="block">
<a href="#">Link 2</a>
</div>
<div class="block">
<a href="#">
Link 3 with very long text tha span across 2 rows
</a>
</div>
</div>
.container {
display: table;
width: 100%;
border:solid 1px blue;
}
.block {
border: 1px solid red;
display: table-cell;
width: 25%;
}
请查看此 jsFiddle 以了解这两种情况。
期望的结果是第二个菜单栏链接继续具有与第一个相同的宽度,而不是变为 33%。
我还尝试在其他线程中添加 table-layout:fixed,但没有用
如何解决?
【问题讨论】:
-
我不知道为什么,但你可以像这个演示一样解决这个问题 - jsfiddle.net/bjf1fw8a
-
您可以在末尾放置一个空块:
<div class="block"> </div>,或者如果您想缩短整个内容,您可以在第二种情况下将container的宽度减小为75%。但是如果你的容器的宽度保持在 100% 并且它只填充了三个元素,那么 js 应该如何知道如何处理额外的空间呢?它将被填充到 100%,不同元素之间的宽度比决定了它们的贡献。 -
您应该在问题本身中包含足够的代码(也包括 HTML),以便重现问题。