关于居中

关于居中:
(1)将margin设置为auto:这种方法只能实现水平居中,并且对float和绝对定位的元素无效(可以实现块状元素的水平居中:我们只需要将它的margin-left和margin-right设置成auto)
在这里插入图片描述
(2)使用text-align:center:只能对图片,按钮,文字等行内元素进行居中
可以实现多个块状元素的水平居中(将水平排列的元素设置为display:inline-block,然后在父元素上设置:text-align:center)

#container{
    text-align:center;
}
 
#center{
    display:inline-block;
}

在这里插入图片描述

(3)使用line-height让一行的文字居中:将line-height的高度设置为父容器的高度,适用于文字只有一行的情况
(4)对于表格元素的居中,只需要使用text-align:center和vertical-align:middle就可以处理它里面内容的水平和垂直居中问题了
(5)使用display:table-cell:对于那些不是表格的元素,我们可以把它模拟成表格元素,这样就可以方便的利用表格的那些特性啦,这种方法只能在IE8+,谷歌,firefox上有效
应用场景:被居中的元素是inline或者是inline-block的时候,可以将父容器设置为display:table-cell,然后使用text-align:center和vertical-align:middle

#container{
    display:table-cell;
    text-align:center;
    vertical-align:middle;
}
 
#center{
 
}

关于居中_第1张图片

(6)使用绝对定位和负margin来实现居中
这种方式需要知道自身的宽高

.parent { width: 200px; height: 200px; border: 1px solid red; position: relative; } .child { width: 100px; height: 100px; background: lightcoral; position: absolute; margin: -50px 0 0 -50px ; top: 50%; left: 50%; }

关于居中_第2张图片

(7)使用绝对定位加margin(无需知道被定位元素的宽高,也无需知道父元素的宽高)

.parent6{ position: relative; height: 300px; width: 300px; background-color: #ADD8E6 } .child6{ width: 100px; height: 100px; margin: auto; position: absolute; left: 0; right: 0; top: 0; bottom: 0; background-color: orange }

关于居中_第3张图片

(8)使用transform加绝对定位

.parent1 { width: 300px; height: 300px; background: lightblue; position: relative; } .child1 { background: orange; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 200px; height: 200px; }

关于居中_第4张图片

使用绝对定位加transform,可以不用知道父元素的宽高
也不用知道自身的尺寸,因为transform中translate偏移的百分比就是相对于元素自身尺寸而言的

如果只想设置垂直居中,那么可以只设置top:50%,然后transform:translate(-50%,0)
同样的,如果只是想设置水平居中的话,就可以只设置left:50%,然后transform:translate(0,-50%)

(8)使用flex布局(需要考虑兼容性问题 IE11+,chrome29+,firefox28+)

.parent3 { width: 300px; height: 300px; background: lightblue; display: flex; align-items: center; //垂直居中 justify-content: center; //水平居中 } .child3 { width: 100px; height: 100px; background: orange; }

关于居中_第5张图片

你可能感兴趣的:(CSS)