談?wù)凜SS實現(xiàn)水平垂直居中布局的方法
閱讀 23328 · 發(fā)布日期 2020-08-24 11:46 · 溫州優(yōu)光網(wǎng)絡(luò)科技有限公司|建站|APP小程序制作|做網(wǎng)站SEO推廣優(yōu)化
【摘要】
最近面試的時候,面試官問到了CSS水平垂直居中布局的方式,對于剛?cè)肭岸藳]多久的我,無疑是一臉懵逼,閑了趕緊查閱資料分析一波,給各位分享一下,避免落坑。首先先說明一下html和一些基礎(chǔ)css樣式,下面就不再贅述!html
垂直水平居中
公共css代碼如下
/* 公共樣式 */
.div1... 【溫州小程序開發(fā),溫州微信公眾號,平陽做網(wǎng)站,平陽網(wǎng)站建設(shè)公司,平陽小程序商城制作,昆陽萬全做網(wǎng)站,鰲江水頭小程序,蕭江騰蛟微信公眾號,山門順溪南雁海西南麂鳳臥麻步懷溪網(wǎng)絡(luò)網(wǎng)店服務(wù),政采云網(wǎng)店管理服務(wù)】...
最近面試的時候,面試官問到了CSS水平垂直居中布局的方式,對于剛?cè)肭岸藳]多久的我,無疑是一臉懵逼,閑了趕緊查閱資料分析一波,給各位分享一下,避免落坑。
首先先說明一下html和一些基礎(chǔ)css樣式,下面就不再贅述!html
垂直水平居中
position: relative;
}
.box{
position: absolute;
top:0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
}
二、absolute 和margin(負值)簡單說一下原理,利用了絕對定位,絕對定位的百分比是相對于父元素的寬高,所以我們可以根據(jù)這個原理將元素居中顯示。
但是要注意:
絕對定位是基于子元素的左上角來說的,但是要想讓子元素居中顯示,就要解決這個問題。
此時可以利用margin的負值來實現(xiàn)效果,當(dāng)外邊距為負值時,元素向相反方向定位,這樣我們將子元素的外邊距設(shè)置為子元素的寬高的一半就可以實現(xiàn)了。
(PS:
缺點就是必須得到子元素的寬高).div1{
position: relative;
}
.box{
top: 50%;
left: 50%;
position: absolute;
margin-top: -50px;
margin-left: -50px;
}
三、absolute 和 calc同樣需要子元素的寬高固定,并知道寬高,css3具有計算屬性。
top的百分比是基于元素左上角減去寬度的一半即可(PS:
依賴calc的兼容性).div1{
position: relative;
}
.box{
position: absolute;
top: calc(50% - 50px );
/* 減號前后沒有空格,該樣式不生效*/ left: calc(50% - 50px );
}
當(dāng)我在寫這段代碼的時候,發(fā)現(xiàn)一個有趣的事情,calc(50%-50px)如果減號前后沒有空格的話,樣式就不會生效,寫上空格的話,就會正常生效了,具體原因我也不太清楚emmmmm下面的方法將不需要知曉子元素的寬高即可設(shè)置html修改為:
水平垂直居中,不需要子元素固定寬高
width: 300px;
height: 300px;
border: 1px solid red;
}
.box{
background: #00FFFF;
}
四、flex(常用)flex是現(xiàn)代的布局方案僅僅需要幾行代碼即可實現(xiàn)居中效果.div1{
display: flex;
justify-content: center;
align-items: center;
}
五、line-height利用行內(nèi)元素居中屬性也可以做到水平垂直居中。
把box設(shè)置為行內(nèi)元素,通過text-align就可以實現(xiàn)水平居中vertical-align 也可以在垂直方向做到居中(PS:
這種方法需要在子元素中將文字顯示重置為想要的效果) .div1{
line-height: 300px;
text-align: center;
font-size: 0px;
}
.box{
font-size: 10px;
display: inline-block;
vertical-align: middle;
line-height:initial;
/* 修正文字 */ text-align: left;
}
六、absolute 和 transform不需要子元素寬高固定,但是依賴于translate2d的兼容性 .div1{
position: relative;
}
.box{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
七、css-tablecss新增的table屬性,可以把普通元素改變?yōu)閠able元素的顯示效果,也可以實現(xiàn)水平居中 .div1{
display:table-cell;
text-align: center;
vertical-align: middle;
}
.box{
display:inline-block;
}
以上就是我總結(jié)的一些居中布局的方法了,還有什么其他的歡迎補充!個人感覺:
我比較喜歡 absolute +margin auto 、flex、absolute 和 transform,移動端最好用flex吧,pc端我喜歡absolute +margin auto相關(guān)教程推薦:
CSS視頻教程 、CSS3視頻教程以上就是談?wù)凜SS實現(xiàn)水平垂直居中布局的方法的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
微信
分享相關(guān)標(biāo)簽:
css 水平垂直居中本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請注明出處,感謝您的尊重!
上一篇:
2020年CSS面試題匯總(最新)
下一篇:
在html元素中設(shè)置css樣式的方式是什么相關(guān)文章相關(guān)視頻2019 CSS經(jīng)典面試題HTML+CSS部分前端基礎(chǔ)面試題web前端面試中10個關(guān)于css高頻面試題2020年CSS面試題匯總(最新)談?wù)凜SS實現(xiàn)水平垂直居中布局的方法使用CSS3邊框圖像(border-image)屬性(上)使用CSS3用戶界面及透明和旋轉(zhuǎn)屬性使用CSS3動畫屬性 [做網(wǎng)站css教程]