javascript - 从 js 更改 css 属性会破坏 css 动画

标签 javascript css html hover

我有一个带有悬停效果的按钮(颜色变化)。

button {
    width: 180px;
    height: 80px;
    background-color: #A0522D;  
}

button:hover {
    background-color: #CD853F;
}

然后,我想从 js 更改背景颜色,例如当选择的按钮正确时。这就是我想到的:

buttons[i].style.backgroundColor = "#A0522D";

我还有动画的过渡属性:

button {
    transition: background 0.5s ease, color 0.2s ease;
}

看来,每当我第一次更改背景颜色时,它都会完全删除悬停动画。但是,当我更改字体颜色而不是背景颜色时,情况并非如此。

你知道如何让悬停动画和改变背景颜色的js动画同时工作吗?或者我的按钮动画处理方法可能不正确?

最佳答案

这与 CSS 规则的特殊性有关。在元素上设置的规则(例如,通过设置 style 属性)将比您在 CSS 文件/样式 block 中声明的规则具有更高的特异性(除非您使用 !important )。

更好的方法是使用类来设置背景属性并更改元素上的背景属性,而不是直接设置样式:

buttons[i].className = "myClass";

这个StackOverflow answer有关于如何在 javascript 中设置 CSS 类的精彩描述。您可以在 this article 中阅读有关 CSS 特异性的更多详细信息。 .

关于javascript - 从 js 更改 css 属性会破坏 css 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18083674/

相关文章:

javascript - GWT 计算一个 div 中的行数

css - 列式网格设计可实现设备可移植性

HTML:使用 Bootstrap 添加粘性页脚响应

javascript - 如何在 Google Chrome 扩展程序中获取基本 URL

javascript - 如何在javascript中将变量传递给回调函数

css - 2 列 100% 高度使用 HTML

html - 当容器具有动态高度时设置 flex 元素的百分比高度

javascript - HTML 5 报表设计器

javascript - 如何使用这个名为 bezierjs 的库?

javascript - jQuery动态添加的文字不会加载网页字体样式