Javascript css转换只能在setInterval内工作?为什么?
在脚本中的某一点上,会发生以下情况 CSS编码Javascript css转换只能在setInterval内工作?为什么?,javascript,css-transitions,Javascript,Css Transitions,在脚本中的某一点上,会发生以下情况 CSS编码 .tt{ opacity: 0; transition: all 1s;} JS-CODE这不会转换 this.element.insertAdjacentHTML('beforeend',`<div class="tt">this is a message</div>`); this.tooltip = this.element.querySelector('.tt'); this.tooltip.style
.tt{ opacity: 0; transition: all 1s;}
JS-CODE这不会转换
this.element.insertAdjacentHTML('beforeend',`<div class="tt">this is a message</div>`);
this.tooltip = this.element.querySelector('.tt');
this.tooltip.style.opacity = 1; => THIS DOES NOT TRANSITION
this.element.insertAdjacentHTML('beforeend',`<div class="tt">${this.element.dataset.tooltip}</div>`);
this.tooltip = this.element.querySelector('.tt');
setTimeout(function(){
this.tooltip.style.opacity = 1 => THIS DOES TRANSITION
}.bind(this),0);
但是,当我在这段代码中更改代码时,会发生转换
this.element.insertAdjacentHTML('beforeend',`<div class="tt">this is a message</div>`);
this.tooltip = this.element.querySelector('.tt');
this.tooltip.style.opacity = 1; => THIS DOES NOT TRANSITION
this.element.insertAdjacentHTML('beforeend',`<div class="tt">${this.element.dataset.tooltip}</div>`);
this.tooltip = this.element.querySelector('.tt');
setTimeout(function(){
this.tooltip.style.opacity = 1 => THIS DOES TRANSITION
}.bind(this),0);
为什么??即使setTimeoutdelay设置为0,也会在一个渲染状态和另一个渲染状态之间发生转换 在以不透明度0渲染元素之前,第一个代码块将更改“不透明度”属性 添加超时会引入延迟,在该延迟中,可以在不透明度为0时渲染元素 即使setTimeoutdelay设置为0
setTimeout有一个最小延迟,即使没有,作业队列也可能在下一个定时操作之前重新绘制。你为什么大喊大叫?@JeremyThille没有大喊大叫。想用排版的方式把它弄清楚…在互联网上,大写=除了文章标题外的叫喊是setTimeout的“技巧”吗?然后是正确的解决方法吗?或者你会提出其他建议吗?@Quentin是的,这就是我删除评论的原因。