Tween.propHooks = {
_default: {
get: function(){...},
set: function(){...}
},
scrollTop: {
set: function(){...}
}
scrollLeft: {
set: function(){...}
}
}
set: function( tween ) {
if ( tween.elem.nodeType && tween.elem.parentNode ) {
tween.elem[ tween.prop ] = tween.now;
}
}
get: function( tween ) {
var result;
if ( tween.elem[ tween.prop ] != null &&
(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
return tween.elem[ tween.prop ];
}
//传递一个空字符串作为第三个参数的.css会自动尝试parseFloat,
//并返回到一个字符串,如果解析失败的话。
//所以,简单的值,如“10px”会被被解析为浮点数。复杂的值,如“旋转(1rad)”返回原样。
result = jQuery.css( tween.elem, tween.prop, "" );
// 空字符串, null, undefined 和 "auto"都转化为0
return !result || result === "auto" ? 0 : result;
}
set: function( tween ) {
//使用step hook向下兼容 - 使用cssHook如果他存在 - 使用.style如果可用的话
//使用直接的特征值如果可用可用的话
if ( jQuery.fx.step[ tween.prop ] ) {
jQuery.fx.step[ tween.prop ]( tween );
} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
} else {
tween.elem[ tween.prop ] = tween.now;
}
}
jQuery.fx = {
tick = function () {...},//每个时间点都会执行的函数外壳,会取出jQuery.timers中的函数执行
timer = function ( timer ) {...},//执行参数中的函数并启动计时
interval = 13, //计时步长
start = function () {...},//启动计时
stop = function () {...},//停止计时
speeds = {slow: 600,fast: 200,_default: 400},//动画速度(完整动画执行时间)
step = {}//向下兼容<1.8扩展点
}
jQuery.fx = Tween.prototype.init;
//每个时间点都会执行的函数外壳,会取出jQuery.timers中的函数执行
jQuery.fx.tick = function() {
var timer,
timers = jQuery.timers,
i = 0;
fxNow = jQuery.now();
for ( ; i < timers.length; i++ ) {
timer = timers[ i ];
// Checks the timer has not already been removed
if ( !timer() && timers[ i ] === timer ) {
timers.splice( i--, 1 );
}
}
if ( !timers.length ) {
jQuery.fx.stop();
}
fxNow = undefined;
};
//执行参数中的函数并启动计时
jQuery.fx.timer = function( timer ) {
if ( timer() && jQuery.timers.push( timer ) ) {
jQuery.fx.start();
}
};
//计时步长
jQuery.fx.interval = 13;
//启动计时
jQuery.fx.start = function() {
if ( !timerId ) {
timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
}
};
//停止计时
jQuery.fx.stop = function() {
clearInterval( timerId );
timerId = null;
};
//动画速度(完整动画执行时间)
jQuery.fx.speeds = {
slow: 600,
fast: 200,
// Default speed
_default: 400
};
//向下兼容<1.8扩展点
jQuery.fx.step = {};
这里其中执行动画的关键源码是
//动画入口函数function Animation( elem, properties, options ){
...
jQuery.fx.timer(
jQuery.extend( tick, {
elem: elem,
anim: animation,
queue: animation.opts.queue
})
);
...
}
//执行参数中的函数并启动计时
jQuery.fx.timer = function( timer ) {
if ( timer() && jQuery.timers.push( timer ) ) {
jQuery.fx.start();
}
};
//计时步长
jQuery.fx.interval = 13;
//启动计时
jQuery.fx.start = function() {
if ( !timerId ) {
timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
}
};
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有