[英]CSS Transitions: Trigger with JavaScript
我之前曾问过一个有关使用JavaScript和setTimeout
触发CSS转换的问题 ( JavaScript:使用window.setTimeout触发CSS转换 )。 这个问题试图获得更多的信息。
我有一个函数,它可以更改内容并在parappnp p#test
淡入淡出:
function test() {
var done=false;
var p=document.querySelector('p#test');
window.setInterval(doit,4000);
var data=0;
function doit() {
p.removeAttribute('on'); // 1
p.offsetHeight; // 2 force update
p.innerHTML=data++; // 3
p.setAttribute('on',null); // 4
}
}
CSS是:
p#test {
opacity: 0;
}
p#test[on] {
transition: opacity 1s;
opacity: 1;
}
我注意到必须在p#test[on]
规则中设置 transition
属性。 如果为p#test
规则设置,它将不起作用。
我发现上面的步骤2
和3
可以互换。
但是,如果我尝试仅在JavaScript中设置属性,我将使其无法正常工作:
function doit() { // DOES NOT WORK
p.style.opacity=0;
p.offsetHeight;
p.innerHTML=data++;
p.style.opacity=1;
}
所以我得出结论:
transition
属性为时,才会触发transition
。 抱歉,序言很长。 问题是:
究竟哪种 JavaScript实际上会触发CSS转换? 它仅仅是改变类或属性,还是其他任何方法都能起作用?
我在这里添加了小提琴: https : //jsfiddle.net/comparity/a7qt297m/
愚蠢的问题,但是基础元素( p#test
)上是否也具有transition属性? 在示例代码中,过渡属性仅在“ on”状态下存在。
如果不是这样,可能是因为您在同一函数中立即将不透明度从0更改为1。 查看微小的setTimeout是否可以使opacity = 1行有所作为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.