将一个div放在一个img上

时间:2011-06-06 23:16:14

标签: html css

我有一个图像库,所有210px宽度,但具有不同的高度。

我想在每个图像上放置一个包含“即将推出”字样的div框,背景颜色为实色,高度为30px,宽度未知。 div框需要垂直和水平居中。

我如何在CSS中解决这个问题?

我用Google搜索,尝试了我能想到的一切,但根本没有找到解决方案..

2 个答案:

答案 0 :(得分:1)

您是否可以使用图库标记作为背景图像,而不是使用图像标记?然后在那个DIV中,只需将你的文字和风格放在你需要的地方。

你可以创建一个带有文本样式,宽度等的CSS类。然后只需使用DIV中的style属性来设置背景图像和高度。

答案 1 :(得分:0)

answer by Patrick肯定是一个很好的方法,可以节省一些标记。

但是如果你不能或不想让图像成为容器的背景,你可以使用一些定位选项。例如,如果您可以在“即将推出”部分使用固定宽度,则可以执行以下操作:

ul {
    list-style: none;
    margin: 0 0 0 -2em;
    padding: 0;
}

li {
    position: relative; /* this makes it a containing block */
    float: left;
    margin: 0 2em 2em 0;
    padding: 0;
}

.msg {
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -15px; /* assuming it's 30 pixels high, half */
    margin-left: -75px; /* assuming it's 150 pixels wide, half */
    width: 150px;
    height: 30px;
    line-height: 30px;
    color: #fff;
    text-align: center;
    background: rgba(0,0,0,.8); /* almost black, f**k old browsers */
}

HTML

<ul>
    <li>
       <img src="/images/meep.png" alt="" />
       <div class="msg">Coming soon.</div>
    </li>
</ul>

请注意,行高:30px是这样的,文本将在容器中垂直居中,如果消息需要转到第二行,这实际上是错误的。在这种情况下,您需要抛弃容器的固定高度,可能添加一些填充,然后使用更传统的线高度,如1.2em。在这种情况下,你需要一些jQuery或其他东西来计算父容器的高度,以获得正确的“top:px”高度。