我要實現下圖的樣子,幣種和旗子都是垂直居中,方法很簡單,給img設置vertical-align:middle.在父容器上設置上line-height,效果以下spa
要實現span垂直居中,代碼以下:3d
<style> .flag{ position: absolute; bottom: 0; width: 23rem; height: 2.5rem; line-height: 2.5rem; } .flag img{ width: 1.58rem; height: 2.1rem; vertical-align: middle; } </style> <div class="flag"> <img src="./img/flag.png"> <span>幣種:...</span> </div>
解釋一下這麼寫的緣由:code
img是行內元素,會帶有默認樣式vertical-align:baselineblog
vertical-align是指定行內元素(inline)垂直對齊方式的(目前只有圖片支持vertical-align屬性,默認屬性值是baseline,因此會致使圖片產生一個3px左右的下邊距,解決方法就是給vertical-align設置非baseline的內容)圖片
官網解釋vertical-align:baseline,使元素的基線與父元素的基線對齊;rem
父元素的基線,實際上解釋的比較模糊,個人理解是父元素基線在父容器底部附近,可是尚未徹底到底;it
我理解的:設置baseline的元素會影響周邊行內元素,讓baseline元素和周邊元素都處於容器底部偏上一點點的基線位置io
因此會出現這種狀況,幣種位於底部,即便設置了line-height也沒法是幣種垂直居中class
解決方法:給旗子設置vertical-align:middle讓旗子垂直居中,而後給父容器設置line-height讓幣種垂直居中容器
以上理解,若有錯誤,歡迎指正