【发布时间】:2019-08-05 20:14:39
【问题描述】:
我想知道是否有办法在背景颜色后面放置背景图像。
我有这个带滑块的颜色选择器,当我在 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>
【问题讨论】:
-
IMO 绝对定位的背景棋盘图像是这里最简单的解决方案
-
问题是图像不会被看到,因为背景颜色会不透明......
-
这篇文章可能会有所帮助stackoverflow.com/questions/8195215/…