我们都知道,当给一个块级元素设置宽度后,使用margin:0 atuo可以实现水平上的居中。
margin:0 auto的理解是,上下边距为0,左右边距为auto(auto是自动调整大小)
在浏览器中div如果没有设置宽度,那么宽度自动为浏览器的宽度,这是给div设置宽度后,div会靠左显示,margin:0 atuo就是为了填充右侧的空白空间。
但是<img>
当不设置宽度时,不会块级元素一样宽度默认和浏览器相同,所以不能用margin:0 auto来居中,因为img是行内的块级元素。
可是当使用了绝对定位时,margin:0 auto就失效了,有什么好的方法来失效居中吗?
我们写两个div,关系为父子关系。想要实现div2在div1的下方居中。
<div class="div1">
<div class="div2">
</div>
</div>
css样式设置为
.div1{
position: relative;
height: 300px;
width: 300px;
background:black;
}
.div2{
position: absolute;
bottom:0;
height: 100px;
width: 100px;
background: red;
}
此时会发现给div2设置margin:0 auto; div2并不会居中显示。
解决办法是改css为
.div1{
position: relative;
height: 300px;
width: 300px;
background:black;
}
.div2{
position: absolute;
bottom: 0;
left: 50%;
margin-left: -50px;
height: 100px;
width: 100px;
background: red;
}
实际上就是给div2一个left为50%,然后使margin-left的值为div2的一半就可以实现居中了
left: 50%;
margin-left: -50px;