元素居中方法匯總

在日常的開發(fā)過程中,總會(huì)遇到一些情況需要元素居中,下面列舉了部分元素居中方法。

一、實(shí)現(xiàn)不定寬高水平垂直居中

.parent{

????????justify-content:center; /* 子元素水平居中 */

????????align-items:center; /* 子元素垂直居中 */

????????display:-webkit-flex;

}

二、div絕對(duì)定位水平垂直居中-margin:auto實(shí)現(xiàn)絕對(duì)定位元素的居中

.div{

????????width: 100px;

????????height: 100px;

????????border: 4px solid red;

????????text-align: center;

????????position: absolute;

????????left:0;

????????right:0;

????????top: 0;

????????bottom: 0;

????????margin: auto;

????????/*50%為自身尺寸的一半*/

}

代碼關(guān)鍵點(diǎn):

????????1.上下左右均0位置定位;

????????2.margin: auto; 其width、height如何更改都是居中顯示的,兼容性可以,IE7及之前版本不支持

優(yōu)點(diǎn):

????????1.支持跨瀏覽器,包括IE8-IE10.

????????2.無需其他特殊標(biāo)記,CSS代碼量少

????????3.支持百分比%屬性值和min-/max-屬性

????????4.只用這一個(gè)類可實(shí)現(xiàn)任何內(nèi)容塊居中

????????5.不論是否設(shè)置padding都可居中(在不使用box-sizing屬性的前提下)

????????6.內(nèi)容塊可以被重繪。

????????7.完美支持圖片居中。

缺點(diǎn):

????????1.必須聲明高度(查看可變高度Variable Height)。

????????2.建議設(shè)置overflow:auto來防止內(nèi)容越界溢出。(查看溢出Overflow)。

????????3.在Windows Phone設(shè)備上不起作用。

三、div絕對(duì)定位水平垂直居中-margin 負(fù)間距

.div{

????????width: 100px;

????????height: 100px;

????????background-color: green;

????????position: absolute;

????????left: 50%;

????????top: 50%;

????????margin-left: -50px; /*? width/2? */

????????margin-top: -50px; /* height /2 */

}

代碼關(guān)鍵點(diǎn):

????????1.必需知道該div的寬度和高度,

????????2.然后設(shè)置位置為絕對(duì)位置,

????????3.距離頁面窗口左邊框和上邊框的距離設(shè)置為50%,這個(gè)50%就是指頁面窗口的寬度和高度的50%,

????????4.最后將該div分別左移和上移,左移和上移的大小就是該DIV寬度和高度的一半。

優(yōu)點(diǎn):

????????1.良好的跨瀏覽器特性,兼容IE6-IE7。

????????2.代碼量少。

缺點(diǎn):

????????1.不能自適應(yīng)。不支持百分比尺寸和min-/max-屬性設(shè)置。

????????2.內(nèi)容可能溢出容器。

????????3.邊距大小與padding,和是否定義box-sizing: border-box有關(guān),計(jì)算需要根據(jù)不同情況。

四、div絕對(duì)定位水平垂直居中-Transforms 變形

.div{

????????width: 200px;

????????height: 200px;

????????background-color: pink;

????????position: absolute;

????????left:50%;

????????top: 50%;

????????-webkit-transform: translate(-50%,-50%);

????????-ms-transform: translate(-50%,-50%);

????????transform: translate(-50%,-50%);

}

代碼關(guān)鍵點(diǎn):

????????內(nèi)容塊定義transform: translate(-50%,-50%)必須加上top: 50%; left: 50%;

優(yōu)點(diǎn):

????????1.內(nèi)容可變高度

????????2.代碼量少

????????3.不僅能實(shí)現(xiàn)絕對(duì)居中同樣的效果,也支持聯(lián)合可變高度方式使用。

缺點(diǎn):

????????1.IE8不支持

????????2.屬性需要寫瀏覽器廠商前綴

????????3.可能干擾其他transform效果

????????4.某些情形下會(huì)出現(xiàn)文本或元素邊界渲染模糊的現(xiàn)象


????????有參考一些前輩的方法,跟大家分享一下。

????????加油!這一秒不放棄,下一秒就有希望!堅(jiān)持下去才可能成功!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 各種純css圖標(biāo) CSS3可以實(shí)現(xiàn)很多漂亮的圖形,我收集了32種圖形,在下面列出。直接用CSS3畫出這些圖形,要比...
    劍殘閱讀 9,990評(píng)論 0 8
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,829評(píng)論 1 45
  • div水平居中的N種方法 一、單行垂直居中 如果一個(gè)容器中只有一行文字,對(duì)它實(shí)現(xiàn)居中相對(duì)比較簡(jiǎn)單,我們只需要設(shè)置它...
    fredah閱讀 6,051評(píng)論 0 1
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,168評(píng)論 1 92
  • 聲測(cè)管一般多少米一節(jié)是屬于國(guó)標(biāo)正常范圍在《超聲法檢測(cè)混凝土缺陷技術(shù)規(guī)程》(CECS21:2000)給出了建議,一般...
    BOXUNGG閱讀 1,315評(píng)論 0 0

友情鏈接更多精彩內(nèi)容