Javascript 使用jQuery 2.1+更改css;忽略转换属性
我正在从jQuery2.0.3切换到2.1.0 我注意到在v2.1.0中,直接设置css属性时忽略了Javascript 使用jQuery 2.1+更改css;忽略转换属性,javascript,jquery,css,css-transitions,jquery-2.0,Javascript,Jquery,Css,Css Transitions,Jquery 2.0,我正在从jQuery2.0.3切换到2.1.0 我注意到在v2.1.0中,直接设置css属性时忽略了css转换属性 $('someElement').css('width','100px') 在v2.0.3中,我的元素将保持它的css转换,而在v2.1.0中我将丢失它 我想知道为什么会有不同的处理方式,以及如何“打开”过渡效果 使用jQuery 2.0.3,css转换属性生效 $(函数(){ $('.myClass').css('width','100px'); }); .myClass{ 高度
css转换
属性
$('someElement').css('width','100px')代码>
在v2.0.3中,我的元素将保持它的css
转换,而在v2.1.0中我将丢失它
我想知道为什么会有不同的处理方式,以及如何“打开”过渡效果
使用jQuery 2.0.3,css转换
属性生效
$(函数(){
$('.myClass').css('width','100px');
});代码>
.myClass{
高度:50px;
宽度:300px;
背景色:红色;
过渡:宽度3s;
}
在四处搜索之后,我认为这可能与在发布期间对问题所做的更改有关。根据标题
我将与进行了比较,似乎围绕.ready()
方法和事件延迟方式进行了一些重构。更具体地说,我认为它可能与v2.1.0中的第3407-3408行有关,在该行中最初调用了.ready()
方法(v2.0.3中没有此方法):
至于解决方法,这种转换行为在不同浏览器之间似乎是不一致的。要解决Chrome中的问题,您可以推迟代码的执行并强制重新绘制
setTimeout(函数(){
$('.myClass').css('width','100px');
}, 0);代码>
.myClass{
高度:50px;
宽度:300px;
背景色:红色;
过渡:宽度3s;
}
使用animate()而不是css()似乎也能起作用
$('.myClass').animate({'width':'100px')代码>
.myClass{
高度:50px;
宽度:300px;
背景色:红色;
过渡:宽度3s;
}
我看不出有什么不同!您的浏览器可能有问题。@Okierinaldi您使用的是哪种浏览器?我可以在最新版本的Chrome上复制OP的问题。奇怪的是,我正在fiddle上尝试你的代码,所有的东西都可以在Chrome或firefox上正常工作。但我不知道为什么它不适用于chrome上的这么多代码片段@choz看起来ondomready vs onload是造成差异的原因。2.1.0仅适用于有载,而2.0.3适用于有载both@EricPhillips这可能与类似,您是对的,Chrome中的2.1.0
似乎不适用于ondomready
,只适用于onload
,而2.0.3
可以同时处理这两种奇怪的行为,如果在onclick
中应用css
函数,比如$('.myClass')。on('click',function(){$('.myClass')。css('width',100px');})代码>@Eric Phillips你说得对。我四处搜索,很可能与14164号问题的回流更改有关。我更新了答案。@JoshCrozier感谢您提供了非常全面/深入的答案,非常感谢!
// Kick off the DOM ready check even if the user does not
jQuery.ready.promise();