我正在尝试在DOM上放置一个隐藏的验证弹出窗口,然后在发送表单时将其设置为动画。我发现在将元素设置为完全不透明度之前使用.hide()
或.css(opacity, 0)
时,jQuery动画方法的运行方式不同。
在代码的早期,如果我使用.hide()
,.animate()
且其opacity属性设置为1,则根本不起作用。但是,.fadeIn()方法首先使用.hide()
。如果我使用opacity
方法将元素的.css()
设置为0,那么.animation()
将淡入元素。我想使用.animate()
,因为它具有灵活性和附加选项。
我决定继续使用.css()
方法,但后来遇到了尝试支持IE8的问题。 .css(opacity, 0)
不会隐藏IE8中的元素,因此我此时唯一的选择是使用.fadeIn()
来完成我想要完成的任务。
是否有其他人遇到过这个问题,如果有的话,我可以向你提出一些建议=)
答案 0 :(得分:0)
hide
和'fadeIn / fadeOut methods toggle the
显示:css property. Whereas animating the opactiy, does not. I've found the simplest fix for this is to call
fadeTo`而不是隐藏,只是淡化为0不透明。
$('#target-element').fadeTo( 0, 0 ).fadeTo( 3000, 1 );
答案 1 :(得分:0)
这是一个读取jQuery源代码非常有用的情况。 hide()
实际上在CSS上设置了display:none
声明。设置display:none
后,即使您更改了不透明度,该元素也会隐藏。
如果您希望该元素再次可见,则首先需要设置display:block
。这正是fadeIn()
所做的:首先调用show()
(设置display:block
),然后设置不透明度。
因此,您可以选择在手动运行不透明动画时自动切换显示,或者只使用fadeIn / Out辅助方法。
答案 2 :(得分:0)
我之前也遇到过这个问题。我发现了对隐藏,淡入淡出和动画的行为的这种解释。
http://www.catchmyfame.com/2010/08/31/jquery-hide-vs-fadeout-vs-animate/
我认为jquery做了许多特定于浏览器的mumbo jumbo,其动画不透明度可以隐藏ie的疑虑。你可以做的是有一个类,让你的元素屏幕外,在html中应用,然后使用查询动画它不可见,删除屏幕外的持有者类,然后在你需要时动画它。
我使用的是一个有位置的类:绝对和左:100%用于我的一些东西。似乎工作。