块级元素 水平垂直居中 的方法(六种方法)
<body>
<div class="container">
<div class="box"></div>
</div>
</body>
方法一:(宽高要确定)
要让div等块级元素水平垂直居中
重要的因素:父级元素要设置相对定位
- 第一步:就要知道div等块级元素的高度和宽度
- 第二步:设置 位置position为绝对位置,并设置距离页面窗口 左边框和上边框的距离 为50%
- 第三步:最后将div等块级元素分别 左移和上移,移动的大小为div等块级元素 宽度和高度的一半的负数
.box{
position:absolute; /*绝对布局*/
left:50%;
top:50%;
width:300px;
height:200px;
margin:-100px 0px 0px -150px;/*上边框和左边框*/
border:1px solid red;
}
方法二:(元素宽高不确定)
在绝对定位下top,left,bottom,right都设置为0,利用css中的 margin:auto让浏览器自己帮我们水平和垂直居中(宽高不确定)
重要的因素:父级元素要设置相对定位
.box{
position:absolute; /*绝对布局*/
left:0px;
right:0px;
top:0px;
bottom:0px;
width:300px;
height:200px;
margin:auto; /*自动获取左边框和上边框的距离*/
border:1px solid red;
}
方法三:(元素宽高不确定)
利用绝对定位,配合位移 实现水平垂直居中
重要的因素:父级元素要设置相对定位
.box{
width:300px;
height:200px:
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%)
}
方法四:利用flex弹性布局 (宽高不确定)
- 弹性布局第一种写法
.container{
width:300px;
height:200px:
display:flex;
justify-content:center; /*主轴居中*/
align-item:center; /*交叉轴居中*/
}
- 弹性布局第二种写法
.container{
display:flex; /*弹性布局*/
width:600px;
height:600px;
border:1px solid red;
}
.box{
margin:auto; /**/
width:400px;
height:200px;
border:1px solid blue;
}
方法五:利用table-cell布局(宽高不确定)
注意:子元素一定要设置 display:inline-block;
.container{
display:table-cell; /*表格布局*/
vertical-align: middle; /*垂直居中*/
text-align: center; /*水平居中*/
width:600px;
height:600px;
border:1px solid red;
}
.box{
display:inline-block; /*重点设置*/
width:200px;
height:200px;
border:1px solid blue;
}
方法六: (宽高确定)
绝对定位
cal( )函数动态计算实现水平垂直居中
.container{
position: relative;
width:600px;
height:600px;
border:1px solid red;
}
.box{
position: absolute; /*绝对定位*/
left:calc((600px - 200px)/2); /**/
top:calc((600px - 200px)/2);
width:200px;
height:200px;
border:1px solid blue;
}