比其父div宽的绝对元素(img)如何居中?

Noo*_*b17 5 css css-position absolute

我正在尝试将绝对位置的img居中放置在相对位置的div中,并且图像大于其父对象(在767px或更小的窗口中)。但是图片确实有767px的固定宽度。对我来说很难的是,父div没有固定的宽度,而是有100%的宽度,因此我必须以某种方式为每次调整大小的'left'属性生成正确数量的像素,但是我没有知识。我尝试设置百分比,但调整大小时没有成功。

我已经可以用javascript做些什么了,但是我宁愿有一个CSS解决方案,因为javascript不能始终如一地为我工作。

当父div小于767px且img在div内始终保持767px且高度为257px时,我需要能够使img居中。

任何帮助表示赞赏!

html代码:

<div class="item">
  <img src="...">
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.item{
position:relative;
height:257px;
overflow:hidden;
}

.item img{
min-width:767px;
position:absolute;
}
Run Code Online (Sandbox Code Playgroud)

Ry-*_*Ry- 5

通过组合相对和绝对单位以及leftmargin-left

.item img {
    left: 50%;
    margin-left: -383.5px; /* Half of the width */
    min-width: 767px;
    position: absolute;
}
Run Code Online (Sandbox Code Playgroud)

这仅是因为您在问题中提到图像的宽度固定为767px。如果确实只是最小值,并且可以增大,则需要使用其他方法。

  • 您也可以不使用固定的像素值来做到这一点:`left:-500%; 正确:-500%;margin:auto;`–您将图像从容器中“拖动”到两侧,然后自动边缘将其再次居中。http://jsfiddle.net/sru60agp/1 (7认同)

Jac*_*son 5

一种无需硬编码一半宽度的方法。

例如,也许您的子元素具有您无法预测的可变宽度

您可以改为:

left: 50%;
transform: translateX(-50%);
Run Code Online (Sandbox Code Playgroud)

  • 我认为这比接受的答案还要简单。 (2认同)