更好的方法来设置弹性框项目之间的距离
我在.item
上使用margin: 0 5px
,在容器上使用margin: 0 -5px
,来设置flexbox项目间的最小距离。对我来说,这似乎是一个黑客,但我找不到任何更好的方法来做到这一点。
[例子][1] 。
#box {
display: flex;
width: 100px;
margin: 0 -5px;
}
.item {
background: gray;
width: 50px;
height: 50px;
margin: 0 5px;
}
<div id='box'>
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
</div>
648
3
因此,要实现你的要求就有点困难了。
根据我的经验,不使用
:第一个孩子
/:最后一个孩子
,并且在不修改flex-wrap:wrap
的情况下,最干净的方法是在容器上设置padding:5px
,在孩子上设置margin:5px
。这将在每个孩子之间以及每个孩子和他们的父母之间产生一个10px
的间隙。[演示](http://jsfiddle.net/7XD8s/)
你可以使用透明的边框。
我在试图建立一个灵活的网格模型时考虑了这个问题,该模型可以在旧的浏览器上退回到表格+表单元格模型。在我看来,列间的边框是最合适的选择,也就是说,表格单元没有边框。
比如说
还要注意的是,你需要
min-width: 50px;
用于flexbox。Flex模型不会处理固定的尺寸,除非你在特定的子元素上做了flex: none;
,你希望它是固定的,因此被排除在"flexi"
之外。 http://jsfiddle.net/GLpUp/4/ 但所有的列加上flex:none;
就不再是一个flex模型了。 下面是更接近于柔性模型的东西: http://jsfiddle.net/GLpUp/5/因此,如果你不需要老式浏览器的表格单元格回退,你实际上可以正常使用页边距。http://jsfiddle.net/GLpUp/3/
当使用背景时,设置
background-clip: padding-box;
将是必要的,否则背景将流入透明边框区域。我发现最简单的方法是用百分比来做,只需让边距达到你的宽度就可以了。
这意味着你最终会得到这样的结果,如果你使用你的例子的话
这意味着你的值是基于宽度的,但这可能对每个人都不太合适。