CSS 图片对齐:如何在 DIV 中将图片设置为中右对齐

4

我正在寻找一种简单的方法来在DIV中垂直中间和水平右对齐一个图片,如下图所示:

enter image description here

我尝试在IMG样式中使用vertical-align:middle和float:right,但似乎不能同时起作用。

<div style='height: 300px; width: 300px'>
    <img src= 'http://www.w3schools.com/tags/smiley.gif' style='vertical-align: middle; float: right;'/>
</div>
3个回答

9

有很多方法可以实现这个目标。如果图片及其容器的高度已知,那么非常容易,否则就比较棘手了。请选择适合您需求的解决方案:

方法一:行高、文本对齐和垂直对齐

#div1 {
  width: 300px;
  height: 300px;
  background-color: blue;
  line-height: 300px;
  text-align: right;
}
#div1 img {
  vertical-align: middle;
}
<div id="div1">
  <img src="http://dummyimage.com/100x50/fc0/000000.png">&#8203;
</div>

方法二:绝对/相对定位,已知图像高度

#div1 {
  width: 300px;
  height: 300px;
  background-color: blue;
  position: relative;
}
#div1 img {
  position: absolute;
  right: 0;
  top: 50%;
  margin-top: -25px; /* -(image_height/2) */
}
<div id="div1">
  <img src="http://dummyimage.com/100x50/fc0/000000.png">
</div>

方法三:绝对/相对定位,已知图片和容器高度

#div1 {
  width: 300px;
  height: 300px;
  background-color: blue;
}
#div1 img {
  float: right;
  position: relative;
  top: 125px; /* (div_height-image_height)/2 */
}
<div id="div1">
  <img src="http://dummyimage.com/100x50/fc0/000000.png">
</div>

jsFiddle


0
<DIV style='height: 300px; width: 300px;border:1px solid #ff0000;display:table-cell;vertical-align: middle'>
<img src= 'http://www.w3schools.com/tags/smiley.gif' style='float:right;'/>
</DIV>

顺便提一下,你在图像标签中使用了“styles =”。这是无效的。


0

display: table-cell 技巧在只有图像浮动在 div 中时效果很好。但是如果您有其他元素挤压图像,例如 <p>,它们会随着浏览器的调整而在垂直方向上推动图像。

http://www.brunildo.org/test/img_center.html 提供了一些关于跨浏览器支持和早期浏览器版本的 hack,以便在 IE 的破碎盒模型中正确显示图像。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接