我想将显示和隐藏的不同图像居中,具体取决于用户点击的方式。 我对图像居中所做的是:
img {
margin-left: auto;
margin-right: auto;
display: block;
}
工作得很好。但它不适用于position: absolute;
是否有一种css唯一的方法可以在position: absolute
或body
中间水平居中parent
div而不知道width
}?
答案 0 :(得分:5)
对于绝对定位的元素,您可以将margin:auto
与left:0
和right:0
(水平居中)或top:0
和bottom:0
(垂直居中):
img {
position:absolute;
left:0;
right:0;
margin:auto;
}
答案 1 :(得分:1)
给予元素position: absolute
并将其从屏幕的left
边缘定位50%,然后使用transform: translate
将其移动其宽度的50%在左边。
HTML:
<div class="center"></div>
CSS:
.center {
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
}
Here's a pen这个。
Here's the browser support用于2d转换,以及有关您需要哪些供应商前缀的信息。
您还可以使用transform: translate3d
使用相同的逻辑垂直居中元素。然后CSS将如下所示:
.center {
position: absolute;
top: 50%;
left: 50%;
transform: translate3d(-50%, -50%, 0);
}
答案 2 :(得分:0)
我知道的唯一方法是使用额外的div,如下所示:
HTML:
<div class="target">
<div class="wrapper"></div>
</div>
CSS:
.wrapper{
width:100px;
height:100px;
background:blue;
margin:0 auto;
margin-left:-50%;
}
.target{
position:absolute;
left:50%;
}
这是做什么的:
left:50%
div
div
内容添加到另一个包装 div
元素中,如上面的演示所示margin-left:-50%
div
答案 3 :(得分:-1)
您可以使用:
padding-left: 50%;
margin-left: -(half the width of your image)px
这不是最干净的解决方案,它可能不是绝对定位的正确方案。