摘要:居中算是一個比較基礎(chǔ)的問題,在實際運用中,需要考慮到的一般是兩種情況,一種是主要是表現(xiàn)為文字,圖片等行內(nèi)元素的居中,一種是指等塊級標(biāo)簽元素的居中。
CSS居中算是一個比較基礎(chǔ)的問題,在實際運用中,需要考慮到的一般是兩種情況,一種是主要是表現(xiàn)為文字,圖片等行內(nèi)元素的居中,一種是指 div 等塊級標(biāo)簽元素的居中。1.水平居中
?
text-align
【場景一】:在父元素中設(shè)置text-align:center實現(xiàn)行內(nèi)元素水平居中
將子元素的display設(shè)置為inline-block,使子元素變成行內(nèi)元素
[注意]若要兼容IE7-瀏覽器,可使用display:inline;zoom:1;來達到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
?
【場景二】:在本身元素設(shè)置margin: 0 auto實現(xiàn)塊級元素水平居中
將子元素的display為table,使子元素成為塊級元素,同時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)點在于,只設(shè)置父級元素即可實現(xiàn)居中效果
?
【場景三】:若子元素定寬,則可以使用絕對定位的盒模型屬性,實現(xiàn)居中效果;若不設(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 }
?
【思路四】: 通過絕對定位的偏移屬性實現(xiàn)水平居中
配合translate()位移函數(shù)
translate函數(shù)的百分比是相對于自身寬度的,所以left:50%配合translateX(-50%)可實現(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ù)值型的偏移屬性是相對于自身的,但百分比卻是相對于包含塊的。因為子元素已經(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 }
?
【思路六】配合負margin
margin的百分比是相對于包含塊的,所以需要增加一層
[注意]雖然全兼容,但需要增加頁面結(jié)構(gòu)及定寬處理,所以限制了應(yī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實現(xiàn)水平居中
[注意]IE9-瀏覽器不支持
在伸縮容器上設(shè)置主軸對齊方式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 }
?
【思路八】在伸縮項目上設(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實現(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)格項目中設(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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/1703.html
摘要:如果我們直接可以計算出正確的和值,豈不是一次到位函數(shù)正有此功能,當(dāng)然我們需要知道子元素的寬高效果是一個作用于內(nèi)聯(lián)元素的屬性。內(nèi)聯(lián)元素的特性是會和其它內(nèi)聯(lián)元素或者文字在同一行顯示,但是默認情況下是與父元素基線對齊的。 ??CSS控制居中是前端開發(fā)中非常常用的布局技能,本文列出幾種CSS控制元素居中的幾種方法。??談及HTML元素居中展示,涉及到水平居中和垂直居中,以及水平垂直居中。由于H...
摘要:前言我們在編寫馬過程中,想必大家對水平垂直居中的方法了解并不多。所以我給大家總結(jié)式的列出幾種常用的水平垂直居中的方法。 前言 我們在編寫馬過程中,想必大家對水平垂直居中的方法了解并不多。所以我給大家總結(jié)式的列出幾種常用的水平垂直居中的方法。 第一種方法 d第一種 .Centered1{ background-color: #800...
摘要:在某些特定的場合,在沒有知道寬度的情況下卻要求水平居中,前段時間在寫分頁的時候碰到了這個問題。但即使我們沒有設(shè)置的寬度直接設(shè)置的外邊距就可以實現(xiàn)水平居中了這樣我們就可以通過設(shè)置水平居中間接使里面的內(nèi)容居中。轉(zhuǎn)自未知寬度水平居中的幾種方法 在某些特定的場合,在沒有知道寬度的情況下卻要求水平居中,前段時間在寫分頁的時候碰到了這個問題。當(dāng)時在網(wǎng)上找了一些解決方法,并選了一個最合適的方法,現(xiàn)將...
摘要:在某些特定的場合,在沒有知道寬度的情況下卻要求水平居中,前段時間在寫分頁的時候碰到了這個問題。但即使我們沒有設(shè)置的寬度直接設(shè)置的外邊距就可以實現(xiàn)水平居中了這樣我們就可以通過設(shè)置水平居中間接使里面的內(nèi)容居中。轉(zhuǎn)自未知寬度水平居中的幾種方法 在某些特定的場合,在沒有知道寬度的情況下卻要求水平居中,前段時間在寫分頁的時候碰到了這個問題。當(dāng)時在網(wǎng)上找了一些解決方法,并選了一個最合適的方法,現(xiàn)將...
閱讀 1990·2021-11-25 09:43
閱讀 1476·2021-11-22 14:56
閱讀 3337·2021-11-22 09:34
閱讀 2102·2021-11-15 11:37
閱讀 2371·2021-09-01 10:46
閱讀 1462·2019-08-30 15:44
閱讀 2351·2019-08-30 13:15
閱讀 2447·2019-08-29 13:07