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