为了账号安全,请及时绑定邮箱和手机立即绑定

关于transition的一点疑惑

关于transition的一点疑惑

偶然的你 2019-04-19 15:59:57
这里是一个demo假设有元素有css.change{transition:all1s;}用js修改其样式window.onload=function(){vardemo=document.querySelector('.demo');demo.style.left='200px';//1demo.style.background='pink';//2demo.classList.add('change');//3}为什么left,background的值是渐变的?明明是先改变值,后添加transition属性的如果是用jquery,在addClass前添加一个show方法,就可修复此bug,不过这又是为什么?window.onload=function(){//$('.demo').css({'left':'200px','background':'pink'}).addClass('change');//和上面一样会渐变$('.demo').css({'left':'200px','background':'pink'}).show().addClass('change');//不会简便}解决方法,如此便好window.onload=function(){vardemo=document.querySelector('.demo');demo.style.left='200px';//1demo.style.background='pink';//2setTimeout(function(){demo.classList.add('change');//3})}
查看完整描述

2 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

这个和浏览器渲染优化有关,你去执行js代码,等到下一帧的时候才回去真正做一次绘制,解决这个你可以在指定完style之后,强制一次reflow,例如可以ele.offsetWidth=ele.offsetWidth
                            
查看完整回答
反对 回复 2019-04-19
?
largeQ

TA贡献2039条经验 获得超7个赞

有可能跟js执行速度和你的.change{transition:all1s;}这个设置的时间有关。加上show的话有一个show的时间过程。
                            
查看完整回答
反对 回复 2019-04-19
  • 2 回答
  • 0 关注
  • 275 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信