JavaScript 和 CSS 悬停问题

标签 javascript html css

更改段落元素的颜色时,CSS 悬停停止工作。

我做了一个演示来解释:https://jsfiddle.net/woan6b64/

我改变之后<p>'s颜色,悬停选择器停止工作。

我的问题是:

  • 如何使用 JavaScript 更改悬停效果?
  • 如何在更改颜色后让鼠标悬停工作?

JSFiddle 代码:

var shift = 0;

function change() {
  if (shift === 0) {
    document.getElementById("box").style.backgroundColor = "black";
    document.getElementById("text").style.color = "white";
    document.getElementById("text").innerHTML = 'Good! Now click the box again.';
    shift = 1;
  } else {
    document.getElementById("box").style.backgroundColor = "white";
    document.getElementById("text").style.color = "black";
    document.getElementById("text").innerHTML = 'Hover effect is now broken :(';
  }
}
#box {
  height: 100px;
  width: 200px;
  background-color: white;
}

p:hover {
  color: green;
}
<div id='box' onclick='change()'>
  <p id='text'>
    Click me for this box to change color. (Notice how I turn green when hovered)
  </p>
</div>

最佳答案

停下来!不要使用 !important 如果没有必要...你的问题是你将颜色设置为黑色。

document.getElementById("text").style.color = "";

这将使颜色继承正确的样式。

然而,这也不是正确的解决方案。您应该将类​​添加到框中,然后执行以下操作:

#box {
  height: 100px;
  width: 200px;
  background-color: white;
}

p:hover {
  color: green;
}

#box.altered {
  color: white;
  background-color: black;
}

.altered p:hover {
  color: red;
}
<div id="box" onclick="this.classList.toggle('altered')">
  <p id='text'>
    Click me for this box to change color. (Notice how I turn green when hovered)
  </p>
</div>

关于JavaScript 和 CSS 悬停问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46437811/

相关文章:

javascript - 无法解析 'material-ui/Button'

php - 如何创建下拉菜单

android - 居中的 div,位置为 :absolute has offset for Android devices when content is larger than viewport

html - 无法获取 z-index 以在菜单内容上正确堆叠视频 iframe

带有选择框的 CSS - 宽度和标签

css - 如何在不插入页面边缘的情况下向右补间元素?

javascript - jQuery 每个 : If element is first-child else

javascript - jQuery 动态内容的点击不起作用

javascript - 如何检查数组中的特定项是否有值? JavaScript

PHP - 逐位回显sql结果