自动垂直对齐任何自动尺寸的图像

时间:2013-07-24 10:07:14

标签: css image alignment vertical-alignment

我找不到一个没有固定图像尺寸的答案所以我会问它。

我有一个带有图像的div,该图片可以是任意大小。我需要它来自动缩放和自动对齐。我可以很好地扩展它,但垂直对齐它是一个挑战。我需要将它垂直对齐。

HTML + CSS

<div id="myDiv">
 <img src="./img/example.png"></img>
</div>


#myDiv {
 position: absolute;
 height: 100%;
 width: 100%;
 top: 0%;
 left: 0%;
 text-align: center;
}

#myDiv img {
 height: auto;
 width: auto;
 max-height: 70%;
 max-width: 70%
}

2 个答案:

答案 0 :(得分:5)

此示例强制图像内的图像水平和垂直对齐;在这种特殊情况下,约束为130x130px。在css中的两个不同位置更改定义为130px的宽度和高度,以更改约束大小。

[编辑:添加了显示最低要求设置的简化示例]

简化示例:

HTML:

<div class="pic">
  <img src="/path/to/pic.jpg"/>
</div>

的CSS:

.pic {
    display: inline-block;
    width: 130px;
    height: 130px;
    outline: solid 1px #cccce3;
    font-size: 0;
    text-align: center;
}

.pic:before {
    content: '';
    display: inline-block;
    height: 100%;
    vertical-align: middle;
}

.pic img {
    max-width: 130px;
    max-height: 130px;
    display: inline-block;
    vertical-align: middle;
}

完整示例:

原始codepen显示更复杂的示例:http://codepen.io/anon/pen/culvD

这是html:

<ul class="pics">
  <li>
    <div class="pic">
      <img src="/path/to/pic1.jpg"/>
    </div>
  </li>
  <li>
    <div class="pic">
      <img src="/path/to/pic2.jpg"/>
    </div>
  </li>
</ul>

这是css:

ul.pics {
    margin: 0;
    padding: 0;
    list-style-type: none;
    text-align: center;
}

ul.pics li {
    display: inline-block;
    width: 130px;
    margin: 4px;
    padding: 6px;
    background-color: #e6e6ec;
    outline: solid 1px #cccce3;
}

ul.pics li .pic {
    height: 130px;
    font-size: 0;
    text-align: center;
}

ul.pics li .pic:before {
    content: '';
    display: inline-block;
    height: 100%;
    vertical-align: middle;
}

ul.pics li img {
    max-width: 130px;
    max-height: 130px;
    display: inline-block;
    vertical-align: middle;
}

答案 1 :(得分:-2)

将元素居中对齐中心,将其宽度设置为宽度,然后左右边距为自动。