与 display-block 一起使用时元素的位置错误
Wrong position of elements when used with display-block
我有以下 HTML/CSS 个文件:
HTML:
<div class="test" >
<a>a</a>
<div></div>
<a >a</a>
</div>
CSS:
.test {
border: 2px solid;
font-size: 0;
}
.test > * {
text-align: center;
font-size: 20px;
border: 1px solid;
height: 40px;
width: 50px;
display: inline-block;
}
全部3个children显示为"inline-block"。如果所有 children 都有内容,则一切正常。
但是如果这3个children中的任何一个都没有内容,那么垂直对齐是完全错误的。
看看这个http://jsfiddle.net/ClementVidal/mb7wzy30/5/
有没有人知道为什么会发生这种情况以及原因是什么?
注:我用的是Chrome40.
10.8 Line height calculations: the 'line-height' and 'vertical-align' properties
The baseline of an 'inline-block' is the baseline of its last line box in the normal flow, unless it has either no in-flow line boxes or if its 'overflow' property has a computed value other than 'visible', in which case the baseline is the bottom margin edge.
因此您需要更改 inline-block
元素的 vertical-align
属性。
如上所述,vertical-align
属性 的默认值为 baseline
。当兄弟元素包含文本时,它们与基线对齐。通过将 vertical-align
属性 值更改为 top
之类的值,文本将不再与中间元素的底部对齐。
.test > * {
border: 1px solid;
height: 40px;
width: 50px;
display: inline-block;
vertical-align: top;
}
您始终可以手动设置垂直对齐方式:
vertical-align: middle;
我有以下 HTML/CSS 个文件:
HTML:
<div class="test" >
<a>a</a>
<div></div>
<a >a</a>
</div>
CSS:
.test {
border: 2px solid;
font-size: 0;
}
.test > * {
text-align: center;
font-size: 20px;
border: 1px solid;
height: 40px;
width: 50px;
display: inline-block;
}
全部3个children显示为"inline-block"。如果所有 children 都有内容,则一切正常。
但是如果这3个children中的任何一个都没有内容,那么垂直对齐是完全错误的。
看看这个http://jsfiddle.net/ClementVidal/mb7wzy30/5/
有没有人知道为什么会发生这种情况以及原因是什么?
注:我用的是Chrome40.
10.8 Line height calculations: the 'line-height' and 'vertical-align' properties
The baseline of an 'inline-block' is the baseline of its last line box in the normal flow, unless it has either no in-flow line boxes or if its 'overflow' property has a computed value other than 'visible', in which case the baseline is the bottom margin edge.
因此您需要更改 inline-block
元素的 vertical-align
属性。
如上所述,vertical-align
属性 的默认值为 baseline
。当兄弟元素包含文本时,它们与基线对齐。通过将 vertical-align
属性 值更改为 top
之类的值,文本将不再与中间元素的底部对齐。
.test > * {
border: 1px solid;
height: 40px;
width: 50px;
display: inline-block;
vertical-align: top;
}
您始终可以手动设置垂直对齐方式:
vertical-align: middle;