常見的CSS居中及布局方法

css居中是前端開發(fā)中常用方法,掌握各種居中的方法可以提高開發(fā)效率,對(duì)準(zhǔn)確的還原設(shè)計(jì)頁(yè)面有很大的幫助。本文章整理了一些在開發(fā)中常用的居中技巧。

1.水平居中


1.1內(nèi)聯(lián)元素水平居中

利用text-align: center 可以實(shí)現(xiàn)在塊級(jí)元素內(nèi)部的內(nèi)聯(lián)元素水平居中。此方法對(duì)內(nèi)聯(lián)元素inline, 內(nèi)聯(lián)塊inline-block, 內(nèi)聯(lián)表(inline-table, inline-flex元素水平居中都有效。核心代碼:

.parent{
  text-align:center;
}

演示demo-1

1.2塊級(jí)元素水平居中

通過把固定寬度塊級(jí)元素的margin-leftmargin-right設(shè)成auto,就可以使塊級(jí)元素水平居中。核心代碼:

.child{
margin:0 auto;
}

演示demo-2

1.3 多塊級(jí)元素水平居中

1.3.1 利用inline-block

如果一行中有兩個(gè)或兩個(gè)以上的塊級(jí)元素,通過設(shè)置塊級(jí)元素的顯示類型為inline-block和父容器的text-align屬性從而使多塊級(jí)元素水平居中。核心代碼:

.parent{
    text-align:center;
}
.child-1, .child-2{
    display:inline-block;  
}

演示demo-3

1.3.2 利用display: flex

利用彈性布局flex,實(shí)現(xiàn)水平居中,其中justify-content 用于設(shè)置彈性盒子元素在主軸(橫軸)方向上的對(duì)齊方式,本例中設(shè)置子元素水平居中顯示。核心代碼:

.parent{
    display: flex;
    justify-content: center;
}

演示demo-4


2.垂直居中

2.1單行內(nèi)聯(lián)(inline-)元素垂直居中

通過設(shè)置內(nèi)聯(lián)元素的高度height和行高line-height相等,從而使元素垂直居中核心代碼:

.parent{
   height:150px;
   line-height:150px;
}

演示demo-5

2.2 多行元素垂直居中

2.2.1 利用表布局(table)

利用表布局的vertical-align: middle可以實(shí)現(xiàn)子元素的垂直居中。核心代碼:

.parent{
    display:table
}
.child{
   display: table-cell;
   vertical-align: middle; 
}

演示demo-6

2.2.2 利用flex布局

利用flex布局實(shí)現(xiàn)垂直居中,其中flex-direction: column定義主軸方向?yàn)榭v向。核心代碼:

.parent{
   display:flex;
   flex-direction:column;
   justify-content:center;
}

演示demo-7

2.3 塊級(jí)元素垂直居中

2.3.1 固定高度的塊級(jí)元素

如果已知居中元素的高度和寬度,垂直居中問題就很簡(jiǎn)單。通過絕對(duì)定位元素距離頂部50%,并設(shè)置margin-top向上偏移元素高度的一半,就可以實(shí)現(xiàn)垂直居中了。核心代碼:

.parent{
    position:relative;
}
.child{
    position:absolute;
    height:60px;
    top:50%;
    margin-top:-30px;
}

演示demo-8

2.3.2 未知高度的塊級(jí)元素

當(dāng)垂直居中的元素的高度和寬度未知時(shí),可以借助CSS3中的transform屬性向Y軸反向偏移50%的方法實(shí)現(xiàn)垂直居中。部分瀏覽器存在兼容性的問題。
核心代碼:

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

演示demo-9


3.水平垂直居中

3.1 未知寬高元素水平垂直居中

利用2D變換,在水平和垂直兩個(gè)方向都向反向平移寬高的一半,從而使元素水平垂直居中。核心代碼:

.parent {
    position: relative;
}
.child {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

演示demo-10

3.2 利用flex布局

利用flex布局,其中justify-content 用于設(shè)置或檢索彈性盒子元素在主軸(橫軸)方向上的對(duì)齊方式;而align-items屬性定義flex子項(xiàng)在flex容器的當(dāng)前行的側(cè)軸(縱軸)方向上的對(duì)齊方式。
核心代碼:

.parent {
    display: flex;
    justify-content: center;
    align-items: center;
}

演示demo-11


4.常見布局方法

html文檔:

<div class="parent">
  <div class="left"></div>
  <div class="middle"></div>
  <div class="right"></div>
</div>

4.1左列定寬,右列自適應(yīng)

html文檔:

<div class="parent">
  <div class="left"></div>
  <div class="right"></div>
</div>

核心css代碼:

.left{float:left;width:100px;}
.right{margin-left:100px;}

顯示效果如下圖所示:


利用float+margin實(shí)現(xiàn),該種布局左側(cè)一般為導(dǎo)航欄,右側(cè)為內(nèi)容。

4.2右列定寬,左列自適應(yīng)

核心css代碼:

.parent{background:red;height:100px;margin:0 auto;}
.left{background:green;margin-right:-100px;width:100%;float:left;}
.right{float:right;width:100px;background:blue;}

利用float+margin實(shí)現(xiàn),顯示效果如下:

4.3兩列定寬,一列自適應(yīng)

html結(jié)構(gòu):

<div class="parent">
   <div class="left"></div>
   <div class="middle"></div>
   <div class="right"></div>
</div>

核心css代碼:

.left,.center{float:left:width:200px;}
.right{margin-left:400px;}

利用float+margin實(shí)現(xiàn),顯示效果如下:

4.4兩側(cè)定寬,中欄自適應(yīng)

核心css代碼:

.left{width:100px;float:left;}
.center{float:left;width:100%;margin-right:-200px;}
.right{width:100px;float:right;}

利用float+margin實(shí)現(xiàn),顯示效果如下:

4.5一列不定寬,一列自適應(yīng)

核心css代碼:
利用float+overflow實(shí)現(xiàn):

.left{float:left;}
.right{overflow:hidden;}

利用flex實(shí)現(xiàn)

.parent{display:flex;}
.right{flex:1;}

顯示效果如下:




參考資料利用HTML和CSS實(shí)現(xiàn)常見的布局 15種CSS居中的方式

最后編輯于
?著作權(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)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,126評(píng)論 1 92
  • 1. 前言 前端圈有個(gè)“?!保涸诿嬖嚂r(shí),問個(gè)css的position屬性能刷掉一半人,其中不乏工作四五年的同學(xué)。在...
    YjWorld閱讀 4,910評(píng)論 5 15
  • 原網(wǎng)址https://segmentfault.com/a/119000 簡(jiǎn)言 CSS居中是前端工程師經(jīng)常要面對(duì)的...
    殺個(gè)程序猿祭天閱讀 744評(píng)論 0 1
  • 冷茶、薄酒 老女人 養(yǎng)胃、養(yǎng)肝 又養(yǎng)心 女大三,抱金磚 砸死一個(gè),算一雙 做個(gè)一知半解的人 一點(diǎn)也不謙虛 自傲是我...
    北燕_閱讀 586評(píng)論 1 2
  • 今天來武漢大公益,雖然這兩天全國(guó)各地下大雪,高鐵都晚點(diǎn)了,但同學(xué)奔赴武漢的決心是無(wú)法阻擋的,大愛的現(xiàn)發(fā)助教由于...
    姚常春閱讀 171評(píng)論 1 3

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