加了绝对定位的盒子不能通过 margin: 0 auto ;水平居中。
<style>
.a{
width:100px;
height: 100px;
background-color: lightsteelblue;
position: absolute;
margin: 0 auto;
}
</style>
<body>
<div class="a"></div>
</body>
需要通过计算实现,先让盒子左侧移到父级元素的水平中心位置,然后让盒子向左移动自身宽度的一半。
<style>
.a{
width:100px;
height: 100px;
background-color: lightsteelblue;
position: absolute;
margin: 0 auto;
left: 50%;
margin-left: -50px;
}
</style>
<body>
<div class="a"></div>
</body>
也可以利用transform属性计算自身宽度的一半。
<style>
div{
position: relative;
width: 500px;
height: 500px;
background-color: lightblue;
}
p{
position: absolute;
width: 200px;
height: 200px;
background-color: aquamarine;
transform: translate(-50%,-50%);
top: 50%;
left: 50%;
}
</style>
</head>
<body>
<div>
<p></p>
</div>