javascript - 在这种情况下的解决方法是通过降低不透明度来保持 z 顺序?

标签 javascript html css

我在为以下代码情况的元素堆叠和不透明度的默认行为找到一个好的解决方法时遇到问题。我可能不得不重新安排我的代码中的一些东西,但这次我似乎找不到合适的解决方案,我需要一些建议。
我必须牢记什么或什么解决方法可以在这里工作以永久强制在最顶部位置降低不透明度的蓝色方 block 并将 Canvas 保持在下方?

var rangeVal = document.getElementById('rangevalue');
var updateVal = function(val) {
  rangeVal.innerHTML = val;
};
updateVal(range.value);
var imgBlue = document.getElementsByClassName("page-header")[0];
range.addEventListener("input", function(value) {
    imgBlue.style.opacity = this.value / this.max;
});

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
    ctx.fillStyle = "red";
    ctx.fillRect(0, 0, canvas.width, canvas.height);
.page-header:after {
  background-image: url(https://i.imgur.com/gkvp6Jn.jpg);
  height:100%; width: 100%; left:80px; top: 90px; content: "";
  z-index:2;  opacity:1; position:fixed; pointer-events:none
}
<input type="range" id="range" value="100" min="0" max="100" step="1"  
oninput="updateVal(this.value)"
style="position:fixed; top:32px; left:8px">
<div id="rangevalue"></div>
<div class="page-header"></div> 

<div id='div1' style="position:fixed; top:70px; left:100px">
<canvas id='canvas' width='120' height='120'> </canvas> </div>

最佳答案

只需增加page-header的z-index即可。您的问题是,当不透明度降低时,您会创建一个新的 stacking contextpainting order你的元素会改变:

var rangeVal = document.getElementById('rangevalue');
var updateVal = function(val) {
  rangeVal.innerHTML = val;
};
updateVal(range.value);
var imgBlue = document.getElementsByClassName("page-header")[0];
range.addEventListener("input", function(value) {
    imgBlue.style.opacity = this.value / this.max;
});

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
    ctx.fillStyle = "red";
    ctx.fillRect(0, 0, canvas.width, canvas.height);
.page-header {
 position:relative;
 z-index:2;
}

.page-header:after {
  background-image: url(https://i.imgur.com/gkvp6Jn.jpg);
  height:100%; width: 100%; left:80px; top: 90px; content: "";
  z-index:2;  opacity:1; position:fixed; pointer-events:none
}
<input type="range" id="range" value="100" min="0" max="100" step="1"  
oninput="updateVal(this.value)"
style="position:fixed; top:32px; left:8px;">
<div id="rangevalue"></div>
<div class="page-header"></div> 

<div id='div1' style="position:fixed; top:70px; left:100px">
<canvas id='canvas' width='120' height='120'> </canvas> </div>

关于javascript - 在这种情况下的解决方法是通过降低不透明度来保持 z 顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50144799/

相关文章:

javascript - 在javascript中的方法中访问对象的成员

javascript - 动态设置div的位置

javascript - JavaScript 中二维数组的切片/部分

javascript - 使用粘贴时有效的 html 输入验证

jquery - 如何用jQuery实现这种导航瓦片效果?

forms - 尝试理解 CSS 链

html - 将两个类 div 放入 id div

javascript - 如何在 jQuery/Javascript 中编写 switch 语句来测试元素是否具有特定类?

javascript - 单击菜单列表内部时,可单击的下拉菜单不应关闭

html - 我怎样才能像 9gag 那样向图像添加水印呢