我正在为我的网站制作移动版本,而且我遇到了一个问题。我有一个外部div,我希望在整个宽度上伸展,然后我希望其中的4个div具有相等的宽度,在它们之间有一个边距。
如果我不需要它们之间的余量,这将很容易。我会简单地设置width:25%
并完成它,但我希望它们之间有3个像素的边距。设置此边距时,实际宽度将超过100%,因此在div中占用多行。
我考虑过设置一个负margin-left
,但这只是摆脱了右边的边距。
CSS:
.wrapper {
width:300px;
height:50px;
background-color:#f00;
}
.inner {
width:25%;
margin-right:2px;
float:left;
background-color:#00f;
}
这是一个fiddle所以你可以看到我的意思。
顺便说一句,我知道在页面加载后我可以使用一些jQuery或JavaScript来实现这一点,但我想知道是否有纯粹的CSS方法来实现这一点。
答案 0 :(得分:2)
您可以使用calc()
从元素的宽度中减去2px
。
.inner {
width:calc(25% - 2px);
}
但是,这会在最后一个元素上产生2px
页边距。要解决此问题,请添加:
.inner:last-child {
width:25%;
margin-right:0;
}
或者,您可以使用基于百分比的边距。
答案 1 :(得分:1)
答案 2 :(得分:1)
您可以使列扩展24%并在它们之间执行基于%的边距。
.wrapper {
width:100%
height:50px;
background-color:#f00;
overflow:hidden;
}
.inner {
width:24%;
margin:0 .5%;
float:left;
background-color:#00f;
}
答案 3 :(得分:1)
您可以使用border
和box-sizing
在25%宽度内包含此2px差距。
如果背景不是普通颜色,则边框应该是透明的,背景颜色应绘制为插入阴影。
.inner {
width:25%;
border-right:2px solid transparent;
-moz-box-sizing:border-box;
box-sizing:border-box;
float:left;
box-shadow:inset 0 0 0 10000px #00f;/* make it big , so it doesnt matter wich size it becomes.*/
}
http://jsfiddle.net/g5mgD/4/ width a background-image和translucid color http://jsfiddle.net/g5mgD/9/
答案 4 :(得分:0)
我会将元素和边距内的100%划分为:
.inner {
width:24%;
margin: 0.5%;
float:left;
background-color:#00f;
}
如果希望外边距和内边距具有相同的大小,则可以为第一个元素指定特定边距。