html - 如何在之前的背景图片之上添加背景图片?

标签 html css background background-image

我有一个正在编写的 css 页面,我需要在一个类中应用背景图像,然后使用另一个类将部分透明的背景图像放在已经存在的图像之上。这是一个有点沙拉的词,所以让我来演示一下。

html{
    <div class="background1">...</div>
    <div class="background1 backgroundFilter">...</div>
    <div class="background2">...</div>
    <div class="background2 backgroundFilter">...</div>
}
css {
    .background1 {
        background-image:url(...);
    }
    .background2 {
        background-image:url(...);
    }
    .backgroundFilter {
        background-image:url(...);
    }
}

在这个例子中,第一个 div 应该有背景图片 1,第二个应该有背景图片 1 但滤镜图片放在它上面,然后第三个应该是图片 2,第四个应该是图片 2,同样对其进行过滤。

然而,在此示例中,.backgroundFilter 将覆盖之前的图像而不是覆盖它。

这可能吗,还是我需要为每个版本的背景图像制作不同的类?

最佳答案

您可以考虑 CSS 变量。指定您可以稍后更改的 2 个背景图层。您可以轻松地扩展到任意数量的背景:

.container > div {
  background:
    /*we make the default value a transparent image*/
    var(--im1,linear-gradient(transparent,transparent)),
    var(--im2,linear-gradient(transparent,transparent)); 
    
  height:200px;
  width:200px;
  display:inline-block;
}

.background1 {
  --im2: url(https://picsum.photos/200/300?image=0);
}

.background2 {
  --im2: url(https://picsum.photos/200/300?image=1069);
}

.backgroundFilter {
  --im1: linear-gradient(to right,transparent,green);;
}
<div class="container">
<div class="background1">...</div>
<div class="background1 backgroundFilter">...</div>
<div class="background2">...</div>
<div class="background2 backgroundFilter">...</div>
</div>

您也可以考虑为新背景使用伪元素,但由于我们只有 2 个伪元素,因此您只能使用 3 个背景:

.container > div { 
  height:200px;
  width:200px;
  display:inline-block;
  position:relative;
  z-index:0;
}

.background1 {  
  background: url(https://picsum.photos/200/300?image=0);
}

.background2 { 
  background: url(https://picsum.photos/200/300?image=1069);
}

.backgroundFilter::before {
  content:'';
  position:absolute;
  z-index:-1;
  top:0;
  left:0;
  right:0;
  bottom:0;
  background: linear-gradient(to right,transparent,green);;
}
<div class="container">
<div class="background1">...</div>
<div class="background1 backgroundFilter">...</div>
<div class="background2">...</div>
<div class="background2 backgroundFilter">...</div>
</div>

关于html - 如何在之前的背景图片之上添加背景图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54652894/

相关文章:

javascript - 使用 JS/g 函数替换字符显示未定义

javascript - JQuery 中的倒计时问题

javascript - 将 div 的宽度推小的动画

html - 具有背景渐变的背景图像

css - Div 背景图像没有出现?图片来源已多次检查

image - IE10 的背景图像和渐变

javascript - 通过 OnClick 事件为图像添加动画

CSS(不透明度转换)在我的测试网站上运行但不适用于真实网站

css - Sass Ampersand 为类添加标签

javascript - 将数组从数据库传递到 Controller AngularJs