CSS:带有渐变“叠加”的背景图像

Posted

技术标签:

【中文标题】CSS:带有渐变“叠加”的背景图像【英文标题】:CSS: background image with gradient "overlay" 【发布时间】:2015-08-29 05:41:10 【问题描述】:

首先,我想完成什么:

我想要这个背景:http://codepen.io/anon/pen/mJwYye 与图片上的渐变相似:

(Image' source)

现在,要解决的问题:

我希望渐变的中心是 100% 透明的。我将在页面中心放置文本和其他内容,换句话说,我不希望渐变色“阻挡”页面中心。 我希望渐变“叠加层”覆盖整个页面,而不是图像的每次重复

我尝试了许多不同的方法在背景图像上放置渐变,有些方法有效,但没有达到我想要的结果。唯一有效的方法是在每次 image 重复时将渐变置于图像上。

这最后一次尝试甚至都行不通。更不用说,我无法在提供的示例图像上复制渐变:

body 
    background: url('http://www.juvera.me/_img/vista.png') center center repeat,
    radial-gradient(ellipse at center, rgba(181,189,200,1) 0%,rgba(130,140,149,1) 50%,rgba(40,52,59,1) 100%); /* W3C */
    opacity: .8; 

【问题讨论】:

【参考方案1】:

最好将不同的属性一一设置,更容易检查你在做什么。

而顺序是相反的,你要叠加的元素必须是第一个背景图片

第一个 background-size 是渐变的大小,第二个(30 px)是重复图案的大小。您可以根据需要调整它。

body 
  height: 100%;
    background-image: 
    radial-gradient(ellipse at center, rgba(181,189,200,0) 0%,rgba(130,140,149,0) 50%,rgba(40,52,59,1) 100%), url('http://www.juvera.me/_img/vista.png');
     background-repeat: no-repeat, repeat;
  background-size: 100% 100%, 30px 30px;

html 
  height: 100%;
  

【讨论】:

问题,当前的答案使背景图案(图像)小得多。小了很多。有没有办法在不调整图像大小的情况下获得相同的结果? 并使椭圆中心更小(不那么宽)? 我已经编辑了解释如何调整图案大小的答案。要调整椭圆,只需在渐变中设置停靠点(颜色后的百分比)【参考方案2】:

如果您有多个背景图片会怎样。底部背景图像是您的重复图案,顶部是带有预渲染叠加层的透明 PNG (PNG-24)。这将从中心的黑色 100% 淡化为黑色 0%。

多背景http://www.css3.info/preview/multiple-backgrounds/

这意味着您可以更好地控制渐变,并且它对 CSS 支持的依赖程度也有所降低。为了进一步提高您的浏览器兼容性,您可以将两个元素堆叠在一起,而不是依赖 CSS 多个背景,即:

<div class="pattern">
    <div class="overlay">
        My page
    </div>
</div>

【讨论】:

以上是关于CSS:带有渐变“叠加”的背景图像的主要内容,如果未能解决你的问题,请参考以下文章

使用单行 CSS 对图像进行渐变叠加

带有背景渐变的CSS子菜单覆盖内容

CSS3 背景渐变叠加 HTML5 视频

在CSS背景上分层多个渐变

带有渐变的透明背景图像

背景图像渐变上的css过渡