如何在之前的背景图片之上添加背景图片?
How to add a background image on top of a previous background image?
我正在编写一个 css 页面,我需要在一个 class 中应用背景图像,然后使用不同的 class 放置部分透明的背景图像在已经存在的那个之上。这是一个有点沙拉的词,所以让我来演示一下。
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 将覆盖之前的图像而不是覆盖它。
这可能吗,还是我需要为每个版本的背景图片制作不同的class?
可以考虑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>
我正在编写一个 css 页面,我需要在一个 class 中应用背景图像,然后使用不同的 class 放置部分透明的背景图像在已经存在的那个之上。这是一个有点沙拉的词,所以让我来演示一下。
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 将覆盖之前的图像而不是覆盖它。
这可能吗,还是我需要为每个版本的背景图片制作不同的class?
可以考虑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>