前端最佳PC端垂直居中和最佳移動(dòng)端垂直居中解決方案

不管是初學(xué)CSS還是面試考題熊咽,如何垂直居中一直是個(gè)老生常談的話題窟绷,可能你知道很多方法汇四,但是到底哪一個(gè)最好往往還是模棱兩可接奈,因此將在這里一一探討各種方法。

  • 基于絕對(duì)定位的解決方法
  • 兼容 IE6+
  • 優(yōu)點(diǎn) 兼容性極好
  • 缺點(diǎn) 代碼耦合通孽,需要定寬高

代碼如下:

div{
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -3em;
    margin-left: -9em;
    width: 18em;
    height: 6em;
}

這段代碼通過絕對(duì)定位,將元素偏移到左上50%的地方睁壁,此時(shí)將是垂直居中的狀態(tài)背苦,繼續(xù)設(shè)置其寬高,此時(shí)將以左上角垂直居中的點(diǎn)為擴(kuò)展向右下擴(kuò)張潘明,所以需要通過margin將其左上方向再次偏移寬高的一半行剂,從而達(dá)到垂直居中的效果。

  • 基于絕對(duì)定位的解決方法(升級(jí)版)
  • 兼容 IE9+
  • 優(yōu)點(diǎn) 代碼簡(jiǎn)潔
  • 缺點(diǎn) 代碼耦合钳降,需要定寬高

代碼如下:

div{
    position: absolute;
    top: calc(50% - 3em);
    left: calc(50% - 9em);
    width: 18em;
    height: 6em;
}

通過使用calc屬性厚宰,省去不必要的代碼。

  • 基于絕對(duì)定位的解決方法(最終版)
  • 兼容 IE9+
  • 優(yōu)點(diǎn) 代碼簡(jiǎn)潔,不用定寬高
  • 缺點(diǎn) 無法兼容IE8

代碼如下:

div{
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
  • 基于絕對(duì)定位的解決方法(PC兼容版最佳實(shí)踐)
  • 兼容 IE6+
  • 優(yōu)點(diǎn) 代碼簡(jiǎn)潔,不用定寬高
  • 缺點(diǎn) 需要絕對(duì)定位

代碼如下:

div{
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    left: 0;
    margin: auto;
}

通過使用絕對(duì)定位元素上下左右偏移設(shè)置為0遂填,使其在水平和垂直方向都具有流動(dòng)性铲觉,最后margin將從水平和垂直方向平分剩余空間。

  • 基于視口單位的解決方法
  • 兼容 IE9+
  • 優(yōu)點(diǎn) 代碼簡(jiǎn)潔,不用定寬高吓坚,不用絕對(duì)定位
  • 缺點(diǎn) 無法兼容IE8

在css3中撵幽,定義了一些新的單位vh,vw,vmin,vmax,1vh等于視口高度的1%,也就是100vh等于視口的100%vmin礁击,vmax分別是視口中較小值和較大值盐杂,于是我們有以下代碼:

div{
    width: 18em;
    margin: 50vh auto 0;
    transform: translate(-50%);
}
  • 基于Flexbox的解決方案(移動(dòng)端最佳解決方案)
  • 兼容 IE9+
  • 優(yōu)點(diǎn) 代碼簡(jiǎn)潔,不用定寬高逗载,不用絕對(duì)定位
  • 缺點(diǎn) 無法兼容IE8

Flexbox就是針對(duì)這個(gè)需求而被設(shè)計(jì)出來的,所以其便捷與簡(jiǎn)單性簡(jiǎn)直是開辟一個(gè)新天地链烈,代碼如下:

body{
    display: flex;
}
div{
    margin: auto;
}

看厉斟,就是這么簡(jiǎn)單,只需要一個(gè)容器設(shè)置flex布局强衡,然后設(shè)置margin,它就會(huì)自動(dòng)垂直居中捏膨,當(dāng)然我們也可以不用容器,代碼如下:

div{
    display: flex;
    align-items: center;
    justify-content: center;
    width: 18em;
    height: 10em;
    margin: auto;
}

通過align-items設(shè)置垂直居中食侮,使用justify-content水平居中号涯,最后使用margin均分剩余空間達(dá)到垂直居中效果,實(shí)在是美滋滋锯七。

其它居中方法链快,可自行百度,這里不推薦:

  1. 行內(nèi)文本垂直居中(近似垂直居中)
  2. 表格布局法(兼容性還可以)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末眉尸,一起剝皮案震驚了整個(gè)濱河市域蜗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌噪猾,老刑警劉巖霉祸,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抵卫,死亡現(xiàn)場(chǎng)離奇詭異牺六,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)犁享,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門坪蚁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奔穿,“玉大人,你說我怎么就攤上這事敏晤〖铮” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵嘴脾,是天一觀的道長(zhǎng)男摧。 經(jīng)常有香客問我,道長(zhǎng)译打,這世上最難降的妖魔是什么耗拓? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮扶平,結(jié)果婚禮上帆离,老公的妹妹穿的比我還像新娘。我一直安慰自己结澄,他們只是感情好哥谷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布岸夯。 她就那樣靜靜地躺著,像睡著了一般们妥。 火紅的嫁衣襯著肌膚如雪猜扮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天监婶,我揣著相機(jī)與錄音旅赢,去河邊找鬼。 笑死惑惶,一個(gè)胖子當(dāng)著我的面吹牛煮盼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播带污,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼僵控,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了鱼冀?” 一聲冷哼從身側(cè)響起报破,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎千绪,沒想到半個(gè)月后充易,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荸型,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年盹靴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帆疟。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鹉究,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出踪宠,到底是詐尸還是另有隱情,我是刑警寧澤妈嘹,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布柳琢,位于F島的核電站,受9級(jí)特大地震影響润脸,放射性物質(zhì)發(fā)生泄漏柬脸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一毙驯、第九天 我趴在偏房一處隱蔽的房頂上張望倒堕。 院中可真熱鬧,春花似錦爆价、人聲如沸垦巴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽骤宣。三九已至秦爆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間憔披,已是汗流浹背等限。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芬膝,地道東北人望门。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像锰霜,于是被迫代替她去往敵國(guó)和親筹误。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案锈遥? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,751評(píng)論 1 92
  • CSS布局解決方案(終結(jié)版) 前端布局非常重要的一環(huán)就是頁面框架的搭建纫事,也是最基礎(chǔ)的一環(huán)。在頁面框架的搭建之中所灸,又...
    殺個(gè)程序猿祭天閱讀 588評(píng)論 0 2
  • 前端布局非常重要的一環(huán)就是頁面框架的搭建丽惶,也是最基礎(chǔ)的一環(huán)。在頁面框架的搭建之中爬立,又有居中布局钾唬、多列布局以及全局布...
    HelloJames閱讀 370評(píng)論 0 2
  • 作者:無悔銘https://segmentfault.com/a/1190000013565024 前端布局非常重...
    YjWorld閱讀 305評(píng)論 0 2
  • 前端布局非常重要的一環(huán)就是頁面框架的搭建,也是最基礎(chǔ)的一環(huán)侠驯。在頁面框架的搭建之中抡秆,又有居中布局、多列布局以及全局布...
    BULL_DEBUG閱讀 356評(píng)論 0 3