【问题标题】:CSS show div background image on top of other contained elements [duplicate]CSS在其他包含的元素之上显示div背景图像[重复]
【发布时间】:2012-10-24 15:39:43
【问题描述】:

不确定这是否可行以及如何实现,但我尝试在我的代码中使用元素的 z-index,但没有成功。

我有一个 div 元素,它在 css 中设置了背景图像。在 div 内部,我还有其他元素,例如 div 和 img。我试图让包含背景图像的主 div 保持在顶部,因为我希望该背景图像显示在其他元素的顶部(此背景图像有一些圆角,我想在包含的图像顶部显示在这个 div 中)。

示例 HTML:

<div id="mainWrapperDivWithBGImage">
   <div id="anotherDiv">
      <!-- show this img behind the background image 
      of the #mainWrapperDivWithBGImage div -->
      <img src="myLargeImage.jpg" />
   </div>
</div>

示例 CSS:

/* How can I make the bg image of this div show on top of other elements contained
   Is this even possible? */

#mainWrapperDivWithBGImage {
  background: url("myImageWithRoundedCorners.jpg") no-repeat scroll 0 0 transparent;
  height: 248px;
  margin: 0;
  overflow: hidden;
  padding: 3px 0 0 3px;
  width: 996px;
}

【问题讨论】:

  • 如果主 div 的背景图片显示在顶部,它会隐藏它下面的内部元素,子元素将无用。你确定吗?
  • 说得好!我想这行不通,至少按照我的方式嵌套......
  • @Cyber​​ 听起来背景图像没有占据背景 div 的整个填充。只是一小部分。

标签: html css z-index background-image


【解决方案1】:

我会放置一个绝对定位的z-index: 100; 跨度(或多个跨度),并在其上设置background: url("myImageWithRoundedCorners.jpg");#mainWrapperDivWithBGImage

【讨论】:

  • @user 如果这样做,请务必将包装 div 设置为 ` position: relative; `
  • 是的,这行得通……但我必须将背景图像设为透明 png,以便显示其中的内容。谢谢!
  • @user55 比将背景设置为透明图像更好,声明`背景:透明`。这样浏览器就可以少下载一个项目了。
  • @JMC Creative 实际上背景透明在我的情况下不起作用,因为我有一个带有 3px 边框和圆角的框架 PNG。然后内容显示在 PNGs 透明区域内。但是,我遇到的一个新问题是,现在我在 div 中的 a 链接不可点击,因为我放置在 #mainWrapperDivWithBGImage 中的绝对定位跨度现在位于其他所有内容之上,因此 链接不起作用。我将 a 链接 z-index 更改为显示在顶部,但随后 a 链接内的图像显示在跨度顶部,并带有透明 PNG
  • @taulant 我不明白的事情(@Cyber​​nate 已经提到了这一点):你为什么要 background 图像是 在前面的链接?听起来您需要考虑如何分层。将图像放在链接的顶部然后抱怨您无法单击链接是没有意义的(至少没有看到您的项目)...?您是否有可以分享的链接以在上下文中查看整个内容?
【解决方案2】:

如果您使用圆角的背景图像,那么我宁愿增加主 div 的填充样式,以便为背景图像的圆角提供足够的空间。

尝试增加主 div 样式的内边距:

#mainWrapperDivWithBGImage 
{   
    background: url("myImageWithRoundedCorners.jpg") no-repeat scroll 0 0 transparent;   
    height: 248px;   
    margin: 0;   
    overflow: hidden;   
    padding: 10px 10px;   
    width: 996px; 
}

P.S:我假设圆角的半径为 10 像素。

【讨论】:

    【解决方案3】:

    如何将&lt;div id="mainWrapperDivWithBGImage"&gt; 设为三个 div,其中两个外部 div 保存圆角图像,而中间 div 仅具有与圆角图像匹配的背景颜色。然后你可以简单地将其他元素放在中间 div 中,或者:

    #outside_left{width:10px; float:left;}
    #outside_right{width:10px; float:right;}
    #middle{background-color:#color of rnd_crnrs_foo.gif; float:left;}
    

    然后

    HTML:

    <div id="mainWrapperDivWithBGImage">
      <div id="outside_left><img src="rnd_crnrs_left.gif" /></div>
      <div id="middle">
        <div id="another_div"><img src="foo.gif" /></div>
      <div id="outside_right><img src="rnd_crnrs_right.gif" /></div>
    </div>
    

    你可能需要做 position:relative;等等。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    相关资源
    最近更新 更多