【问题标题】:how can I add background-color behind a transparent background-image?如何在透明背景图像后面添加背景颜色?
【发布时间】:2017-04-24 11:38:42
【问题描述】:

我正在尝试在透明背景图像后面添加背景颜色,但它不起作用。我希望它在名为“标题”的 div 中。我尝试先使用 png 文件,然后使用 gif 文件。我以为所有的 gif 都是透明图像。任何帮助将不胜感激。

#heading {
    background-image: url(http://bartonlewis.com/_images/pg_p_lewis_bckgrnd.gif);
    background-size: 978px 1587px;
    background-repeat: no-repeat;
    background-blend-mode: screen;
    background-color: rgba(255, 230, 184, 0.56);
    position: relative;
    height:100%;
    height: 230px;
    width: 960px;
    }
#content {
    float: left;
    height: 1800px;
    width: 960px;
    font-size: 1.1em;
    line-height: 1.2em;
    z-index:1;
    position:relative;
    }
div#heading p {
    font-size: 72px;
    text-align: center;
    margin: 100px 0;
    letter-spacing: 2px;
    }
#colD {
    width: 320px;
    float: left;
    text-indent: -999px;
    }
#colE {
    width: 30px;
    float: left;
    }
#colF {
    width: 250px;
    float: left;
    text-align: center;
    letter-spacing:.1em;
    font-family: "amador"; 
    font-variant: normal;
    font-size: 1.5em;
    }
#colG {
    width: 10px;  
    float: left;
    }
#colH {
    width: 350px;
    float: left;
    }
.floral-icon {
    vertical-align: middle;
    }
#colG img {
    -ms-transform: rotate(180deg); /* IE 9 */
    -webkit-transform: rotate(180deg); /* Chrome, Safari, Opera */
    transform: rotate(180deg);
}

    <div id="background">
    </div>
        <div id="content">
            <div id="heading">
                <div id="colD">empty</div>
                <div id="colE"><p><img class="floral-icon" src=http://bartonlewis.com/_images/pg_p_lewis_icon.png width="32" height="32"></p></div>
                <div id="colF"><p>Lewis</p></div>
                <div id="colG"><p><img class="floral-icon" src=http://bartonlewis.com/_images/pg_p_lewis_icon.png alt="floral icon" width="32" height="32"></p></div>
                <div id="colH"></div>
            </div>

【问题讨论】:

  • 您不应该使用不透明度,因为它会影响所有后代。你可以做background: #F0D8AB url(_images/pg_p_lewis_bckgrnd.gif) 987px 1587px no-repeat; - 它应该工作。顺便说一句,PX 测量没有小数点。等等...您正在尝试在 &lt;div&gt; 上设置一个不属于其余内容的背景图像 - 如果您想将该 div 放在其余部分之上,则必须给它一个 z-index也是我的猜测。本来可以测试的,但是由于您没有为图片使用实际网址,所以我不知道它们是什么样子的。
  • 谢谢。我确实在背景 div 后面的内容 div 上使用了 z-index,并将其添加到我上面的代码中。当我用您提供的内容替换我的背景属性时,颜色通过了,但我的透明图像现在没有显示,我如何为图像提供“实际 url”,以便有人可以测试它(这是新的)。谢谢。
  • 您需要上传图片(或在某处的服务器上)并使用代码中的完整 URL 链接到它们。如果它们在服务器上可用,只需将链接替换为指向其实际位置的直接http:// 链接。

标签: html css transparency background-color


【解决方案1】:

你可以通过使用伪元素:before来做到这一点

查看this fiddle

#heading {
  background-image: url(https://www.google.co.in/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png);
  background-repeat: no-repeat;
  position: relative;
  height:100%;
  height: 300px;
  width: 960px;
}
#heading::before {
  background-color: rgba(240, 216, 171, 0.25);
  display: block;
  content: '';
  position: absolute;
  height: inherit;
  width: inherit;
}

在这里,由于您需要它作为标题元素,因此使用标题而不是单独的背景 div。请注意,:before 元素以绝对定位放置,而实际元素相对于该放置。背景颜色应用于前元素,并在其上呈现带有背景图像的标题。

编辑 1

我们可以使用background-blend-mode:screen 来控制background-image 的不透明度并使用background-color,而不是使用:before

this fiddle 中查看。

rgbabackground-color的alpha通道可以控制background-image的透明度。

#heading {
  background-image: url(https://www.google.co.in/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png);
  background-repeat: no-repeat;
  background-blend-mode: screen;
  background-color: rgba(255, 230, 184, 0.66);
  position: relative;
  height:100%;
  height: 300px;
  width: 960px;
}

我使用了 google logo,因为你提供的图片源路径是相对于你的页面的。

【讨论】:

  • 谢谢。但是现在没有能力通过css控制图像的不透明度,是吗?我必须在图像本身中这样做。虽然我正在学习 adobe lightroom,但我不知道 Photoshop。理想情况下,我希望能够通过 css 控制不透明度并同时具有背景颜色。有什么办法可以做到吗?
  • 不完全是,但您可以在#heading 部分中为 background-color 属性使用不同灰度的 background-blend-mode 属性来获得类似的结果。
  • 谢谢,但我不想要灰色,而是棕褐色/棕褐色。所以没有办法拥有可以在彩色背景上使用css控制的透明背景图像?我觉得这很奇怪。
  • 您可以通过调整rgba背景颜色的alpha通道来改变background-image的不透明度。见this fiddle
  • 谢谢。我根据您的建议重新发布了我的代码,并删除了我昨天发布的答案。现在我遇到的问题是背景图像和颜色改变了不透明度,但文本和文本左侧的第一个花卉图标也在改变不透明度。只有文本右侧的第二个花卉图标不透明。你能看到是什么导致我的文字(“Lewis”)和第一个花卉图标不透明吗?谢谢。
猜你喜欢
  • 1970-01-01
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 2019-01-19
  • 2019-02-28
相关资源
最近更新 更多