溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CSS垂直居中怎么實現

發布時間:2021-03-18 14:58:22 來源:億速云 閱讀:175 作者:小新 欄目:web開發

小編給大家分享一下CSS垂直居中怎么實現,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

代碼實現:

<style type="text/css">
  .parent {
    display: inline-block;
    width: 300px;
    height: 300px;
    font-size: 0;
    background: #80848f;
    text-align: center;
  }
  .parent:before {
    display: inline-block;
    width: 20px;
    height: 100%;
    content: '';
    background: #ff9900;
    vertical-align: middle;
  }
  .child {
    display: inline-block;
    width: 50px;
    height: 50px;
    background: #19be6b;
    vertical-align: middle;
  }
</style>
<div class="parent">
  <div class="child">child</div>
</div>

上面的代碼運行結果是這樣的:

CSS垂直居中怎么實現

相信代碼大家已經很熟悉了,但是你真正理解其中的原理嗎?下面我們就看一下它是如何怎樣一步步實現垂直居中的

分析

首先我們要知道一個關鍵知識點,那就是:父元素基線(baseline)的位置是可以改變的,它不是固定的,記住這一點很重要
接著,我們精簡一下代碼,去掉關鍵部分

<style type="text/css">
  .parent {
    display: inline-block;
    width: 300px;
    height: 300px;
    /* font-size: 0; */
    background: #80848f;
    text-align: center;
  }
  .parent:before {
    display: inline-block;
    width: 20px;
    height: 100%;
    content: '';
    background: #ff9900;
    /* vertical-align: middle; */
  }
  .child {
    display: inline-block;
    width: 50px;
    height: 50px;
    background: #19be6b;
    /* vertical-align: middle; */
  }
</style>
<div class="parent">
  <div class="child">child</div>
</div>

我們將font-size:0vertical-align:middle注釋后,運行結果如下:

CSS垂直居中怎么實現

從圖中不難看出,對于:before偽元素(以下簡稱偽元素)來說,加與不加vertical-align:middle,結果都是一樣的,在垂直方向它始終會占滿父元素;但對于.child元素情況就不同了,它在垂直方向的位置發生了改變,那么這是為什么呢?
其實偽元素在此處的作用就是為了改變(或者叫重新定義)父元素baseline的位置,我們來回顧一下vertical-align:middle在MDN文檔中的定義

middle: 使元素的中部與父元素的基線加上父元素x-height的一半對齊

那么,對比我們的示例:

  • 偽元素的中部就是它垂直方向的中點,這不難理解

  • 父元素的基線我們暫且不管它在哪里,我們只要記住它是可以改變的就足夠了

  • x-height的一半,因為我們在父元素中將font-size置為0,所以x-height(小寫x字母的高度)的一半也是0,即沒有高度

這樣一下,就相當于偽元素的中點只要與父元素的基線對齊就可以了,因為x-height是0,所以加與不加無所謂;再加上Css中元素默認是左上方對齊的,對于這個限制,也就是說當偽元素加上vertical-align:middle后,默認情況下它是不會超出父元素的范圍顯示的,那么這時偽元素高度已確定:父元素高度的100%,中點也已確定
接下來偽元素就會對父元素說:我垂直方向的中點已經確定了,變是不可能變的,這輩子都不可能變,但我的中點想和你的基線對齊,你自己看著辦吧
然后父元素妥協了,將它自身的基線移動到與偽元素中點水平對齊的位置,到此父元素基線的位置也已確定,近似其高度的一半
最后.child元素添加了自己的vertical-align:middle,按照middle: 使元素的中部與父元素的基線加上父元素x-height的一半對齊這句定義,.child元素的font-size由于繼承關系也是0,所以它的中點也就自然而然與早已確定的父元素基線對齊,從而實現垂直居中,到此結束

以上是“CSS垂直居中怎么實現”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

css
AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女