摘要:居中算是一個(gè)比較基礎(chǔ)的問題,在實(shí)際運(yùn)用中,需要考慮到的一般是兩種情況,一種是主要是表現(xiàn)為文字,圖片等行內(nèi)元素的居中,一種是指等塊級(jí)標(biāo)簽元素的居中。
CSS居中算是一個(gè)比較基礎(chǔ)的問題,在實(shí)際運(yùn)用中,需要考慮到的一般是兩種情況,一種是主要是表現(xiàn)為文字,圖片等行內(nèi)元素的居中,一種是指 div 等塊級(jí)標(biāo)簽元素的居中。1.水平居中
?
text-align
【場(chǎng)景一】:在父元素中設(shè)置text-align:center實(shí)現(xiàn)行內(nèi)元素水平居中
將子元素的display設(shè)置為inline-block,使子元素變成行內(nèi)元素
[注意]若要兼容IE7-瀏覽器,可使用display:inline;zoom:1;來達(dá)到inline-block的效果
html代碼:
1 <div class="parent" style="background-color: gray;"> 2 <div class="child" style="background-color: lightblue;">DEMOdiv>
css代碼:
1 .parent{text-align: center;} 2 .child{display: inline-block;}
這種方法的不足之處在于,子元素的text-align繼承了父元素的center,文字也居中顯示,所以需要在子元素中設(shè)置text-align:left
?
【場(chǎng)景二】:在本身元素設(shè)置margin: 0 auto實(shí)現(xiàn)塊級(jí)元素水平居中
將子元素的display為table,使子元素成為塊級(jí)元素,同時(shí)table還具有包裹性,寬度由內(nèi)容撐開
[注意]若要兼容IE7-瀏覽器,可把child的結(jié)構(gòu)換成DEMO
html代碼:
1 <div class="parent" style="background-color: gray;"> 2 <div class="child" style="background-color: lightblue;">DEMOdiv> 3 div>
css代碼:
1 .child{ 2 display: table; 3 margin: 0 auto; 4 }
該方案的優(yōu)點(diǎn)在于,只設(shè)置父級(jí)元素即可實(shí)現(xiàn)居中效果
?
【場(chǎng)景三】:若子元素定寬,則可以使用絕對(duì)定位的盒模型屬性,實(shí)現(xiàn)居中效果;若不設(shè)置寬度時(shí),子元素被拉伸
html代碼:
1 <div class="parent" style="background-color: gray;height: 20px;"> 2 <div class="child" style="background-color: lightblue;">DEMOdiv> 3 div>
css代碼:
1 .parent{ 2 position: relative; 3 } 4 .child{ 5 position: absolute; 6 left: 0; 7 right: 0; 8 margin: 0 auto; 9 width: 50px; 10 }
?
【思路四】: 通過絕對(duì)定位的偏移屬性實(shí)現(xiàn)水平居中
配合translate()位移函數(shù)
translate函數(shù)的百分比是相對(duì)于自身寬度的,所以left:50%配合translateX(-50%)可實(shí)現(xiàn)居中效果
[注意]IE9-瀏覽器不支持
html代碼:
1 <div class="parent" style="background-color: gray;height: 20px;"> 2 <div class="child" style="background-color: lightblue;">DEMOdiv> 3 div>
css代碼:
1 .parent{ 2 position: relative; 3 } 4 .child{ 5 position: absolute; 6 left: 50%; 7 transform:translateX(-50%); 8 }
?
【思路五】relative數(shù)值型的偏移屬性是相對(duì)于自身的,但百分比卻是相對(duì)于包含塊的。因?yàn)樽釉匾呀?jīng)被設(shè)置為absolute,所以若使用relative,則需要增加一層
[注意]該方法全兼容,但是增加了html結(jié)構(gòu)
html代碼:
1 <div class="parent" style="background-color: gray;height: 20px;"> 2 <div class="childWrap"> 3 <div class="child" style="background-color: lightblue;">DEMOdiv> 4 div> 5 div>
css代碼:
1 .parent{ 2 position: relative; 3 } 4 .childWrap{ 5 position: absolute; 6 left: 50%; 7 } 8 .child{ 9 position: relative; 10 left: -50%; 11 }
?
【思路六】配合負(fù)margin
margin的百分比是相對(duì)于包含塊的,所以需要增加一層
[注意]雖然全兼容,但需要增加頁面結(jié)構(gòu)及定寬處理,所以限制了應(yīng)用場(chǎng)景
html代碼:
1 <div class="parent" style="background-color: gray;height: 20px;"> 2 <div class="childWrap"> 3 <div class="child" style="background-color: lightblue;">DEMOdiv> 4 div> 5 div>
css代碼:
1 .parent{ 2 position: relative; 3 } 4 .childWrap{ 5 position: absolute; 6 left: 50%; 7 } 8 .child{ 9 width:50px; 10 margin-left:-50%; 11 }
?
【思路七】: 使用彈性盒模型flex實(shí)現(xiàn)水平居中
[注意]IE9-瀏覽器不支持
在伸縮容器上設(shè)置主軸對(duì)齊方式j(luò)ustify-content:center
html代碼:
1 <div class="parent" style="background-color: gray;"> 2 <div class="child" style="background-color: lightblue;">DEMOdiv> 3 div>
css代碼:
1 .parent{ 2 display: flex; 3 justify-content: center; 4 }
?
【思路八】在伸縮項(xiàng)目上設(shè)置margin: 0 auto
html代碼:
1 <div class="parent" style="background-color: gray;"> 2 <div class="child" style="background-color: lightblue;">DEMOdiv> 3 div>
css代碼:
1 .parent{display: flex;} 2 .child{margin: 0 auto;}
?
【思路九】: 使用柵格布局grid實(shí)現(xiàn)水平居中
[注意]IE10-瀏覽器不支持
在網(wǎng)格容器上設(shè)置justify-items或justify-content
html代碼:
1 <div class="parent" style="background-color: gray;"> 2 <div class="child" style="background-color: lightblue;">DEMOdiv> 3 div>
css代碼:
1 .parent{ 2 display:grid; 3 justify-items:center; 4 /*justify-content:center;*/ 5 }
?
【思路十】在網(wǎng)格項(xiàng)目中設(shè)置justify-self或者margin: 0 auto
html代碼:
1 <div class="parent" style="background-color: gray;"> 2 <div class="child" style="background-color: lightblue;">DEMOdiv> 3 div>
css代碼:
1 .parent{ 2 display:grid; 3 } 4 .child{ 5 justify-self:center; 6 /*margin: 0 auto;*/ 7 }
?
?
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/1703.html
摘要:如果我們直接可以計(jì)算出正確的和值,豈不是一次到位函數(shù)正有此功能,當(dāng)然我們需要知道子元素的寬高效果是一個(gè)作用于內(nèi)聯(lián)元素的屬性。內(nèi)聯(lián)元素的特性是會(huì)和其它內(nèi)聯(lián)元素或者文字在同一行顯示,但是默認(rèn)情況下是與父元素基線對(duì)齊的。 ??CSS控制居中是前端開發(fā)中非常常用的布局技能,本文列出幾種CSS控制元素居中的幾種方法。??談及HTML元素居中展示,涉及到水平居中和垂直居中,以及水平垂直居中。由于H...
摘要:前言我們?cè)诰帉戱R過程中,想必大家對(duì)水平垂直居中的方法了解并不多。所以我給大家總結(jié)式的列出幾種常用的水平垂直居中的方法。 前言 我們?cè)诰帉戱R過程中,想必大家對(duì)水平垂直居中的方法了解并不多。所以我給大家總結(jié)式的列出幾種常用的水平垂直居中的方法。 第一種方法 d第一種 .Centered1{ background-color: #800...
摘要:在某些特定的場(chǎng)合,在沒有知道寬度的情況下卻要求水平居中,前段時(shí)間在寫分頁的時(shí)候碰到了這個(gè)問題。但即使我們沒有設(shè)置的寬度直接設(shè)置的外邊距就可以實(shí)現(xiàn)水平居中了這樣我們就可以通過設(shè)置水平居中間接使里面的內(nèi)容居中。轉(zhuǎn)自未知寬度水平居中的幾種方法 在某些特定的場(chǎng)合,在沒有知道寬度的情況下卻要求水平居中,前段時(shí)間在寫分頁的時(shí)候碰到了這個(gè)問題。當(dāng)時(shí)在網(wǎng)上找了一些解決方法,并選了一個(gè)最合適的方法,現(xiàn)將...
摘要:在某些特定的場(chǎng)合,在沒有知道寬度的情況下卻要求水平居中,前段時(shí)間在寫分頁的時(shí)候碰到了這個(gè)問題。但即使我們沒有設(shè)置的寬度直接設(shè)置的外邊距就可以實(shí)現(xiàn)水平居中了這樣我們就可以通過設(shè)置水平居中間接使里面的內(nèi)容居中。轉(zhuǎn)自未知寬度水平居中的幾種方法 在某些特定的場(chǎng)合,在沒有知道寬度的情況下卻要求水平居中,前段時(shí)間在寫分頁的時(shí)候碰到了這個(gè)問題。當(dāng)時(shí)在網(wǎng)上找了一些解決方法,并選了一個(gè)最合適的方法,現(xiàn)將...
閱讀 1917·2021-11-25 09:43
閱讀 1422·2021-11-22 14:56
閱讀 3288·2021-11-22 09:34
閱讀 2026·2021-11-15 11:37
閱讀 2281·2021-09-01 10:46
閱讀 1408·2019-08-30 15:44
閱讀 2304·2019-08-30 13:15
閱讀 2403·2019-08-29 13:07