Mootools 1.2教程 滚动条(Slider)_Mootools

尽管滚动条(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文件和上面的示例。

时间: 2024-10-13 19:08:47

Mootools 1.2教程 滚动条(Slider)_Mootools的相关文章

Mootools 1.2教程 类(一)_Mootools

简单地讲,一个类就是一个容器,这个容器包含了一些变量集合和操作这些变量的函数,以便实现特定的功能.在一个内容牵涉较多的项目中,类会显得难以置信的有用. 变量 在前面一系列的课程中,我们已经学习过了Hash对象中键值对(key/value pair)的使用方式,因此,下面的这个例子中创建了一个类,它只包含了一些变量,你看起来可能会觉得非常的熟悉: 参考代码: 复制代码 代码如下: // 创建一个名为class_one的类 // 包含两个内部变量 var Class_one = new Class(

Mootools 1.2教程(2) DOM选择器_Mootools

如果你还没有准备好,请先阅读上一篇<Mootools 1.2教程(1)--MooTools介绍>.我们讲了怎么引用MooTools 1.2以及怎么在domready里面调用你的脚本. 今天开始本系列教程的第2讲.在这一讲中,我们会学习几种选择HTML元素的方法.在许多方面,这是MooTools用得最多最基本的.毕竟,要创建一个基于HTML元素的交互性用户体验,你必须首先把它们掌握在手中. 基本的方法 $(); $函数是MooTools中基本的选择器.你可以通过它来根据一个ID选择DOM元素.

Mootools 1.2教程 事件处理_Mootools

今天我们开始第五讲,在上一讲(<Mootools 1.2教程(4)--函数>)中,我们学习了在MooTools 1.2中建立和使用函数的几种不同方式.下一步就是理解事件了.和选择器类似,事件也是建立互动界面的一个重要部分.一旦你掌握了一个元素,你需要去决定什么行为来触发什么效果.先把效果留着以后在讲,我们首先看一看中间步骤和一些常见的事件. 左键单击事件 左键单击事件是web开发中最常见的事件.超链接识别点击事件,然后把你带到另外一个URL地址.MooTools能够识别其他DOM元素上的点击事

Mootools 1.2教程(3) 数组使用简介_Mootools

今天,我们在来看看如何使用数组来管理DOM元素.基本方法 .each(); 在处理数组时,.each();方法是你最好的朋友.它提供了一种很容易的方法来遍历数组的每个元素,如果有需要还可以对其中的元素进行任何逻辑处理.例如,我们可以假设你需要为页面中的每个div对象调用alert方法: 参考代码: 复制代码 代码如下: $$('div').each(function() { alert('a div'); }); 如果使用下面的HTML代码,上面的JavaScript代码将弹出两个alert对话

Mootools 1.2教程 设置和获取样式表属性_Mootools

欢迎开始这一系列的教程的第七讲.今天,我们来看一下如何通过MooTools 1.2和我们以前几讲中的内容来操作样式,这将给你在UI上带来很大的控制权.处理样式非常简单,不过今天我们要做一些调整.例如,我们要介绍键值对(key-value pair)对象.我们也会讲到在domready之外来传递变量,就像我们在关于函数的那一讲中学到的一样.从这里开始,我们会开始慢慢提高难度,介绍一些必要的编程概念.如果你是JavaScript新手或者第一次开始学MooTools,请确保你在明白了前面的教程,你可以

Mootools 1.2教程 排序类和方法简介_Mootools

Sortables类还提供了包括一个名叫"serialize"的优秀方法,通过这个方法你额可以把这些元素的id作为数组输出--对于服务器端的开发非常有用.接下来,我们看看如何创建一个新的排序项集合,还有一定要看一下最后的演示实例. 基本知识 创建一个新的Sortable对象 首先,我们要把我们要排序的元素赋值给变量.对于Sortables来说,如果你想要多个列表之间的元素能够在相互之间拖拽,你需要把这些元素全部都放在一个数组中,就像这样: 参考代码: 复制代码 代码如下: var so

Mootools 1.2教程 定时器和哈希简介_Mootools

定时器能比它表面看起来做更多的事情--定时能定期地触发一个函数.另一方面,hash则是键值对(key/value)的集合.如果你对hash还不熟悉现在也不要着急--我们今天就会做一个快速简要的介绍,并且会提供一些延伸阅读的相关链接.就像MooTools中的所有东西一样,一旦你看到它的正确用法,它使用起来就非常的简单,并且不可思议的有用. .periodical()函数 基本用法 使用这个方法你唯一要做的就是在一个函数的结尾添加.periodical();,那样你的函数就会定时地触发.和以前的一样

Mootools 1.2教程 同时进行多个形变动画_Mootools

这在你给多个元素添加有相同选项的形变动画时非常有用.就像我们在第20讲中看到的最后一个例子一样. 基本用法 使用Fx.Elements的方法看起来和Fx.Morph差不多.这两者之间的区别在于.start({})方法和.set({})方法. 为了保证事情简洁,让我们首先建立一个元素数组,以用来传递给Fx.Elements. 参考代码: [复制代码] [保存代码] var fxElementsArray = $$('.myElementClass'); 现在我们就可以把我们的数组传递给Fx.Ele

Mootools 1.2教程 选项卡效果(Tabs)_Mootools

简单的"额外信息"标签(TAB) 鼠标移上去显示内容的TAB 在这第一个项目中,我们要创建一个简单的菜单,当鼠标移动到这些菜单上时显示相应的内容.首先,我们来完成HTML代码--我们就用包含四个列表项的ul好了,然后再创建四个div(每一个div对应一个列表项): 参考代码: 复制代码 代码如下: // 这里是我们的菜单 <ul id="tabs"> <li id="one">One</li> <li i