在网上查了一下,Jquery动画在IE下出现抖动,是因为浏览器解析该页面并没有采用标准模式,而Jquery动画必须是在标准模式之下,也就是strict mode。8 Q, f/ I5 C/ m+ {! b* Z' n
如果不在HTML前制定DOCTYPE,那么IE会使用怪癖模式,也就是Quirks Mode解析该页面。从科学地角度讲,我们还是应该制定为strict mode的。但是难保你当初为了省事而忘记写了,结果项目越做越大了。+ s9 K$ u, y, ~" V6 N( h# R
而你又恰恰使用了Jquery,你可以选在再把制定为strict mode的这行代码9 `0 F8 n/ @7 J- ^
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">[/codefilter_code] ~: \' \/ }0 X$ q. w4 n% W/ k# a
加上去,Jquery动画正常了,可许多页面布局又乱掉了。很显然得不偿失啊。/ c, D- U) N) x4 O3 z" J
下面就是改写Jquery动画中的slideUp和slideDown,(我发现自己有写的让别人看不懂的能力,谁叫怪事太多了呢)。! \3 v6 E! c; J
(function($){, B& ^2 Q$ D' h0 {3 Q2 }1 F
var timer;
+ p9 J$ I% S# J4 |0 E( h0 N $.fn.customSlide = function(options){
6 J6 O) g, n% z- D8 v var defaults = {/ E4 I( I. T( f8 @& d
'flag' : 'down', //the flag using differing "SlideDown" and "SlideUp"
& c: P) g/ t0 o 'delay' : 10, // the delay of the slide function
' Z. J. u }' E% p# m' ^2 Z: } 'distance' : 10 //the distance of the element's each step# p% D4 M* r8 `7 \: L C4 }
};: ]+ @/ g0 Z' `6 ^! \
var options = $.extend(defaults, options);
5 u/ S! q. r; {3 D2 \0 o5 athis.each(function(){
" ?( ?2 a) t( W2 q. g2 U0 A0 q $(this).css('overflow', 'hidden');: A6 J* u4 f" V; B2 L
clearInterval(timer);
. ^/ A- J. I) a/ a+ _1 w var initHeight = $(this).height();
% V7 {" W1 F& k4 Y if(typeof $(this).data('initHeight') == 'undefined'){$(this).data('initHeight', initHeight);}
; m& w( Q7 `: v if(typeof $(this).data('initAction') == 'undefined'){$(this).data('initAction', true);}# A) q1 j" X1 j* W/ M) Y
if(options.flag == 'up'){" ^9 w4 J4 N% P9 y
timer = setInterval($(this).slide(parseInt('-' + options.distance)), options.delay);$ P8 q- |( k7 l8 `6 N( u) R- V
}else{
0 Q" a1 f" R, _ timer = setInterval($(this).slide(options.distance), options.delay);
! o0 i( G! l1 N3 s- g. g: n* g }: b Q9 N( C! J4 x: Z% w
});
# J5 `9 `" a$ m& k' `8 z };
) B: B2 G( I# J! ] $.fn.slide = function(distance){# x* Y V2 I4 B- Q; t' }2 ~6 M
var element = this;! m* n7 \' I# n3 D5 w# l; ^
return function(){9 k/ X4 P( N5 \6 r: A& N
var height = element.height() + distance;. P, k6 }# c6 U( d# p
if(typeof element.data('initAction') != 'undefined' && element.data('initAction')){! @- x6 `4 M' }$ Z5 V' Q
height = 1;
- d5 g0 i' X6 j" H element.height(height);
5 o7 X U) c1 ?element.show();4 Z c" |( i. l/ N" B! k# C6 _
element.data('initAction', false);
0 C1 \: Q. m g }7 g, t+ E( S! ?
if(height < 0){
, ~# D/ v) l* U" D+ t3 Q element.height(0);) [% L* A1 x( g$ k5 p* E
element.hide();
9 w9 `, h/ t" s. Q- d. m2 wif(typeof element.data('initAction') != 'undefined' && !element.data('initAction')){
, g; G9 z, q6 C' a$ f- W element.data('initAction', true);: ^9 T5 p# R$ ]0 A. {
}
, |( w* m5 X# u! _/ k+ S' nclearInterval(timer);
6 G- k- d& n3 E; F- z J, H5 s }else if(height > element.data('initHeight')){' i6 f7 G" Q4 Z: D% r! V0 m
element.height(element.data('initHeight'));
5 |8 A2 i/ N, W/ \# u% s) y5 U: MclearInterval(timer);- }! C& W7 W/ A$ X! }- K. T
}else{
: ] S$ `3 j) T3 b element.height(height);
V; U7 d+ x1 d8 L" o7 m9 |- o3 W6 g }- n& ]; o0 I+ I6 ` i! [- ^- |
}; \# I$ V4 }0 j
}4 Z1 Y* D1 W+ }: ~+ i3 q
})(jQuery). ~/ ?: \# ~: U* j) Q
7 v; k+ B0 _; N8 C( `$ G8 t5 Y+ ~( z4 _4 x
' g l. W+ {- A" y! z4 m/ w
5 f. X8 P& `6 {$ P3 I$ p& c D感谢溯游分享!!!
. g S: m1 k7 s6 V" b' ]) n( b! b6 q6 c; j& N4 W
0 r8 V7 m. j5 h& j8 M/ X4 |0 `( ^8 U# }
9 J. j$ u! J. w9 ` g! s
4 U/ P7 m5 y' o N( ~# p# l
|
|