如何在指定容器中均匀且完全地拉伸固定数量的水平导航项
我想在900px容器中均匀地拉伸6个导航项目,两者之间有一个均匀的空白区域。例如...
---| 900px Container |---
---| HOME ABOUT BASIC SERVICES SPECIALTY SERVICES OUR STAFF CONTACT US |---
目前,我能找到的最好的方法是:
nav ul {
width: 900px;
margin: 0 auto;
}
nav li {
line-height: 87px;
float: left;
text-align: center;
width: 150px;
}
这个问题有两个问题。首先,它并不能真正证明它,而是将li标签均匀地分布在ul标签中..在“HOME”或“ABOUT”等较小的菜单项之间创建不均匀的空白区域,在“BASIC SERVICES”等较大的菜单项之间创建不均匀的空白区域。
第二个问题是,如果导航项大于150px(即SPECIALTY SERVICES),布局会中断 - 即使整个导航的空间足够多。
有人能为我解决这个问题吗?我一直在网上搜索解决方案,而且它们似乎都很简短。仅在可能的情况下使用CSS / HTML ...
谢谢!
更新(2013年7月29日):使用table-cell是实现此布局的最佳现代方式。请参阅下面的felix的答案。 table cell
属性目前适用于94%的浏览器。你将不得不做一些关于IE7及以下的事情,但否则应该没问题。
更新(2013年7月30日):不幸的是,如果您将此布局与媒体查询相结合,则存在影响此问题的webkit错误。现在你必须避免更改'display'属性。请参阅Webkit Bug。
更新(2014年7月25日):现在有一个更好的解决方案,现在涉及text-align:justify。
使用它更简单,您将避免Webkit错误。
没有找到相关结果
已邀请:
12 个回复
鞋扣蚊冈借
,无论您在列表中有多少元素,它都可以工作(您不必为每个列表项计算%宽度) 小提琴
CSS
社攻取墟槽
CSS
http://jsfiddle.net/timshutes/eCPSh/416/
响摔衅幸
jsfiddle:http://jsfiddle.net/RAaJ8/ 浏览器支持实际上相当不错(前缀是其他令人讨厌的东西):http://caniuse.com/flexbox
担每棱绰
容器内的简单
菜单,我们可以构建满足上述要求的解决方案。 HTML
首先,我们需要强制
具有其
容器的全宽。为实现这一目标,我们将使用
psuedo-element和
。 这完美地实现了我们的目标,但是从伪元素添加了尾随空格。我们可以通过IE8将
的
设置为0并在其
的孩子上将其设置回100%,从而在所有浏览器中删除此空白。请参阅下面的示例CodePen和解决方案: CSS
昧伎
瓜唱鬼
CSS
显然,你可以放弃第一个/最后一个孩子圆形的结尾,但我认为它们真的是纯粹的(你的客户也是如此;) 容器宽度限制了水平列表,但您可以放弃它,如果您愿意,只需将绝对值应用于UL。 摆弄它,如果你喜欢.. http://jsfiddle.net/tobyworth/esehY/1/
秃拳割
编辑:我会将UL设置为100%宽度: nav ul { 宽度:100%; 保证金:0自动; }
笛驮型迸
疮痪徘弦漏
我玩了填充物以获得适当数量的均匀空间物品。
募磷
希望这可以帮助。
蹦吃舷弦
习让休堂溯
HTML:
这不是创建表格的原因,但是在我们能够以更好的方式可靠地执行相同的操作之前,我猜它只是允许的。