我需要这样来:
块的数量可以不同。
由于这个问题是用 css3 标记的,我将建议一个 css3 解决方案。
演示:http: //jsfiddle.net/mqchen/VEmCK/
.wrap {
display: -webkit-box; /* OLD: Safari, iOS, Android browser, older WebKit browsers. */
display: -moz-box; /* OLD: Firefox (buggy) */
display: -ms-flexbox; /* MID: IE 10 */
display: -webkit-flex; /* NEW, Chrome 21+ */
display: flex; /* NEW: Opera 12.1, Firefox 22+ */
border: 1px solid black;
padding: 1px;
float: left;
width: 100%;
clear: both;
margin-bottom: 20px;
}
.box {
-ms-box-flex: 1;
-ms-flex: 1;
-moz-box-flex: 1;
-moz-flex: 1;
-webkit-box-flex: 1;
-webkit-flex: 1;
box-flex: 1;
flex: 1;
border: 1px solid red;
padding: 5px 40px;
margin-right: 30px;
}
.wrap .box:last-child {
margin-right: 0;
}
(您需要调整尺寸以供自己使用,但我认为这可以大致了解它如何为您工作。)
此解决方案flexbox
用于对齐框。您可以在这里阅读更多相关信息:http: //coding.smashingmagazine.com/2013/05/22/centering-elements-with-flexbox/
为什么选择 flexbox 或 JS 解决方案?您可以使用 display: table 和 display: table-cell; 来完成此操作。
<div class="row">
<div>1</div>
<div>2Lorem ipsum dolor sit amet, consectetur adipiscing elit</div>
<div>3</div>
</div>
.row { display: table; width: 100%; }
.row div { display: table-cell; width: 1%; }
您需要编写一个脚本来计算您拥有多少个 div,然后除以 100 并将其分配为宽度。如果你真的想把它做对,你也可以使用基础 css 框架为你做计算(至少是宽度)。
我已经看过几次了,在我看来这是解决这个问题的最佳方法:Fluid width with equal spaced DIVs
基本上,您在列表底部使用带有伸展器类的跨度,并在 ul/container 元素上为导航添加“文本对齐:对齐”。
<div id="container">
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
<div class="box4"></div>
<span class="stretch"></span>
</div>
这是一个演示:http: //jsfiddle.net/thirtydot/EDp8R/