CSS實(shí)現(xiàn)垂直居中的幾種方法小結(jié)
在前端布局過程中,我們實(shí)現(xiàn)水平居中比較簡(jiǎn)單,一般通過margin:0 auto;和父元素 text-align: center;就能實(shí)現(xiàn)。但要實(shí)現(xiàn)垂直居中就沒有那么容易,下面向大家分享下我工作中實(shí)現(xiàn)垂直居中的幾種方法。
1、line-height等于hieght/只設(shè)line-height
這種方法比較適合文字的居中,其核心是設(shè)置行高(line-height)等于包裹他的盒子的高,或者不設(shè)高度只設(shè)行高,這種適合文字居中且高度固定的場(chǎng)景,使用起來比較方便也比較有用。
//html
<div class="middle">555</div>
//css
.middle{
height: 50px;
line-height: 50px;
background: red;
}

值得注意的是
如果是行內(nèi)元素,因?yàn)槠錄]有高度,需先把行內(nèi)元素轉(zhuǎn)換為行內(nèi)塊或者塊元素。
2、vertical-align: middle
這種實(shí)現(xiàn)元素的居中需要配合父元素設(shè)有等于自身高度的行高,且此元素是行內(nèi)塊元素。 只有三個(gè)條件都具備,才能實(shí)現(xiàn)垂直居中。代碼如下:
//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;
}

需要注意的是這種方法需要一個(gè)固定的行高,且實(shí)現(xiàn)的居中其實(shí)是 近似居中 ,并不是真正意義的居中。
3、絕對(duì)定位加負(fù)外邊距
這種方法核心在于先設(shè)置需要居中的元素為絕對(duì)定位,在設(shè)置其top:50%; 加上 margin-top等于負(fù)的自身高度的一半來實(shí)現(xiàn)居中。好處是實(shí)現(xiàn)起來比較方便,且父元素的高度可以為百分比,也不用設(shè)行高。代碼如下:
//html
<div class="main">
<div class="middle"></div>
</div>
//css
.main {
width: 60px;
height: 10%;
background: #dddddd;
position: relative;//父元素設(shè)為相對(duì)定位
}
.middle{
position: absolute;//設(shè)為絕對(duì)定位
top: 50%;//top值為50%
margin-top: -25%;//設(shè)margin-top為元素高度的一半
width: 60px;
height: 50%;
background: red;
}
4、絕對(duì)定位加margin:auto
先上代碼:
//html
<div class="main">
<div class="middle"></div>
</div>
//css
.main {
width: 60px;
height: 10%;
background: #dddddd;
position: relative;//父元素設(shè)為相對(duì)定位
}
.middle{
width: 30%;
height: 50%;
position: absolute;//設(shè)為絕對(duì)定位
top: 0;
bottom: 0;//top、bottom設(shè)0即可,
left: 0;//如果left、right也設(shè)為0則可實(shí)現(xiàn)水平垂直都居中
right: 0;
margin:auto;
background: red;
}
這種方法好處是 不止可以實(shí)現(xiàn)垂直居中,還可以實(shí)現(xiàn)水平居中 ,壞處是在網(wǎng)絡(luò)或性能不好的情況下 會(huì)有盒子不直接定到位的情況 ,造成用戶體驗(yàn)不好。
5、flex布局
flex布局可以很方便的實(shí)現(xiàn)垂直與水平居中,好處很多,在移動(dòng)端使用比較廣泛,壞處就是 瀏覽器兼容性不好 。代碼如下:
//html
<div class="main">
<div class="middle"></div>
</div>
//css
.main {
width: 60px;
height: 10%;
background: #dddddd;
display: flex;//設(shè)為flex
justify-content: center;//水平居中
align-items: center;//垂直居中
}
.middle{
width: 30%;
height: 50%;
background: red;
}

總結(jié)
以上所述是小編給大家介紹的CSS實(shí)現(xiàn)垂直居中的幾種方法小結(jié),希望對(duì)大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
- 這篇文章主要介紹了CSS3 不定高寬垂直水平居中的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起2020-03-26

利用css樣式實(shí)現(xiàn)表格中字體垂直居中的方法
這篇文章主要介紹了利用css樣式實(shí)現(xiàn)表格中字體垂直居中的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-16
CSS3實(shí)現(xiàn)水平居中、垂直居中、水平垂直居中的實(shí)例代碼
在前端面試中經(jīng)常會(huì)遇到css居中效果的實(shí)現(xiàn),今天小編給大家分享幾種css垂直水平居中的方法,通過實(shí)例代碼給大家講解,需要的朋友參考下吧2020-02-27
手把手教你CSS水平、垂直居中的10種方式(小結(jié))
這篇文章主要介紹了手把手教你CSS水平、垂直居中的10種方式(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著2019-11-07- 這篇文章主要介紹了css常用元素水平垂直居中方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)2019-08-09
- 這篇文章主要給大家介紹了關(guān)于css布局教程之如何實(shí)現(xiàn)垂直居中的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用css具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下2019-07-12

CSS垂直居中的另類實(shí)現(xiàn)代碼詳解(不走尋常路)
這篇文章主要介紹了CSS垂直居中的另類實(shí)現(xiàn)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-02






