Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我需要设置动画超时才能工作?_Javascript_Css - Fatal编程技术网

Javascript 为什么我需要设置动画超时才能工作?

Javascript 为什么我需要设置动画超时才能工作?,javascript,css,Javascript,Css,在下面的代码中,如果省略setTimeout,转换将不起作用。设置超时的目的是什么 function showCircle (top, left, radius) { let circleDiv = document.querySelector(".circle"); circleDiv.style.top = top + "px"; circleDiv.style.left = left + "px"; setTimeout (() => { circl

在下面的代码中,如果省略setTimeout,转换将不起作用。设置超时的目的是什么

  function showCircle (top, left, radius) {
  let circleDiv = document.querySelector(".circle"); 

  circleDiv.style.top = top + "px";
  circleDiv.style.left = left + "px";

  setTimeout (() => {
    circleDiv.style.width = radius*2 + "px";
  circleDiv.style.height = radius*2 + "px";
  },0)
}

showCircle (150,150,100);
没有延迟(一些浏览器需要超过0毫秒的延迟,这基本上只是让更改等待到堆栈为空),浏览器不会检测到css属性已更改

实际上,这与浏览器对过渡的“绘制/重新绘制”有关

这里有一篇文章讨论如何解决这个问题,就像您“修复”它一样

没有延迟(一些浏览器需要超过0毫秒的延迟,这基本上只是让更改等待到堆栈为空)浏览器不会检测到css属性已更改

实际上,这与浏览器对过渡的“绘制/重新绘制”有关

这里有一篇文章讨论如何解决这个问题,就像您“修复”它一样