我有四个元素,每个元素的宽度都设置为25%
. 它们完美地填满了页面的宽度。
我想1px
在每一个之间留一个空隙。如果我这样做(margin-right: 1px;
例如),最后一个元素会溢出到下一行。如何在1px
不首先计算像素宽度的情况下减少每个元素的宽度?
在评论中@Lubnah 的帮助下,我自己刚刚找到了一个解决方案。
.tab-list li {
margin-right: -1px;
border-left: 1px solid #fff;
}
.tab-list li:first-of-type {
border-left: none;
margin-right: 0px;
}
您可以使用 CSS calc
,但它的浏览器支持很粗略:
width: calc( 25% - 1px );
width: -moz-calc( 25% - 1px );
width: -webkit-calc( 25% - 1px );
宽度是在容器内计算的。您设置的任何填充或边距都将添加到宽度中。
将宽度设置为 23%,将边距设置为 1%
左边距 (1) 加上宽度 (23) 加上右边距 (1) = 25。也就是说,在页面上放置四次将加起来 100。
您可以通过在每个元素内使用宽度为 auto 和 margin-right:1px 的内部 div 来稍微作弊
看到这个小提琴:http: //jsfiddle.net/7R6zZ/
<div class="outer">
<div class="inner">1</div>
</div>
<div class="outer">
<div class="inner">2</div>
</div>
<div class="outer">
<div class="inner">3</div>
</div>
<div class="outer">
<div class="inner">4</div>
</div>
.outer {
width:25%;
float:left;
}
.outer .inner {
width:auto;
margin-right:1px;
background:#999;
min-height:300px;
}
使用box-sizing: border-box;
和边界。
* { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; }
div {
width: 25%;
border-right: 1px solid right;
}
使用框大小作为box-sizing:border-box
并使用与背景颜色相同的 1px 右边框
.box{
width:25%;
box-sizing:border-box;
border-right: 1px solid "same color as your background"
}