使用CSS在<DIV>中居中<IMG />

Dan*_*Dan 10 html css centering

我想将图像置于div中.div的固定宽度为300px.图像宽度仅在运行时才知道.它通常大于300px,因此图像应居中并左右切割.margin 0 auto在这种情况下不起作用.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style type="text/css">

div{width:300px;border:1px solid red; overflow:hidden}

img{
/* NOTE!!!!
margin:auto; doesn't work when image width is bigger than div width
image width is known only at runtime!!!
*/
}
</style>
</head>

<body>
<div>
    <img src="" />
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

感谢任何CSS的想法


UPD 这个有趣的任务之后这里

Pek*_*ica 13

给人div text-align: center应该工作.(但是,您可能必须添加它align='center'作为属性才能在IE6中工作.)注意:正如@streetpc所指出的,如果图像比容器宽,则此方法将无法正常工作.

或者,您也可以将图像作为背景图像:

background-image: url(url);
background-position: center top;
Run Code Online (Sandbox Code Playgroud)

  • 如果你的div有`text-align:center`,请检查img有`display:inline`(或`inline-block`),但图像只会被裁剪到右边. (2认同)

mer*_*tor 12

如果在图像周围包裹另一个元素,则可以使其工作:

<div class="outer">
    <div class="inner"><img src="" alt="" /></div>
</div>
Run Code Online (Sandbox Code Playgroud)

以下CSS:

.outer {
    width: 300px;
    border: 1px solid red;
    overflow: hidden;
    *position: relative;
}
.inner {
    float: left;
    position: relative;
    left: 50%;
}
img {
    display: block;
    position: relative;
    left: -50%;
}
Run Code Online (Sandbox Code Playgroud)

position: relative.outer标有*那么它只适用于IE6/7.您可以将其移动到条件IE样式表(如果这是您喜欢的样式),或者*完全删除它.需要避免现在相对定位的孩子溢出.