在它们停止工作后恢复过渡效果
Reviving transition effects after they stop working
好的,如果通过CSS在样式上设置转换,那么只要样式没有被Javascript更改,它就会工作并保持工作(然后转换停止),即使Javascript将原始属性恢复到以前的值。
在一种风格被"触动"之后,有没有办法恢复过渡?
例如,一旦Javascript将宽度设置为100px(这是CSS值),转换就会停止。
var el = document.getElementById("test");
el.style.width = "100px";
div {
width: 100px;
height: 100px;
background: red;
-webkit-transition: width 2s; /* For Safari 3.1 to 6.0 */
transition: width 2s;
}
div:hover {
width: 300px;
}
<div id="test"></div>
当您将宽度与el.style.width = "100px"
硬连接时,它将覆盖您的div:hover
CSS规则,因此它将不再具有优先级。
您需要增加:hover
CSS规则的优先级,使其仍然有效。你可以通过多种方式做到这一点。一种方法是使用!important
。通常,我不喜欢使用!important
,但在这种情况下,如果没有它,很难覆盖直接指定样式的优先级
div:hover {
width: 300px !important;
}
您可以在这里阅读如何计算CSS的特异性,以确定什么获得优先权。不幸的是,直接指定的样式规则具有很高的优先级。
这是一个工作演示:
var el = document.getElementById("test");
el.style.width = "100px";
div {
width: 100px;
height: 100px;
background: red;
-webkit-transition: width 2s; /* For Safari 3.1 to 6.0 */
transition: width 2s;
}
div:hover {
width: 300px !important;
}
<div id="test"></div>
您可以用!important
覆盖内联样式
div:hover {
width: 300px !important;
}
它本身并没有停止,JavaScript只是将宽度放置为具有最高特异性的内联CSS(!important
除外),因此悬停宽度将不起作用,因为其特异性较弱。一种解决方法是使用!important
,但我不建议这样做。尝试删除JS样式或使用类转换
var el = document.getElementById("test");
el.style.width = "100px";
div {
width: 100px;
height: 100px;
background: red;
-webkit-transition: width 2s; /* For Safari 3.1 to 6.0 */
transition: width 2s;
}
div:hover {
width: 300px !important;
}
<div id="test"></div>
相关文章:
- 滚动延迟页面过渡效果
- 如何根据上一个或下一个箭头为nivo滑块提供特定的过渡效果
- 如何在javascript中添加过渡效果
- 在它们停止工作后恢复过渡效果
- 如何在没有过渡效果的情况下使用fancybox调整大小
- 加载新页面时的过渡效果,AJAX
- 覆盖ColorBox打开/关闭过渡效果
- 带有onclick的CSS3过渡效果
- 当单击菜单时,应用过渡效果来减慢子菜单的打开速度
- 让 jquery 和 css 过渡效果协同工作
- 具有放大/缩小过渡效果的全屏滑块
- JQuery 移动版:仅在后退/前进按钮上禁用页面过渡效果
- 暂时禁用CSS过渡效果的最干净方法是什么
- 如何在自动完成中制作过渡效果(幻灯片)
- 隐藏 3 列并将其中一列扩展为 100% 行时的 jQuery 过渡效果
- CSS 切片/插槽过渡效果,用于/与 DIV 一起使用
- Vue.js具有CSS动画和过渡效果的待办事项任务
- CSS3滑块过渡效果
- 缩放过渡效果
- 如何在淘汰amd组件之间应用过渡效果