CSS解決居中問題方案匯總

在你剛?cè)肭岸酥酰又羞@個(gè)問題有時(shí)候會帶給你一些煩惱沸柔,特別是垂直居中议惰,這篇博客將從水平居中——垂直居中——整體居中方面提供全套解決方案。

注:著急看垂直居中或者整體居中可以直接往后翻

水平居中

我們的需求是實(shí)現(xiàn)不定寬高的居中悲酷,初始代碼如下

    <div class="father" style="background-color:aqua">
        <div class="child" style="background-color: yellow">
            居中
        </div>
    </div>

結(jié)果是這樣的


1.png

很容易發(fā)現(xiàn)子元素占用了父元素的所有寬度。下面列出了三種水平居中的解決方案

1. text-align + inline-block
        .father{
            text-align: center;
        }
        .child{
            display: inline-block;
        }
inline-block: 收斂子元素的寬度使其寬度隨內(nèi)容而定亲善,text-align, 使收斂后的子元素居中

優(yōu)點(diǎn):兼容性好舔涎,除了IE6,7之外,基本上無兼容問題逗爹。
缺點(diǎn):text-align導(dǎo)致子元素內(nèi)容也居中,這在某些情況下是不希望見到的。

2. table + margin

table: 表面上像block掘而,其實(shí)他的寬度是跟著內(nèi)容走的于是乎我們可以這樣

        .father{}
        .child{
            display: table;
            margin: 0 auto;
        }

結(jié)果是這樣的


2.png

優(yōu)點(diǎn):只作用父元素挟冠,兼容IE8及以上

3. relative + absolute

這個(gè)不多說,相信大家平時(shí)用的也比較多

        .father{
            position: relative;
        }
        .child{
            position: absolute;
            left:50%;
            transform: translateX(-50%);
        }

值得注意的是父元素相對定位后袍睡,其高度塌陷為0導(dǎo)致背景顏色無法顯示知染,但居中目的確實(shí)是達(dá)到了。


3.png
4. flex + justify

Flex:牽涉到彈性盒子布局斑胜,如果對此不了解控淡,很樂意當(dāng)一個(gè)傳送門
Flexbox
假定你已經(jīng)了解了Flex或者看完了上述介紹,那我就直奔主題直接給出代碼止潘。

        .father{
            display: flex;
            justify-content: center;
        }
        .child{}

優(yōu)點(diǎn):簡單
缺點(diǎn):兼容性掺炭,甚至在某些較新的非IE瀏覽器還依據(jù)需要加上廠商前綴


垂直居中

相信你對vertical-align不陌生,聽說可以使元素垂直居中凭戴,但為啥每次使用都沒效果涧狮,在這說明一下,vertical-align只對inline, inline-block, table等級別元素有效么夫,注意這里不包括block者冤。好了,直奔主題档痪。

1. table-cell + vertical
        .father{
            display: table-cell;
            vertical-align: middle;
        }

細(xì)心的你可能發(fā)現(xiàn)了子元素的寬度等同于父元素


5.png

優(yōu)點(diǎn): 簡單涉枫,只作用于父元素
缺點(diǎn): 除了很低版本的IE外,好像還真沒啥

2. absolute + transform

原理很簡單腐螟,直接給出代碼

        .father{
            position: relative;
        }
        .child{
            position: absolute;
            top:50%;
            transform: translateY(-50%);
        }
6.png

這個(gè)剛好子元素的寬度為其內(nèi)容寬度愿汰。
缺點(diǎn):兼容問題 詳查Can I use?

3. flex + align-items

不多說,你都看到這里,這就不是問題了遭垛,什么你真是跳著看的尼桶,好吧,再次勉為其難的送上一道傳送門锯仪。
Flex

        .father{
            display: flex;
            align-items: center;
        }

效果如上
缺點(diǎn):兼容問題 詳查Can I use?


整體居中

1. inline-block + text-align + table-cell + vertical

思路很簡單泵督,先實(shí)現(xiàn)水平居中再實(shí)現(xiàn)垂直居中,你要反過來也可以庶喜。

        .father{
            text-align: center;
            display: table-cell;
            vertical-align: middle;
        }
        .child{
            display: inline-block;
        }
2. absolute + transform
        .father{
            position: relative;
        }
        .child{
            position: absolute;
            top:50%;
            left:50%;
            transform: translate(-50%,-50%);
        }
7.png
3. flex + justify + align-items
        .father{
            display: flex;
            justify-content: center;
            align-items: center;
        }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末小腊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子久窟,更是在濱河造成了極大的恐慌秩冈,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斥扛,死亡現(xiàn)場離奇詭異入问,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門芬失,熙熙樓的掌柜王于貴愁眉苦臉地迎上來楣黍,“玉大人,你說我怎么就攤上這事棱烂∽馄” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵颊糜,是天一觀的道長哩治。 經(jīng)常有香客問我,道長衬鱼,這世上最難降的妖魔是什么业筏? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮馁启,結(jié)果婚禮上驾孔,老公的妹妹穿的比我還像新娘。我一直安慰自己惯疙,他們只是感情好翠勉,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著霉颠,像睡著了一般对碌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蒿偎,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天朽们,我揣著相機(jī)與錄音,去河邊找鬼诉位。 笑死骑脱,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的苍糠。 我是一名探鬼主播叁丧,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼岳瞭!你這毒婦竟也來了拥娄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤瞳筏,失蹤者是張志新(化名)和其女友劉穎稚瘾,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姚炕,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡摊欠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年丢烘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凄硼。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡铅协,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出摊沉,到底是詐尸還是另有隱情,我是刑警寧澤痒给,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布说墨,位于F島的核電站,受9級特大地震影響苍柏,放射性物質(zhì)發(fā)生泄漏尼斧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一试吁、第九天 我趴在偏房一處隱蔽的房頂上張望棺棵。 院中可真熱鬧,春花似錦熄捍、人聲如沸烛恤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缚柏。三九已至,卻和暖如春碟贾,著一層夾襖步出監(jiān)牢的瞬間币喧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工袱耽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杀餐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓朱巨,卻偏偏與公主長得像史翘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子蔬崩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345