我想知道是否有办法在背景颜色后面放置背景图像。
我有一个带有滑块的颜色选择器,当我在alpha通道上进行迭代时,我希望方格图像显示在颜色下
我想我可以将图像添加到html中,然后将其放置在div下,但是没有必须添加position: absolute;
的“清洁”解决方案吗?我真的想避免这种情况
我尝试使用::before
和::after
,但到目前为止没有成功,图像无法显示。我尝试使用content: url("")
,但它始终处于最前面,似乎无法将其与z-index
一起放在下面
let red = document.querySelector("#red");
let green = document.querySelector("#green");
let blue = document.querySelector("#blue");
let alpha = document.querySelector("#alpha");
let paletteColor = document.querySelector(".paletteColor")
paletteColor.style.backgroundColor = `rgba(${red.value}, ${green.value}, ${blue.value}, ${alpha.value/100})`
red.addEventListener("input", rgbaValue);
green.addEventListener("input", rgbaValue);
blue.addEventListener("input", rgbaValue);
alpha.addEventListener("input", rgbaValue);
function rgbaValue() {
let rgba = `rgba(${red.value}, ${green.value}, ${blue.value}, ${alpha.value/100})`
paletteColor.style.backgroundColor = rgba
}
.palette {
border: 3px solid black;
}
.sliders {
list-style: none;
left: 80px;
display: inline-block;
}
.paletteColor {
height: 100px;
width: 100px;
display: inline-block;
}
.paletteColor::after {
height: 100px;
width: 100px;
display: inline-block;
background-color: black;
}
.paletteColor::before {
height: 100px;
width: 100px;
display: inline-block;
background-image: url("./checkered.jpg");
}
<div class="palette">
<div class="paletteColor"></div>
<ul class="sliders">
<li><input id="red" type="range" min="0" max="255" value="150"></li>
<li><input id="green" type="range" min="0" max="255" value="222"></li>
<li><input id="blue" type="range" min="0" max="255" value="22"></li>
<li><input id="alpha" type="range" min="0" max="100" value="100"></li>
</ul>
<div>
答案 0 :(得分:2)
您可以使用::before
作为背景色。
div {
position: relative;
width: 100px;
height: 100px;
background-image: url(//img.pranavc.in/100)
}
div::after {
position: absolute;
content: '';
background-color: rgba(100, 0, 1, .5);
width: 100px;
height: 100px;
}
<div></div>
或者通过将图像放在::before
中,然后减小图像的z-index
值(使div可访问)来实现更好的选择。
div {
position: relative;
width: 100px;
height: 100px;
background-color: rgba(100, 0, 1, .5);
}
div::after {
position: absolute;
content: '';
width: 100px;
height: 100px;
background-image: url(//img.pranavc.in/100);
z-index: -1;
}
<div></div>
答案 1 :(得分:1)
#img-wrapper {
background: red;
}
img {
width: 100%;
opacity: 0.5;
vertical-align: middle;
}
<div id="img-wrapper"><img src="https://images.freeimages.com/images/large-previews/25d/eagle-1523807.jpg" alt=""></div>
这会在实际图像上添加覆盖。
答案 2 :(得分:0)
好吧,我想出是否可以将位置设置为绝对位置并使用z-index
进行操作,唯一的问题是我使用的是content
而不是background-color
。
.paletteColor{
height: 100px;
width: 100px;
display: inline-block;
z-index: 0;
}
.paletteColor::before{
height: 100px;
width: 100px;
display: inline-block;
position: absolute;
z-index: -1;
content: url("./checkered.png");
}