使用说明
首先实例化一个滑动条对象,需要两个参数,分别是滑动容器和滑块(滑块要在容器里面哦):
- var sld = new Slider("idSlider", "idBar")
有以下这些可选参数和属性:
程序代码
- //滑动条程序
- var Slider = Class.create();
- Slider.prototype = {
- //容器对象,滑块
- initialize: function(container, bar, options) {
- this.Bar = $(bar);
- this.Container = $(container);
- this._timer = null;//自动滑移的定时器
- this._ondrag = false;//解决ie的click问题
- //是否最小值、最大值、中间值
- this._IsMin = this._IsMax = this._IsMid = false;
- //实例化一个拖放对象,并限定范围
- this._drag = new Drag(this.Bar, { Limit: true, mxContainer: this.Container,
- onStart: Bind(this, this.DragStart), onStop: Bind(this, this.DragStop), onMove: Bind(this, this.Move)
- });
- this.SetOptions(options);
- this.WheelSpeed = Math.max(0, this.options.WheelSpeed);
- this.KeySpeed = Math.max(0, this.options.KeySpeed);
- this.MinValue = this.options.MinValue;
- this.MaxValue = this.options.MaxValue;
- this.RunTime = Math.max(1, this.options.RunTime);
- this.RunStep = Math.max(1, this.options.RunStep);
- this.Ease = !!this.options.Ease;
- this.EaseStep = Math.max(1, this.options.EaseStep);
- this.onMin = this.options.onMin;
- this.onMax = this.options.onMax;
- this.onMid = this.options.onMid;
- this.onDragStart = this.options.onDragStart;
- this.onDragStop = this.options.onDragStop;
- this.onMove = this.options.onMove;
- this._horizontal = !!this.options.Horizontal;//一般不允许修改
- //锁定拖放方向
- this._drag[this._horizontal ? "LockY" : "LockX"] = true;
- //点击控制
- addEventHandler(this.Container, "click", BindAsEventListener(this, function(e){ this._ondrag || this.ClickCtrl(e);}));
- //取消冒泡,防止跟Container的click冲突
- addEventHandler(this.Bar, "click", BindAsEventListener(this, function(e){ e.stopPropagation(); }));
- //设置鼠标滚轮控制
- this.WheelBind(this.Container);
- //设置方向键控制
- this.KeyBind(this.Container);
- //修正获取焦点
- var oFocus = isIE ? (this.KeyBind(this.Bar), this.Bar) : this.Container;
- addEventHandler(this.Bar, "mousedown", function(){ oFocus.focus(); });
- //ie鼠标捕获和ff的取消默认动作都不能获得焦点,所以要手动获取
- //如果ie把focus设置到Container,那么在出现滚动条时ie的focus可能会导致自动滚屏
- },
- //设置默认属性
- SetOptions: function(options) {
- this.options = {//默认值
- MinValue: 0,//最小值
- MaxValue: 100,//最大值
- WheelSpeed: 5,//鼠标滚轮速度,越大越快(0则取消鼠标滚轮控制)
- KeySpeed: 50,//方向键滚动速度,越大越慢(0则取消方向键控制)
- Horizontal: true,//是否水平滑动
- RunTime: 20,//自动滑移的延时时间,越大越慢
- RunStep: 2,//自动滑移每次滑动的百分比
- Ease: false,//是否缓动
- EaseStep: 5,//缓动等级,越大越慢
- onMin: function(){},//最小值时执行
- onMax: function(){},//最大值时执行
- onMid: function(){},//中间值时执行
- onDragStart:function(){},//拖动开始时执行
- onDragStop: function(){},//拖动结束时执行
- onMove: function(){}//滑动时执行
- };
- Extend(this.options, options || {});
- },
- //开始拖放滑动
- DragStart: function() {
- this.onDragStart();
- this._ondrag = true;
- },
- //结束拖放滑动
- DragStop: function() {
- this.onDragStop();
- setTimeout(Bind(this, function(){ this._ondrag = false; }), 10);
- },
- //滑动中
- Move: function() {
- this.onMove();
- var percent = this.GetPercent();
- //最小值判断
- if(percent > 0){
- this._IsMin = false;
- }else{
- if(!this._IsMin){ this.onMin(); this._IsMin = true; }
- }
- //最大值判断
- if(percent < 1){
- this._IsMax = false;
- }else{
- if(!this._IsMax){ this.onMax(); this._IsMax = true; }
- }
- //中间值判断
- if(percent > 0 && percent < 1){
- if(!this._IsMid){ this.onMid(); this._IsMid = true; }
- }else{
- this._IsMid = false;
- 标签:网站建设(5654)广州网站设计(5620)广州网站建设(4075)广州网页设计(1868)




