【问题标题】:Auto vertical align any auto sized image自动垂直对齐任何自动调整大小的图像
【发布时间】:2013-07-23 17:55:10
【问题描述】:

我找不到不是固定图像尺寸的答案,所以我要问它。

我有一个 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%
}

【问题讨论】:

  • 值得注意的是,我尝试将“line-height”添加到父级并设置“vertical-align: middle;”但如果行高是一个百分比,它就不起作用

标签: css image alignment vertical-alignment


【解决方案1】:

此示例强制框内图像的水平和垂直对齐;在这种特定情况下,限制为 130x130px。在 css 中的 2 个不同位置更改定义为 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;
}

完整示例:

显示更复杂示例的原始代码笔: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;
}

【讨论】:

  • 我不确定如何对您所做的事情进行逆向工程以满足我的需求。不过我会试试的,谢谢
  • 对不起,我应该简化示例:codepen.io/anon/pen/Hepwc。重要的部分是将 img 标签放在父容器中。除了显示居中生效的可选轮廓外,此代码笔中现在显示的 css 是最低要求。
  • 不确定您所说的“自动调整大小”是什么意思。试一试 - 这将采用任何图像尺寸并将其限制为最大宽度和高度,同时保持纵横比。只是不要在 img 标签或 css 中设置特定的宽度或高度 - 让 max-width 和 max-height 为您完成。
  • 轰隆隆!那行得通!谢谢你。现在想弄清楚为什么。是 .pic:before 这样做吗?以前没用过那个方法。谢谢
  • 我已经分叉了你的 Codepen 来展示我所说的自动大小。图片将缩小并停留在屏幕调整大小的中间:codepen.io/anon/pen/LJHyp
【解决方案2】:

将一个元素居中对齐到中心为其指定一个宽度,然后为 auto 设置 margin-left 和 right。

【讨论】:

  • 您的回答已被自动标记为低质量。请尝试添加更多细节(或工作代码示例)以改进它。
猜你喜欢
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
  • 1970-01-01
  • 2011-02-22
  • 1970-01-01
  • 2014-03-01
  • 2014-06-28
相关资源
最近更新 更多