【问题标题】:Change Opacity of an HTML Element更改 HTML 元素的不透明度
【发布时间】:2015-01-03 17:34:16
【问题描述】:

我正在尝试创建一个叠加层,当单击 HTML 画布元素上的图形时会显示该叠加层。我目前的问题是改变覆盖元素的 CSS 不透明度。

为此,我使用以下两个 CSS 类:

.Overlay {
  opacity: 0.5;
  background: BLUE;
}
.Overlay-Open {
  opacity: 1;
  background: RED;
}

并使用 javascript 更改类:

document.getElementById("Node-Data").setAttribute("class","Overlay-Open");

我慢慢发疯了,因为我不明白为什么背景颜色会改变,而不是不透明度。有人可以借给我一些他们的魔法知识来调试这个问题吗?如果需要,我会提供更多代码。

更新

Sample Code *点击一个节点

替换

document.getElementById("Node-Data").setAttribute("class","Overlay-Open");

document.getElementById("Node-Data").classList.add('Overlay-Open');
document.getElementById("Node-Data").classList.remove('Overlay');

【问题讨论】:

  • 无法重现 — jsbin.com/cuqiyidudu/1 — 尝试提供一个实际演示问题的测试用例。
  • fiddle 请..
  • 在提问时尽量提供重现问题的最小代码示例。

标签: javascript html css


【解决方案1】:

这是在 JavaScript 中操作 class 元素的适当方式:

var el = document.getElementById('Node-Data');
el.classList.add('Overlay-Open');
el.classList.remove('Overlay');  

对我来说工作正常,看看这个codepen,不透明度和背景颜色在 2 秒后发生变化。

【讨论】:

  • 感谢那段代码,我已经更新了我的脚本。
  • @bostelb 我看看你的笔,问题是旁边的 id 'Node-Overlay'(包含'Node-Data')也有类 Overlay。使用开发工具检查它,你会发现它。
  • 非常感谢。我现在感觉很盲目,问题是我将类添加到 Node-Data 而不是 Node-Overlay(错字)。我几乎要疯狂地重写所有内容并在互联网上搜索类似的问题。花了将近一个小时,问题竟然这么简单!
猜你喜欢
  • 1970-01-01
  • 2011-01-22
  • 2015-02-22
  • 2013-03-16
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多