Css div内图像的垂直对齐

Css div内图像的垂直对齐,css,image,alignment,vertical-alignment,Css,Image,Alignment,Vertical Alignment,我想在div内设置图像的垂直对齐。我使用img{vertical align:middle} 但它不起作用。使用行高属性将解决以下问题: <style> .someclass { width: 300px; height: 300px; text-align: center; line-height: 300px; border: dotted; } .someclass img { margin: auto; vertical-align: middl

我想在div内设置图像的垂直对齐。我使用img{vertical align:middle}
但它不起作用。

使用
行高属性将解决以下问题:

<style> 
.someclass {
  width: 300px;
  height: 300px;
  text-align: center;
  line-height: 300px;
  border: dotted;
}
.someclass img {
  margin: auto;
  vertical-align: middle;
}
</style>
<div class="someclass"> 
  <img src="someimg.jpg" border="0" alt=""> 
</div>

.某个班级{
宽度:300px;
高度:300px;
文本对齐:居中;
线高:300px;
边框:虚线;
}
.某类img{
保证金:自动;
垂直对齐:中间对齐;
}

如果将div
display
属性设置为
表格单元格
,则
垂直对齐:中间将起作用

垂直对齐
规则仅影响具有
显示:表格单元格
的表格单元格或元素

有关详细说明,请参阅

<style>
/* change body to .someClasses's parent */

body {
  width: 100%;
  height:  100%;
  display: table;
}
body > .someclass {
    width: 300px;
    height: 300px;
    text-align: center;
    border:dotted;
    margin: 0 auto
    display: table-cell;
    vertical-align: middle;
}
</style>

<body>
    <div class="someclass"> 
        <img src="someimg.jpg" border="0" alt=""> 
    </div>
</body>

/*将body更改为.someClass的父级*/
身体{
宽度:100%;
身高:100%;
显示:表格;
}
body>.someclass{
宽度:300px;
高度:300px;
文本对齐:居中;
边框:虚线;
保证金:0自动
显示:表格单元格;
垂直对齐:中间对齐;
}

如果你想按照我的想法去做,垂直对齐是行不通的;您需要使用定位

通常,将容器定位为相对位置,然后将图像定位为绝对位置,将“上”和“左”设置为50%,然后通过将负边距设置为宽度/高度的一半,将图像移回中心位置

下面是一个工作示例:

基本CSS如下所示:

#container { position: relative; }
#container img {
  position: absolute;
  left: 50%;
  top: 50%;
  margin-top: /* -1/2 the height of the image */
  margin-left: /* -1/2 the width of the image */
}

以下文章提供了一些有用的参考资料:

此外,根据您测试的IE版本,您可能最终需要一些特定于浏览器的黑客或一些jQuery/JavaScript代码


如果必须,请使用一行一单元格表并利用
垂直对齐
属性。这是一种蛮力,没有过度的语义,但它可以工作。

这是一种不需要JavaScript的解决方案(就像我以前的解决方案那样)

您可以通过将
display:table cell
分配给包含的div来实现所需的功能。以下是一个示例:

我觉得我必须警告您,您需要在您打算支持的每个浏览器中测试此功能。对
表格单元格
值的支持是相当新的,尤其是在Firefox中。我知道它可以在Firefox4中使用,但我不知道3.x的任何迭代。您还需要在IE中进行测试(我只在Chrome10和Firefox4中进行了测试)

CSS:

  div#container {
    width: 700px;
    height: 400px;
    position: relative;
    border: 1px solid #000;
    display: table-cell;
    vertical-align: middle;  
  }
  div#container img {
    margin: 0 auto;
    display: block;
  }
如果不想水平对齐图像,则不需要使用
div#container img
样式

请参见此awser:

如果还要水平对齐,请添加
右侧
左侧
,如下所示:

div {
  position:relative;
}
img {
  position:absolute;
  top:0;
  bottom:0;
  left:0;
  right:0;
  margin:auto;
}

可能相关:。作为一名新手,你可能想对其中一些答案进行投票,因为它们为你指明了正确的方向,而且我们都在工作/生活中抽出时间互相帮助。我不想计算每个图像的高度和宽度。我将发布另一个没有JavaScript的解决方案,但可能不是每个浏览器都支持。我不知道图像的尺寸。它的宽度设置为一个百分比,高度未设置,所以它按比例缩放。你是对的,我遗漏了一些东西。我已经更新了代码以使其正常工作。如果你真的花时间阅读我发布的链接,你会注意到这一点,并且已经解决了这个问题。请努力学习一些东西,而不是简单地询问答案。对于ie,您可能需要在显示表格单元格中引入缩放对比度,这就像IE7的魅力一样。谢谢表格单元格生成高度:在我的情况下100%停止工作。如果您需要使用高度百分比,这将不起作用,因为这是我的情况。