鍍金池/ 問答/HTML/ 為什么這里加個空i元素,就可以實(shí)現(xiàn)垂直居中對齊?原理是什么

為什么這里加個空i元素,就可以實(shí)現(xiàn)垂直居中對齊?原理是什么

代碼http://js.jirengu.com/telac/2...

clipboard.png

vertical-align實(shí)現(xiàn)的是元素盒子的垂直中點(diǎn)與父盒子的baseline加上父盒子的x-height的一半位置對齊,那么問題來了,如何確定父元素的盒子的baseline的位置?看了好多文章,都沒有解釋父元素盒子的baseline如何確定?規(guī)范也看了,可能沒看懂吧。麻煩大神解釋下,謝謝!

回答
編輯回答
忘了我

vertical-align 這個屬性就是設(shè)置垂直對齊的方式的, 具體可參考這里

2017年8月8日 05:43
編輯回答
祉小皓

首先
解答樓主最關(guān)系的問題:「如何確定父元素盒子的 baseline?」
參考答案:元素的 baseline 就是元素內(nèi)部 x 字母的底端。點(diǎn)我了解更多

其次
樓主的問題沒有描述不嚴(yán)謹(jǐn)。
并不是加了一個「空」的 i 標(biāo)簽,而是加了一個「高度為 100%」的 i 標(biāo)簽 。
「這個 100% 很重要啊,不信的話,把 100% 去掉看看,???」

再其次
簡單解釋一下「vertical-align:middle」的意思:
元素中垂線與父元素的基線加上小寫字母 x 一半的高度值對齊。

所以在本例子中,
如果去掉 <i> 標(biāo)簽,
這個時候 <span> 設(shè)置了 vertical-align:middle; ,所以會和 xxxxxx 垂直對齊。
不過父元素 <div> 設(shè)置了高度「100px」,
理所當(dāng)然,<span> 和 xxxxxx 不會在 div 100 像素的「垂直中間」啊?。?!

這個時候,樓主加入一個 「高度 100% 的 <i> 標(biāo)簽」,???,并且也設(shè)置了 vertical-align:middle;,
那么這個時候,
<i> 標(biāo)簽也會和 xxxxxx 垂直對齊,
不過 <i>「比較倔強(qiáng)」,它竟然和父元素一樣高「100% == 100px」
由于 <i> 也設(shè)置了 vertical-align:middle;,
所以,xxxxxx 就會「向下移動」保持和 <i> 垂直對齊,
這個時候,<span> 看到 xxxxxx 向下移動了,
所以 <span> 也要跟著向下移動,
這個時候「皆大歡喜」===> 「三個元素都垂直居中了,呃呃呃」

所以并不是加入了 <i> 使得他們才能居中,而是這個 <i> 有 100 像素的高度好么。

「了解原理,代碼就簡單,且迎刃而解」

2018年4月15日 04:13
編輯回答
念初

i里的vertical-align: middle: i元素中垂線與父元素div里的x的中間對齊。
相對的來看,也可以看成父元素的x中間和i元素中垂線對齊~

2018年8月22日 00:29
編輯回答
誮惜顏

父元素的baseline就是你例子里面xxxxxx的底部,i設(shè)置的vertical-align: middle也是根據(jù)這個來對齊的。 參考鏈接1:http://www.jianshu.com/p/6f9d...。參考鏈接2:http://www.jianshu.com/p/6f9d...

2018年8月15日 17:13
編輯回答
生性

簡單來說就是vertical-align針對inline-block的元素才生效

2017年12月28日 14:52