从js更改css属性会中断css动画
Changing css property from js breaks css animation
我有一个悬停效果的按钮(颜色变化)。
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动画同时改变bgcolor吗?或者可能是我对按钮设置动画的方法不对?
这与CSS规则的特殊性有关。在元素上设置的规则(例如,通过设置style
属性)将比在CSS文件/样式块中声明的规则具有更高的特异性(除非使用!important
)。
更好的方法是使用类来设置背景属性,并更改元素上的属性,而不是直接设置样式:
buttons[i].className = "myClass";
这个StackOverflow的答案很好地描述了如何在javascript中设置CSS类。您可以在本文中阅读有关CSS特性的更多详细信息。
您可以使用javascript更改类。
$('#yourElem').click(function(){
$(this).toggleClass('on')
})
然后使用css 管理所有转换
#yourElem { background-color:red; transition: background-color 500ms ease; }
#yourElem.on { background-color:blue; }
这将在单击时转换两者。
然后,只要你没有在新的转换中指定悬停元素,你就可以同时做这两件事。
#yourElem { color:black; background-color:red; transition: background-color 500ms ease, color 500ms ease; }
#yourElem:hover { color:pink; }
#yourElem.on {color:white; background-color:blue; }
您可以使用jquery来更改css,这可能会有所帮助?使用悬停和jquery颜色库https://github.com/jquery/jquery-color
$('node').animate({ backgroundColor: "#f6f6f6" }, 'fast');
相关文章:
- CSS-如何定位内容数据标题
- 窗口大小html css
- 如果文本字段为空,则使用JavaScript应用CSS样式
- 动画.CSS重播
- 有没有一种方法可以防止img get请求使用css或js发生
- CSS表格:从列平移到整个表格宽度
- CKEditor-我在editor.css中的风格是't
- 单击更改图标并通过javascript添加一个css类
- 将CSS应用于printWindow.print();在Javascript中
- jQuery addClass中断延迟,或者jQuery延迟中断CSS转换,或者两者兼而有之
- CSS-设置固定(或绝对)位置时转换宽度中断
- 测试客户端是否支持css道具.重复后代码中断
- 从js更改css属性会中断css动画
- CSS通过JavaScript:更改类“;“中断”;通过风格的改变
- CSS样式中断使用参数?—状态304未修改
- 当使用css FireFox调整大小时,Flowplayer会中断
- 是否有一种方法来检测css转换已经中止/中断
- 在窗口调整大小时更改CSS会中断CSS
- CSS显示:无&JS.show()中断JQuery和AjaxToolkit日期选择器
- 调用Javascript函数后,出现HTML和CSS中断