【问题标题】:center <IMG/> inside a <DIV> with CSS使用 CSS 在 <DIV> 中居中 <IMG/>
【发布时间】:2011-06-24 21:49:31
【问题描述】:

我想在一个 div 中居中图像。 div 的宽度固定为 300 像素。图像宽度仅在运行时已知。它通常大于 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>

感谢任何 CSS 想法


UPD 关注这个有趣的任务here

【问题讨论】:

    标签: html css centering


    【解决方案1】:

    提供div text-align: center 应该可以。 (不过,您可能需要添加 align='center' 作为属性才能使其在 IE6 中运行。)注意:正如 @streetpc 所指出的,如果图像宽度大于容器。

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

    background-image: url(url);
    background-position: center top;
    

    【讨论】:

    • 如果你的 div 有text-align: center,检查img 有display: inline(或inline-block),但图像只会向右裁剪。
    • @streetpc 你是对的,如果图像比容器宽,它不会以第一种方法居中。背景图像确实是最好的方法(或者,一个具有巨大固定宽度的内部 div - 但那很hacky)
    • 考虑到背景图像可能无法打印,无法在运行时以通用方式替换,爬虫可能无法获取它(例如,谷歌图像),您可以使用max-width 限制图片大小。
    • @Gonzalo 除了最后一个 IMO 之外的所有优点 - max-width 将调整图像的大小,我认为这不是 OP 的意图。
    【解决方案2】:

    如果你在图像周围包裹另一个元素,你可以让它工作:

    <div class="outer">
        <div class="inner"><img src="" alt="" /></div>
    </div>
    

    还有以下 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%;
    }
    

    .outer 上的position: relative 标有*,因此它仅适用于 IE6/7。如果您愿意,可以将其移至条件 IE 样式表,或者完全删除 *。需要避免现在相对定位的children溢出。

    【讨论】:

    • 你的方法有效!你有什么疯狂的想法在(裁剪或不裁剪)图像周围制作边框吗?不是外边框,不是图像边框,而是图像可见部分的边框?我的智商太低,做不到……
    【解决方案3】:

    将图像置于 html 页面的中心:

    <p style="text-align:center; margin-top:0px; margin-bottom:0px; padding:0px;">
    <img src="image.jpg" alt="image"/>
    </p>
    

    【讨论】:

      【解决方案4】:

      您可以使用 CSS 转换来定位元素:

      div { position: relative; } 
      img { position: absolute; left: 50%; transform: translateX(-50%); }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-31
        • 2020-06-21
        • 2013-10-04
        • 2012-08-07
        • 2012-09-30
        相关资源
        最近更新 更多