在前端布局過程中,我們實現水平居中比較簡單,一般通過margin:0 auto;和父元素 text-align: center;就能實現。但要實現垂直居中就沒有那么容易,下面向大家分享下我工作中實現垂直居中的幾種方法。
這種方法比較適合文字的居中,其核心是設置行高(line-height)等于包裹他的盒子的高,或者不設高度只設行高,這種適合文字居中且高度固定的場景,使用起來比較方便也比較有用。
//html<div class="middle">555</div> //css.middle{ height: 50px; line-height: 50px; background: red;}
值得注意的是
如果是行內元素,因為其沒有高度,需先把行內元素轉換為行內塊或者塊元素。
這種實現元素的居中需要配合父元素設有等于自身高度的行高,且此元素是行內塊元素。 只有三個條件都具備,才能實現垂直居中。代碼如下:
//html<div class="main"> <div class="middle"></div></div>//css.main { width: 200px; height: 300px; line-height: 300px; background: #dddddd;}.middle{ background: red; width: 200px; height: 50px; display: inline-block;//或者display: inline-table; vertical-align: middle;}
需要注意的是這種方法需要一個固定的行高,且實現的居中其實是 近似居中 ,并不是真正意義的居中。
這種方法核心在于先設置需要居中的元素為絕對定位,在設置其top:50%; 加上 margin-top等于負的自身高度的一半來實現居中。好處是實現起來比較方便,且父元素的高度可以為百分比,也不用設行高。代碼如下:
//html<div class="main"> <div class="middle"></div></div> //css.main { width: 60px; height: 10%; background: #dddddd; position: relative;//父元素設為相對定位}.middle{ position: absolute;//設為絕對定位 top: 50%;//top值為50% margin-top: -25%;//設margin-top為元素高度的一半 width: 60px; height: 50%; background: red;}
先上代碼:
//html<div class="main"> <div class="middle"></div></div> //css.main { width: 60px; height: 10%; background: #dddddd; position: relative;//父元素設為相對定位}.middle{ width: 30%; height: 50%; position: absolute;//設為絕對定位 top: 0; bottom: 0;//top、bottom設0即可, left: 0;//如果left、right也設為0則可實現水平垂直都居中 right: 0; margin:auto; background: red;}
這種方法好處是 不止可以實現垂直居中,還可以實現水平居中 ,壞處是在網絡或性能不好的情況下 會有盒子不直接定到位的情況 ,造成用戶體驗不好。
5、flex布局
flex布局可以很方便的實現垂直與水平居中,好處很多,在移動端使用比較廣泛,壞處就是 瀏覽器兼容性不好 。代碼如下:
//html<div class="main"> <div class="middle"></div></div> //css.main { width: 60px; height: 10%; background: #dddddd; display: flex;//設為flex justify-content: center;//水平居中 align-items: center;//垂直居中}.middle{ width: 30%; height: 50%; background: red;}
總結
以上所述是小編給大家介紹的CSS實現垂直居中的幾種方法小結,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!
新聞熱點
疑難解答