javascript - 使用 javascript 更改悬停背景颜色
问题描述
我想访问按钮的悬停背景颜色以在每次单击按钮时更改悬停背景颜色。
这是 index.html 文件中的按钮标签
<button class="btn-hero btn-hero:hover" id="btn">click me</button>
这是在css文件中:
.btn-hero {
font-family: var(--ff-primary);
text-transform: uppercase;
background: transparent;
color: var(--clr-black);
}
.btn-hero:hover {
color: var(--clr-white);
background: var(--clr-black);
}
我可以像这样访问按钮背景颜色:
btn.addEventListener("click", function () {
btn.style.backgroundColor = 'some_color'
});
这会更改按钮颜色,但会否定悬停属性。
我尝试在 app.js 中这样做:
let button_hover = document.querySelector(".btn-hero:hover")
但这会返回一个空值。
有没有办法从 app.js 文件中的 css 文件访问悬停属性?
解决方案
您发布的片段在 JS 和 HTML 中都包含一些错误:
HTML
<button class="btn-hero" id="btn">click me</button>
不应包含:hover
,因为这是一个 CSS 伪选择器(在这种情况下连接到btn-hero
),并且只能在 CSS 中使用(或由 Javascript 引用)。删除btn-hero:hover
.
Javascript
如果要“捕获”元素悬停事件,则需要将 eventListener (在悬停mouseover或mouseenter的情况下)附加到按钮
While
document.querySelector(".btn-hero:hover")
是一个合适的选择器,但由于 Javascript 的异步特性,当 JS 函数运行时会捕获悬停完全是偶然的。这就是函数返回 NULL 的原因。如果要修改元素的 CSS样式,请深入MDN:Window.getComputedStyle()
CSS
对我来说似乎没问题。
你的问题
请确保您了解颜色的十六进制值本质上不是一个长的十六进制值,而是由 2 个十六进制数字组成的 3 个类似于 R、G、B 的十六进制值的串联。将 100hex 添加到任何 #xxxxxx(6 位)颜色会得到相当意想不到的结果。你想改变三个(R,G,B)中的哪一个?
推荐阅读
- javascript - JS从通过目录解析的php脚本添加空白图像名称
- excel - 在具有不同计数的 Excel 数据透视表中按周对数据进行分组
- memory - tomcat内存计算不同
- c++ - 在清除的屏幕上打印从 1 到 10 的每个数字,它们之间有一些时间
- flutter - 显示列表时避免多个具有相同值的数据
- r - DT 表中的单个按钮
- javascript - 具有相同站点的 js-cookie 无且安全
- mysql - 在同一行按名称分组,不包括 NULL 值
- flutter - 使用 GitHub 操作创建文件夹并注入 JSON 文件
- html - 无法为 mydatepicker 插入角色或动态更新选项卡索引