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

关于transition的一点疑惑

关于transition的一点疑惑

弑天下 2019-04-19 16:12:32
这里是一个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贡献1816条经验 获得超6个赞

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

TA贡献1853条经验 获得超18个赞

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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号