css設置span和img垂直居中(設置line-height失效)

我要實現下圖的樣子,幣種和旗子都是垂直居中,方法很簡單,給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讓幣種垂直居中容器

以上理解,若有錯誤,歡迎指正

相關文章
相關標籤/搜索