【发布时间】:2017-01-22 01:47:48
【问题描述】:
我想垂直居中<div>标签,它们之间有一个水平边距。
问题在于text-align: center 和text-align: -webkit-center 或text-align: -moz-center 之间的这种行为似乎不一致:
.parent {
display: inline-block;
border: 1px dotted #fd0;
position: relative;
}
.parent.ta {
text-align: center;
}
.parent.browser-ta {
text-align: -webkit-center;
text-align: -moz-center;
}
.child {
display: inline-block;
vertical-align: top;
}
.child > .content {
display: block;
margin: 0 10px;
border: 1px solid #888;
width: 200px;
text-align: left;
}
.wrong {
background-color: #e00;
color: #fff;
}
.right {
background-color: #0a3;
color: #fff;
}
<div>
Using <tt>text-align: center</tt>;
<div class="parent ta">
<div class="child">
<div class="content wrong">child 1 LEFT</div>
<div class="parent ta">
<div class="child">
<div class="content">child a</div>
</div>
<div class="child">
<div class="content">child b</div>
</div>
<div class="child">
<div class="content">child c</div>
</div>
</div>
</div>
<div class="child">
<div class="content wrong">child 2 LEFT</div>
<div class="parent ta">
<div class="child">
<div class="content">child d</div>
</div>
<div class="child">
<div class="content">child e</div>
</div>
<div class="child">
<div class="content">child f</div>
</div>
</div>
</div>
<div class="child ">
<div class="content right">child 3 CENTRE</div>
</div>
</div>
</div>
<br>
<br>
<div>
Using <tt>text-align: -vendor-center</tt>
<div class="parent browser-ta">
<div class="child">
<div class="content right">child 1 CENTRE</div>
<div class="parent browser-ta">
<div class="child">
<div class="content">child a</div>
</div>
<div class="child">
<div class="content">child b</div>
</div>
<div class="child">
<div class="content">child c</div>
</div>
</div>
</div>
<div class="child">
<div class="content right">child 2 CENTRE</div>
<div class="parent browser-ta">
<div class="child">
<div class="content">child d</div>
</div>
<div class="child">
<div class="content">child e</div>
</div>
<div class="child">
<div class="content">child f</div>
</div>
</div>
</div>
<div class="child">
<div class="content right">child 3 CENTRE</div>
</div>
</div>
运行 sn-p 和两个相似的 HTML 和 CSS 在 Chrome (Webkit/Blink) 和 FireFox 中产生不同的布局。红色面板位置错误,绿色面板位置正确。
所以text-align: -webkit-center 和text-align: -moz-center 似乎是正确的(对我来说),但text-align: center 似乎在两个浏览器中都有错误。
挖掘出古老的 <centre> 标签(我们不应该使用它)并且它也可以正常工作(尽管检查它发现它也使用浏览器前缀)。
这是正确的吗?这是一个错误吗?有差异的原因吗?我应该使用哪一个?
【问题讨论】:
-
我从来没有见过那个属性供应商前缀...你有这样做的参考吗?
-
@Paulie_D 不,我没有,但我包含了一个运行并演示不同行为的 sn-p。如果您有相关的明确文档,那么这可能是一个很好的答案。您引用的替代问题是相关的,但有一个非常不同的解决方案 -
margin: 0 auto;对我不起作用,因为我希望孩子之间有一致的边距。 -
供应商前缀版本是非规范的,因此实现会有所不同。我怀疑你应该研究一下 flexbox,我相信它会取代这个属性。
-
@Paulie_D 这通常是我的假设,但是前缀属性的行为显然更正确 - 所有孩子都是
display: inline-block;所以应该居中,text-align: -prefix-center;确实如此 和text-align: center;不这样做
标签: css cross-browser webkit mozilla vendor-prefix