这是jsfiddle
see jsfiddle
有谁能说我为什么每行看到3个元素。似乎应该有4因为width
是25%。以及如何解决它?也许有人知道如何用bootstrap列实现这样的东西?
我正试图从中心对齐未知数量的div
s ..
答案 0 :(得分:2)
您看到的效果是由于HTML布局了内联块(实际上是所有内联元素),它们之间的任何数量的空白都被识别为单个空格字符,其宽度由内联上下文的font-size和family。
因此,即使每个内联块正好是其容器宽度的25%,但它们之间的空间迫使它们中的4个的总宽度超过容器宽度的100%,所以第四个下降到下一行。
这是使用内联块进行布局的祸根。这里有一些如何解决这个问题的建议: Ignore whitespace in HTML。亮点包括:
该问题的其他一些答案提出了使用除了内联块之外的其他内容来处理布局的技术,例如: float
和flex
。这些也很好,但是内联块的某些方面可能使它值得努力让它们起作用,即:
vertical-align
属性来控制垂直对齐(优于浮点数)答案 1 :(得分:1)
问题是由于<div>
属性导致空间的inline-block
之间的中断。请尝试以下方法:
<div class="row">
<div>Q</div><div>W</div><div>E</div><div>R</div>
</div>
然后,您将连续有四个<div>
,其间没有空格。
或者,您可以将周围<div>
的字体大小减小为零:
.row {
text-align: center;
font-size: 0px;
}
.row > div {
display: inline-block;
background-color: #EEE;
width: 25%;
padding: 0;
margin: 0;
font-size: 12px;
}
答案 2 :(得分:0)
而不是inline-block
做浮动:
.row > div {
/* display: inline-block; */
background-color: #EEE;
width: 25%;
padding: 0;
margin: 0;
float: left;
}
如果您想保持元素居中,只需应用负边距:
margin: 0 0 0 -4px;