垂直水平居中的幾種實(shí)現(xiàn)方式
一、固定寬高:
1、定位 + margin-top + margin-left
.box-container{
position: relative;
width: 300px;
height: 300px;
}
.box-container .box {
width: 200px;
height: 100px;
position: absolute;
left: 50%;
top: 50%;
margin-top: -50px; /* 高度的一半 */
margin-left: -100px; /* 寬度的一半 */
}
設(shè)置父元素的position為相對(duì)定位,子元素絕對(duì)定位,并在 top 和 left 方向上移動(dòng)父元素50%的距離。
但這個(gè)時(shí)候,是子元素的上邊框和左邊框距離父元素150px,整體向右下角偏了一些,所以還需要再用 margin 調(diào)整至中心位置,數(shù)值分別是高度和寬度的一半。
2、定位 + margin
.box-container{
position: relative;
width: 300px;
height: 300px;
}
.box {
width: 100px;
height: 100px;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
}
同樣是使用絕對(duì)定位,但四個(gè)方向的偏移量全都為0,之后設(shè)置 margin:auto 分配剩余空間,令元素的均勻拖拽至父元素的中心位置。
1、transform 方案
.box-container{
position: relative;
width: 300px;
height: 300px;
}
.box {
position: absolute;
width: 100px;
height: 100px;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
在子元素上設(shè)置,transform: translate(-50%, -50%); 用于平面的2D轉(zhuǎn)換,后面的百分比以自身的寬高為參考,定位后將元素的左上角置于父級(jí)中央,之后再用 transform 進(jìn)行偏移,相當(dāng)于上面設(shè)置的 margin-top 和 margin-left。
二、未知寬高
2、flexbox 方案
.box-container {
display: flex;
justify-content: center;
align-items: center;
}
設(shè)置父元素為 flex 彈性盒模型,并在主軸和副軸上設(shè)置居中
3、grid方案文章來源:http://www.zghlxwxcb.cn/news/detail-799968.html
css網(wǎng)格布局文章來源地址http://www.zghlxwxcb.cn/news/detail-799968.html
.wp {
display: grid;
}
.box {
align-self: center;
justify-self: center;
}
到了這里,關(guān)于css垂直水平居中的幾種實(shí)現(xiàn)方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!