使用 CSS 水平居中 *任何* 宽度的图像

Horizontally Centering image of *any* width with CSS

我正在尝试将 任意 宽度的图像水平居中。 (换句话说,每张图片的宽度都在 100 像素到 1000 像素之间)。父区域为 712px 宽。

我尝试过的大多数解决方案都将图像左侧居中在 50% 标记处。

img {
    display: block;
    margin: 0 auto;
}

或:

div.your-block-wrapper {
    text-align: center;
}
div.your-block-wrapper img {
    display: block;
}

.ct {
    position: relative;
 width: 700px;
 height: 700px;
 margin: 0 auto;
 overflow: hidden;
}
.ct img {
 position: absolute;
 left: 50%;
 width: 900px;
 margin-left: -450px;
 z-index: 22;
}
<div class="ct">
    <img src="http://images.entertainment.ie/images_content/rectangle/620x372/success-kid.jpg" alt="" />
</div>

你可以这样做: https://jsfiddle.net/46mdr2z6/1/

    <div class="wrapper">
  <div>
    <img src="http://placehold.it/250x110">
  </div>
  <div>
    <img src="http://placehold.it/150x150">
  </div>
  <div>
    <img src="http://placehold.it/650x250">
  </div>
  <div>
    <img src="http://placehold.it/850x350">
  </div>
  <div>
    <img src="http://placehold.it/120x750">
  </div>
  <div>
    <img src="http://placehold.it/520x270">
  </div>
</div>

css:

.wrapper {
  width: 712px
}
.wrapper > div{
  text-align: center;
}
img {
  max-width: 100%;
}

margin-left:50%; transform:translate(-50%,0); 会将元素定位在其容器的中间。即使容器比图像小:

div { width:100%; overflow-x:hidden; border:1px solid }

div > img { margin-left:50%; transform:translate(-50%,0); vertical-align:middle; }
<div>
  <img src="http://lorempixel.com/400/200/">
</div>

<div>
  <img src="http://lorempixel.com/1000/600/sports/3/">
</div>

看看这个:

https://css-tricks.com/snippets/css/a-guide-to-flexbox/

这显然是我的一些开发朋友一直在采用的东西。我可能会开始试一试。它仍然是 CSS,很干净,不需要脚本。您也可以垂直居中(以及其他内容)。