>容器#666有保证金:20px;溢出:隐藏;
>节点#333有边距:20px 0 0 20px;向左飘浮;.
>节点#333有边距:20px 0 0 20px;向左飘浮;.
例如,http://jsbin.com/owejal/3/edit或图片:
但是,预期的结果是:
>容量为20px的容器,
>中间有20px边距的儿童,但不包括容器.
这可以使用负填充(即,如果容器具有填充:-20px 0 0 -20px)来实现,尽管这种情况不存在.
使用附加元素(http://jsbin.com/owejal/4/)可以实现所需的结果,但我很想知道是否只有CSS解决方案.
解决方法
如果您只关心元素之间的间距,则可以丢弃伪元素.它只适用于背景.
http://codepen.io/cimmanon/pen/mucDv
<div class="foo"></div> <div class="group"> <div class="node"></div> <div class="node"></div> <div class="node"></div> <div class="node"></div> <div class="node"></div> <div class="node"></div> <div class="node"></div> </div> <div class="foo"></div>
CSS:
.group { overflow: hidden; margin: -10px 0 -10px 10px; padding-right: 10px; position: relative; } .group:before { display: block; content: ''; position: absolute; z-index: -1; top: 10px; right: 20px; /* 20px instead of 10px due to padding */ bottom: 10px; left: 10px; background: #666; } .node { width: 100px; height: 100px; float: left; background: #333; margin: 10px; } .foo { height: 20px; background: #00f; margin: 20px; }