【发布时间】:2011-09-22 20:45:48
【问题描述】:
背景
我被要求编写一个脚本,为项目创建垂直滚动视差背景效果。我最初的尝试看起来有点像这样:
(function($){
$.fn.parallax = function(options){
var $$ = $(this);
offset = $$.offset();
var defaults = {
"start": 0,
"stop": offset.top + $$.height(),
"coeff": 0.95
};
var opts = $.extend(defaults, options);
return this.each(function(){
$(window).bind('scroll', function() {
windowTop = $(window).scrollTop();
if((windowTop >= opts.start) && (windowTop <= opts.stop)) {
newCoord = windowTop * opts.coeff;
$$.css({
"background-position": "0 "+ newCoord + "px"
});
}
});
});
};
})(jQuery);
// call the plugin
$('.lines1').parallax({ "coeff":0.65 });
$('.lines1 .lines2').parallax({ "coeff":1.15 });
此代码确实提供了所需的效果,但滚动事件上的绑定确实会消耗性能。
问题
第 1 部分。如何更改我的插件以提高效率? 第 2 部分。是否有任何资源(书籍、链接、教程)可供我阅读以了解更多信息?
【问题讨论】:
-
有一个工作示例的链接?听起来不错的效果,我想看看。
-
你有很多泄漏的全局变量。将“use strict”放在main函数的开头,以便在为未定义的变量赋值时获取异常。
标签: javascript jquery