利用純CSS實(shí)現(xiàn)居中的七大方法示例

前言
記得有次找工作面試的時(shí)候,一面試官問了一個(gè)CSS方面的問題:如何讓元素在瀏覽器窗口中上下左右居中。我記得當(dāng)時(shí)給了個(gè)答案是,先用JS獲取瀏覽器窗口高度,然后給body設(shè)置line-height為窗口高度并設(shè)置text-align:center, 接著再設(shè)置該元素display:inline-block和vertical-align:middle。唉,現(xiàn)在想想自己都覺得累。
難道就一定要用到JS嗎?就不能有一種只用CSS方法就能實(shí)現(xiàn)元素居中的方法嗎?答案是,有!而且方法遠(yuǎn)不止一種!
一、line-height居中法
父元素:text-align: center; line-height:600px; font-size: 0;
子元素:display: inline-block; vertical-align: middle;
注:600px必須為父元素的高度,這里還需注意的一點(diǎn)是font-size需設(shè)為零,若未寫該屬性將導(dǎo)致元素并不能精確垂直居中。該方法即為我面試時(shí)所答的方法,缺點(diǎn)很明顯,父元素高度須確定。(兼容IE8+)
二、table-cell居中法
父元素:display: table-cell; text-align: center; vertical-align: middle;
子元素:display: inline-block;
注:兼容IE8+
三、上下左右定位+margin居中法
父元素:position: relative;
子元素:position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin: auto;
注:兼容IE8+
四、50%定位+margin居中法
父元素:position: relative;
子元素:position: absolute; left: 50%; top: 50%; margin: -200px 0 0 -200px;
注:200px須為該子元素的寬高的一半。例如該子元素寬為100px,高為50px,那么margin取值為-25px 0 0 -50px。該方法缺點(diǎn)是須確定子元素寬高。(兼容IE8+)
五、50%定位+translate居中法
父元素:position: relative;
子元素:position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%);
注:該方法使用了CSS3 transform屬性,適合用于移動(dòng)端。(兼容IE9+)
六、Flexbox居中法
父元素:display: flex; justify-content: center; align-items: center;
注:該方法使用了Flexbox彈性布局,移動(dòng)端兼容性也存在很大問題。(兼容IE10+)
七、Flexbox+margin居中法
父元素:display: flex;
子元素:margin: auto;
注:同上,兼容IE10+
總結(jié)
以上就是今天所要介紹的七種純CSS居中方法,各有各的優(yōu)缺點(diǎn),須根據(jù)實(shí)際情況選擇最佳方案,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
- 垂直居中是布局中十分常見的效果之一,這篇文章主要介紹了純CSS實(shí)現(xiàn)垂直居中的9種方法,感興趣的小伙伴們可以參考一下2016-03-09
純css多種方法實(shí)現(xiàn)div中單行文字、多行文字及嵌套div垂直水平居中
經(jīng)常遇到要居中的問題,水平居中問題比較好解決,而垂直居中問題因?yàn)関ertical-align經(jīng)常失效,下面與大家分享下幾個(gè)不錯(cuò)的解決方法2014-04-24完全純css實(shí)現(xiàn)div自適應(yīng)居中兼容IE7 Chrome FireFox
純CSS,完全無需JS實(shí)現(xiàn)自適應(yīng)居中并且兼容IE7+ Chrome FireFox 等,對JS程序猿來說一種解放,下面有個(gè)不錯(cuò)的示例,大家可以參考下2014-03-26用純CSS實(shí)現(xiàn)容器內(nèi)圖片上下左右居中
DIV容器內(nèi)設(shè)置 text-align:center 即可讓圖片居中,但是DIV內(nèi)默認(rèn)的圖片是上對齊,不會(huì)上下居中,下面為大家介紹下只用CSS實(shí)現(xiàn)容器內(nèi)圖片上下左右居中,感興趣的朋友可以參2014-01-08- 作為前端攻城師,在制作Web頁面時(shí)都有碰到CSS制作水平垂直居中,我想大家都有研究過或者寫過,特別的其中的垂直居中,更是讓人煩惱,下面這篇文章主要給大家匯總介紹了關(guān)于2017-09-12
- 這篇文章給大家整理四種css實(shí)現(xiàn)垂直居中效果,思路明了非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-09-06
HTML+CSS實(shí)現(xiàn)單列布局水平居中布局
這篇文章主要介紹了HTML+CSS實(shí)現(xiàn)單列布局水平居中布局的相關(guān)資料,需要的朋友可以參考下2017-09-06css實(shí)現(xiàn)元素水平垂直居中常見的兩種方式實(shí)例詳解
這篇文章主要給大家介紹了css實(shí)現(xiàn)元素水平垂直居中的兩種方式,文中給出了完整的示例代碼供大家參考學(xué)習(xí),對大家的學(xué)習(xí)或者工作具有一定的參考價(jià)值,有需要的朋友們下面來2017-04-23- 這篇文章主要介紹了CSS水平垂直居中的幾種方法總結(jié),垂直居中是布局中十分常見的效果之一,本文介紹了幾種方法,有興趣的可以了解一下。2016-12-19
- 居中是我們使用css來布局時(shí)常遇到的情況。使用css來進(jìn)行居中時(shí),有時(shí)一個(gè)屬性就能搞定,本篇文章主要介紹了CSS布局奇淫技巧之--各種居中,有興趣的可以了解一下。2016-12-09