Mootools 1.2教程 滚动条(Slider)


Posted in Javascript onSeptember 15, 2009

尽管滚动条(Slider)遵循这个熟悉的模式,但是任然还有一点特殊的地方。
基本用法
创建一个新的滚动条(Slider)对象
我们首先从HTML和CSS开始。基本的想法是创建一个滚动条的div,因此是一个长的长方形(长度取决于我们用滚动条做什么),还有一个子元素作为滑块。
参考代码:

<div id="slider"><div id="knob"></div></div>

我们的CSS也可以这么简单。只需要设置宽、高,还有背景颜色。
参考代码:
#slider { 
width: 200px 
height: 20px 
background-color: #0099FF 
} 
#knob { 
width: 20px 
height: 20px 
background-color: #993333 
}

现在,我们可以创建我们的新滚动条对象了。要初始化滚动条,首先要把你的相关元素赋值给一些变量,然后使用“new”来创建一个滚动条Slider对象,这和我们以前创建tween、morph和drag.move时一样:
参考代码:
// 把元素赋值给变量 
var sliderObject = $('slider'); 
var knobObject = $('knob'); 
// 创建一个新的slider对象 
// 首先定义slider元素 
// 然后定义滑块元素 
var SliderObject = new Slider(sliderObject , knobObject , { 
// 这里是你的选项 
// 稍后我们会仔细讲一下这些选项 
range: [0, 10], 
snap: true, 
steps: 10, 
offset: 0, 
wheel: true, 
mode: 'horizontal', 
// 当step的值改变时将触发onchange事件 
// 它会把当前的step作为参数传入 
onChange: function(step){ 
// 在这里放置onchange时要执行的代码 
// 你可以引用step 
}, 
// 当用户拖动滑块时触发ontick事件 
// 它会传递当前的位置(相对于父元素的位置) 
onTick: function(pos){ 
// 这是必需的,用以调整滑块的位置 
// 我们会在下面详细解释这个 
this.knob.setStyle('left', pos); 
}, 
// 当拖动停止时触发 
onComplete: function(step){ 
// 当完成时要执行的代码 
// 你可以引用step 
} 
});

Slider的选项
Snap:(默认为false),可以是一个true或者false值。这决定了滑块是不是以最小单元格移动
Offset:(默认是0),这是滑块相对于开始的位置。你可以对此做一个试验。
Range:(默认是false),这是一个非常有用的选项。你可以设置一个数字范围,会依照此数字和你的步数(step)触发onchange事件。例如:如果你设置的范围是[0, 200],而且你设置的step值为10,那么每次onchange的step的值将是20。这个范围也是是负数,例如[-10,0],这个数字在做反向的滚动条时会非常有用(下面有示例)。
Wheel:(默认是false),如果设置这个参数为true,这个滚动条将会识别鼠标滚轮事件。当使用鼠标滚轮时,你肯恩需要调整range参数,以保证鼠标滚轮事件的行为不是相反的(同样,后面会有例子)。
Steps:(默认是100),默认值为100非常有用,因为它可以很容易地作为百分比使用。当然,你也可以以你的理由设置任意多步(这是可以的)。
Mode:(默认是“horizontal”),这个参数定义了滚动条是水平滚动还是垂直滚动。当然了,要从水平滚动转化为垂直滚动还需要一些其它步骤。
回调事件
onChange:当step改变时,触发这个事件。同时传递参数“step”。可以从下面的例子中看到它是什么时候触发的。
onTick:当控制点的位置发生改变时触发这个事件。同时传递参数“position”。可以从下面的例子中看到它是什么时候触发的。
onComplete:当控制点释放时触发这个事件。捅死传递参数“step”。可以从下面的例子中看到它是什么时候触发的。
代码示例
让我们建立一个示例,以便看看它们的效果。
.set();方法:看一看按钮上的事件,看是怎么使用.set()方法的。它使用起来非常简单:调用slider对象,附加.set,然后是你想要滚动的步数(step)。
参考代码:
window.addEvent('domready', function() { 
var SliderObject = new Slider('slider', 'knob', { 
// 选项 
range: [0, 10], 
snap: false, 
steps: 10, 
offset: 0, 
wheel: true, 
mode: 'horizontal', 
// 回调事件 
onChange: function(step){ 
$('change').highlight('#F3F825'); 
$('steps_number').set('html', step); 
}, 
onTick: function(pos){ 
$('tick').highlight('#F3F825'); 
$('knob_pos').set('html', pos); 
// 这一行是必需的(水平滚动使用left) 
this.knob.setStyle('left', pos); 
}, 
onComplete: function(step){ 
$('complete').highlight('#F3F825') 
$('steps_complete_number').set('html', step); 
this.set(step); 
} 
}); 
var SliderObjectV = new Slider('sliderv', 'knobv', { 
range: [-10, 0], 
snap: true, 
steps: 10, 
offset: 0, 
wheel: true, 
mode: 'vertical', 
onTick: function(pos){ 
// 这一行是必需的(垂直滚动使用top) 
this.knob.setStyle('top', pos); 
}, 
onChange: function(step){ 
$('stepsV_number').set('html', step*-1); 
} 
}); 
// 设置垂直滚动的从0开始 
// 否则的话是从顶部开始 
SliderObjectV.set(0); 
// 设置滚动条从7开始 
$('set_knob').addEvent('click', function(){ SliderObject.set(7)}); 
});

onChange
passes the step you are on: onTick
passes the knob position: onComplete
passes the current step:
注意在垂直滚动的例子中,我们不仅仅只是把“mode”改成了“vertical”,我们还改变了onTick事件中的.setStyle();方法中的“left”属性为“top”属性。另外,看一下我们是怎样设置“range”从-10开始,然后到0的。然后,我们在onChange事件中显示当前的数字,我们把这个值乘了-1,正好和位置相反。这完成了两件事情:一是让我们从10到0改变这个值,0在最底部。但是这个可能设置rang为从10到0,从而导致鼠标滚轮事件变得相反。这就是我们的第二个原因——鼠标滚轮读取值,而不是你要控制的方向,因此要让鼠标滚轮正确地读取滚动条并且从底部的0开始的值的唯一方式就是做这一点点改变。
注意:至于onTick事件中“top”和“left”的使用,我不确定这是不是MooTools中的“规则”。这只是我让它们正确运行的一种方法,我很有兴趣听到一些其他的清楚的说法。

更多学习

和以前一样,请参考文档中的sliders一节

下载一个包含你开始所需要的所有东西的zip包

包括MooTools 1.2的核心库和扩展库,还有一个外部的JavaScript文件,一个简单的HTML页面和一个CSS文件和上面的示例。

Javascript 相关文章推荐
用JavaScript页面不刷新时全选择,全删除(GridView)
Apr 14 Javascript
JS打开新窗口的2种方式
Apr 18 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
May 14 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
Jul 27 Javascript
JS简单实现城市二级联动选择插件的方法
Aug 19 Javascript
Backbone.js框架中简单的View视图编写学习笔记
Feb 14 Javascript
js在ie下打开对话窗口的方法小结
Oct 24 Javascript
详解微信小程序 wx.uploadFile 的编码坑
Jan 23 Javascript
js表单序列化判断空值的实例
Sep 22 Javascript
使用Bootrap和Vue实现仿百度搜索功能
Oct 26 Javascript
微信小程序开发问题之wx.previewImage
Dec 25 Javascript
Vue 指令实现按钮级别权限管理功能
Apr 23 Javascript
Mootools 1.2教程 定时器和哈希简介
Sep 15 #Javascript
Mootools 1.2教程 正则表达式
Sep 15 #Javascript
MooTools 1.2中的Drag.Move来实现拖放
Sep 15 #Javascript
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
Sep 15 #Javascript
Mootools 1.2教程 Fx.Tween的使用
Sep 15 #Javascript
Mootools 1.2教程 输入过滤第二部分(字符串)
Sep 15 #Javascript
Mootools 1.2教程 输入过滤第一部分(数字)
Sep 15 #Javascript
You might like
php SQL之where语句生成器
2009/03/24 PHP
php读取flash文件高宽帧数背景颜色的方法
2015/01/06 PHP
php中实现可以返回多个值的函数实例
2015/03/21 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
2016/06/28 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
2017/02/04 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
jquery下操作HTML控件的实现代码
2010/01/12 Javascript
一个原生的用户等级的进度条
2010/07/03 Javascript
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
2012/02/27 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
2014/11/26 Javascript
详解js私有作用域中创建特权方法
2016/01/25 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
vue 中自定义指令改变data中的值
2017/06/02 Javascript
JS获取填报扩展单元格控件的值的解决办法
2017/07/14 Javascript
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
2019/10/10 Javascript
vue v-for直接循环数字实例
2019/11/07 Javascript
python在windows下实现备份程序实例
2014/07/04 Python
Python简单删除目录下文件以及文件夹的方法
2015/05/27 Python
python实现一组典型数据格式转换
2018/12/15 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
详解CSS3中字体平滑处理和抗锯齿渲染
2017/03/29 HTML / CSS
Kent & Curwen:与大卫·贝克汉姆合作
2017/06/13 全球购物
马来西亚综合购物网站:Lazada马来西亚
2018/06/05 全球购物
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
计算机工程学院个人求职信
2013/10/05 职场文书
求职信格式范本
2013/11/15 职场文书
市场营销专业大学生职业生涯规划文
2014/03/06 职场文书
队名及霸气口号大全
2015/12/25 职场文书
python用海龟绘图写贪吃蛇游戏
2021/06/18 Python
分享一个vue实现的记事本功能案例
2022/04/11 Vue.js