鑑於以下(也JSFiddle)的:避免垂直對齊:中間延伸高度包含塊
div {
font-size: 28px;
outline: 1px solid red;
width: 40%;
float: left;
line-height: 36px;
}
div:first-child::before {
content: "Hi!";
display: inline-block;
vertical-align: middle;
outline: 1px solid blue;
font-size: 8px;
}
<div>xHello, world!</div>
<div>xHello, world!</div>
的第二個div(即,不垂直取向中間內容)是36px高(正如人們所期望的那樣;其中的單線框的高度爲36px,每line-height
)。
這裏的第一個div是39px高(帶有子像素渲染,這裏預計會有一些細微的變化,所以39px/40px都是合理的預期),因爲內容::before
的線框延伸超過「normal 「內容,由於其垂直對齊。我怎樣才能得到包含塊(即div)只擴展到36px高(假設我不關心內容::before
溢出它)?
將它從正常流程中取出的典型方法在此不起作用,因爲它不再是垂直對齊的。鑑於塊級元素的高度取決於其中最底部的線框,這是否合理?
垂直對齊意味着什麼都沒有,你控制使用的line-height高度,看看[小提琴](http://jsfiddle.net/61omkd9d/2/)。 – skobaljic
@skobaljic在上面的例子中,它沒有任何意義,只是因爲它發生在':: before'內容的font-size等於div內容的x-height;如果將':: before'的字體大小更改爲8px,則會更加清晰。 – gsnedders
是的,但它看起來像一個錯誤(也許它是),這兩個元素是內聯的,所以他們應該保持在線。控制內聯元素高度的最佳方式是行高。 – skobaljic