【发布时间】:2014-07-29 22:33:59
【问题描述】:
我有一个简单的水平菜单。使用 CSS display:table 和 display:table-cell,我使菜单“合理”。当菜单变得足够窄时,一些<a> 元素中的文本会换行成两行,从而增加这些项目的高度。其余展开的<a>elements 保持在 1 行文本的高度,破坏了效果。如何使所有 <a> 元素填充其包含 <li> 的高度的 100%?
限制:
- 无法使用Javascript动态计算高度
- 无法使用 Flexbox,因为某些受支持的浏览器不支持 Flexbox
我这里有一个例子:http://codepen.io/anon/pen/cyJEt?editors=110,使用这个代码:
<ul class = "nav-mega">
<li>
<a href = "#">Two words</a>
</li>
<li>
<a href = "#">More words</a>
</li>
<li>
<a href = "#">Word</a>
</li>
<li>
<a href = "#">Word</a>
</li>
<li>
<a href = "#">More words</a>
</li>
<li>
<a href = "#">End</a>
</li>
</ul>
.nav-mega {
padding:0;
margin:0;
display: table;
width: 100%;
}
.nav-mega > li {
display: table-cell;
min-width: 10%;
background:green;
}
.nav-mega > li a {
display: block;
background:red;
outline:1px solid black;
padding:10px;
}
【问题讨论】:
-
将背景颜色和边框底部设置为 li,将边框右侧设置为 li>a。
-
@Hareesh 这肯定会给出正确的外观,但链接的命中区域仍然不会填满 .nav-mega
-
你试过 100% 的高度吗,它对我有用。 li>当菜单变窄时,a 会填满整个点击区域。