CSS转换获胜't在没有“setTimeout”的情况下运行
CSS transition won't run without `setTimeout`
我使用JS将元素的不透明度设置为0,然后设置不透明度转换,最后将不透明度设置成1。我希望看到元素立即消失,然后又消失。相反,什么都没发生。
但是,如果在设置转换并将不透明度设置为1之前添加setTimeout
,则转换确实会触发。这里发生了什么?浏览器是否正在批处理CSS更改?有比setTimeout
破解更好的方法吗?
https://jsfiddle.net/Lpk5en54/2/
<span>abeclc</span>
<button>Go</button>
var span = document.getElementsByTagName("span")[0];
document.getElementsByTagName("button")[0].onclick = function () {
span.style.transition = '';
span.style.opacity = '0';
//setTimeout(function () {
span.style.transition = 'opacity 2s';
span.style.opacity = '1';
//}, 100);
};
您需要触发回流:https://jsfiddle.net/Lpk5en54/3/
var span = document.getElementsByTagName("span")[0];
document.getElementsByTagName("button")[0].onclick = function () {
span.style.transition = '';
span.style.opacity = '0';
// setTimeout(function () {
var foo = span.offsetTop
span.style.transition = 'opacity 2s';
span.style.opacity = '1';
// }, 100);
};
相关文章:
- javascript在html元素方法运行setTimeout后返回此消息
- CSS转换获胜't在没有“setTimeout”的情况下运行
- CSS 转换不会在没有 setTimeout 的情况下运行
- 如何让 setTimeout 函数运行,然后停止使用循环
- 如何在javascript中运行没有settimeout和setinterval函数的拍卖??
- setTimeout在运行过程中更改速度
- Javascript setTimeout 函数保持运行
- setTimeout 仅在控制台上运行.log在 Meteor 中
- 使用 setTimeout 在不阻止输入的情况下运行大型任务,并使用 Promise 找出任务何时完成
- 为特定的 DOM 元素运行 setTimeout()
- setTimeout 连续运行其函数
- setTimeout 放在标头中,如何限制运行 1 次
- setTimeout 在循环中只运行一次
- JavaScript 使用 setTimeout 遍历数组运行到未定义的拆分中
- 如何阻止此 setTimeout 函数运行
- 在javascript setTimeout中将字符串作为函数运行
- 确保一次只运行一个 setTimeout(处于活动状态)
- 简单嵌套的 setTimeout() 只运行一次 (JavaScript)
- JavaScript setTimeout运行两次
- SetTimeout运行不正常