Mootools 1.2教程 滑动效果(Slide)


Posted in Javascript onSeptember 15, 2009

基本用法
就像我们前面看过的所有类一样,我们在把这个类应用到一个元素上面时,我们要做的第一件事就是初始化一个新的Fx.Slide实例。
首先,让我们为滑动元素建立一个HTML文件。
参考代码:

<div id="slide_element" class="slide">这里是要滑动显示的内容。</div>

我们的CSS也不需要任何修饰。
参考代码:
.slide { 
margin: 20px 0; 
padding: 10px; 
width: 200px; 
background-color: #DAF7B4; 
}

最后,我们来初始化一个新的Fx.Slide并给它传递我们的元素变量。
参考代码:
var slideElement = $('slide_element'); 
var slideVar = new Fx.Slide(slideElement, { 
// Fx.Slide选项 
mode: 'vertical', // 默认是'vertical'(垂直) 
// Fx选项 
transition: 'sine:in', 
duration: 300, 
// Fx事件 
onStart: function(){ 
$('start').highlight("#EBCC22"); 
} 
});

由于Fx.Slide是Fx的一个扩展,因此你可以使用Fx的任何选项和事件,不过Fx.Slide也有一些自己的选项。
Fx.Slide选项
Fx.Slide只有两个选项——“mode”和“wrapper”。坦白地说,我从来没有发现我自己使用过“wrapper”(我从来没有遇到过这种需求),不过“mode”决定了你是希望水平滑动还是垂直滑动。
mode(模式)
模式给了你两个选择——“垂直”或者“水平”。垂直是从顶部到底部的显示,水平是从左边到右边的显示。这里没有从底部到顶部或从右边到左边的选项。不过我知道修改类本身来实现这些功能是相对简单的。在我看来,我还是希望这能成为一个标准的选项,如果有人已经修改了这个类并允许这些选项,请给我们留言。
wrapper(包装器)
在缺省情况下,Fx.Slide会在你的滑动元素的外面添加一个包装器,并指定其“overflow”属性的值为“hidden”。wrapper允许你设置其他元素作为该元素的包装器。就像我上面所说的,我不清楚它在那里会被用到,我也有兴趣听到任何关于这个东西的想法。(感谢mooforum.net的horseweapon让我明白这个一点。)
Fx.Slide的方法
Fx.Slide也提供了许多方法来显示或者隐藏元素。
.slideIn()
正如名字所告诉你的,该方法讲触发start(开始)时间并显示你的元素。
.slideOut()
滑动元素到隐藏状态。
.toggle()
这个方法有可能显示或者隐藏元素,结果完全取决于这个元素的当前状态。用于点击事件时非常有用。
.hide()
这将隐藏元素,但不使用滑动效果。
.show()
这将显示元素,但不使用滑动效果。
通过方法重新设置模式选项
上面的每个方法均可以接受一个可选的mode参数,允许你覆盖之前设置的选项。
参考代码:
slideVar.slideIn('horizontal');

Fx.Slide快捷方式
Fx.Slide类还提供了一些非常方便的快捷方式来给元素添加滑动效果。
.set('slide');
你可以不用初始化一个新类,而通过set方法来给元素添加一个slide对象来创建一个新的slide实例。
参考代码:
slideElement.set('slide');

设置选项
甚至你还可以通过快捷方式设置选项:
参考代码:
slideElement.set('slide', {duration: 1250});

.slide()
一旦用.set()方法设置了slide,你就可以用.slide()方法来初始化它。
参考代码:
slideElement.slide('in');

.slide方法可以接受以下参数:
'in'
'out'
'toggle'
'show'
'hide'
每一个参数均和上面的方法相对应。
代码示例
上面所讲的这些基本涵盖了全部基本用法。下面的示例将使用我们上面学到的大部分知识,显示一些不同的滑动元素,并提供一些div作为指示器,以便你可以清楚地看到这些事件。
首先,创建HTML文件。
参考代码:
<div id="start" class="ind">Start</div> 
<div id="cancel" class="ind">Cancel</div> 
<div id="complete" class="ind">Complete</div> 
<br /><br /> 
<button id="openA">open A</button> 
<button id="closeA">close A</button> 
<div id="slideA" class="slide">Here is some content - A. Notice the delay before onComplete fires. This is due to the transition effect, the onComplete will not fire until the slide element stops "elasticing." Also, notice that if you click back and forth, it will "cancel" the previous call and give the new one priority.</div> 
<button id="openB">open B</button> 
<button id="closeB">close B</button> 
<div id="slideB" class="slide">Here is some content - B. Notice how if you click me multiple times quickly I "chain" the events. This slide is set up with the option "link: 'chain'"</div> 
<button id="openC">toggle C</button> 
<div id="slideC" class="slide">Here is some content - C</div> 
<button id="openD">toggle D</button> 
<div id="slideD" class="slide">Here is some content - D. Notice how I am not hooked into any events. This was done with the .slide shortcut.</div> 
<button id="openE">toggle E</button> 
<div id="slide_wrap"> 
<div id="slideE" class="slide">Here is some content - E</div> 
</div>

接下来是CSS文件。我们让它尽量保持简单。
参考代码:
.ind { 
width: 200px; 
padding: 10px; 
background-color: #87AEE1; 
font-weight: bold; 
border-bottom: 1px solid white; 
} 
.slide { 
margin: 20px 0; 
padding: 10px; 
width: 200px; 
background-color: #DAF7B4; 
} 
#slide_wrap { 
padding: 30px; 
background-color: #D47000; 
}

最后,是我们的Mootools JavaScript代码:
参考代码:
window.addEvent('domready', function() { 
// 示例A 
var slideElement = $('slideA'); 
var slideVar = new Fx.Slide(slideElement, { 
// Fx.Slide选项 
mode: 'horizontal', // 默认是'vertical' 
//wrapper: this.element, // 默认是this.element 
// Fx选项 
link: 'cancel', 
transition: 'elastic:out', 
duration: 'long', 
// Fx事件 
onStart: function(){ 
$('start').highlight("#EBCC22"); 
}, 
onCancel: function(){ 
$('cancel').highlight("#EBCC22"); 
}, 
onComplete: function(){ 
$('complete').highlight("#EBCC22"); 
} 
}).hide().show().hide(); // 注意,.hide和.show方法并不触发事件 
$('openA').addEvent('click', function(){ 
slideVar.slideIn(); 
}); 
$('closeA').addEvent('click', function(){ 
slideVar.slideOut(); 
}); 
// 示例B 
var slideElementB = $('slideB'); 
var slideVarB = new Fx.Slide(slideElementB, { 
// Fx.Slide选项 
mode: 'vertical', // 默认是'vertical' 
// Fx选项 
// 注意:链式效果可以让你多次点击, 
// 当鼠标离开后, 
// 每次点击的动画可以依次触发 
link: 'chain', 
// Fx事件 
onStart: function(){ 
$('start').highlight("#EBCC22"); 
}, 
onCancel: function(){ 
$('cancel').highlight("#EBCC22"); 
}, 
onComplete: function(){ 
$('complete').highlight("#EBCC22"); 
} 
}); 
$('openB').addEvent('click', function(){ 
slideVarB.slideIn(); 
}); 
$('closeB').addEvent('click', function(){ 
slideVarB.slideOut(); 
}); 
// 示例 C 
var slideElementC = $('slideC'); 
var slideVarC = new Fx.Slide(slideElementC, { 
// Fx.Slide选项 
mode: 'vertical', // 默认是'vertical' 
//wrapper: this.element, // 默认是this.element 
// Fx选项 
//link: 'cancel', 
transition: 'sine:in', 
duration: 300, 
// Fx事件 
onStart: function(){ 
$('start').highlight("#EBCC22"); 
}, 
onCancel: function(){ 
$('cancel').highlight("#EBCC22"); 
}, 
onComplete: function(){ 
$('complete').highlight("#EBCC22"); 
} 
}).hide(); 
$('openC').addEvent('click', function(){ 
slideVarC.toggle(); 
}); 
$('slideD').slide('hide'); 
$('openD').addEvent('click', function(){ 
$('slideD').slide('toggle'); 
}); 
// 示例C 
var slideElementE = $('slideE'); 
var slideWrap = $('slide_wrap'); 
var slideVarE = new Fx.Slide(slideElementE, { 
// Fx.Slide选项 
//mode: 'vertical', // 默认是'vertical' 
wrapper: slideWrap // 默认是this.element 
}).hide(); 
$('openE').addEvent('click', function(){ 
slideVarE.toggle(); 
}); 
});

学习更多……

Fx.Slide是一个多功能,非常有用的插件。要学习更多,查看Fx.Slide文档Fx.MorphFx文档

另外,也一定要阅读一下我们关于Fx.Morph和Fx选项和事件的教程

下载最后示例代码的zip压缩文件

包含你开始所需要的所有东西。

Javascript 相关文章推荐
javascript Array.remove() 数组删除
Aug 06 Javascript
jQuery :nth-child前有无空格的区别分析
Jul 11 Javascript
JQuery拖拽元素改变大小尺寸实现代码
Dec 10 Javascript
如何在指定的地方插入html内容和文本内容
Dec 23 Javascript
javascript判断chrome浏览器的方法
Mar 26 Javascript
使用Node.js实现HTTP 206内容分片的教程
Jun 23 Javascript
同步文本框内容JS代码实现
Aug 04 Javascript
浅谈jquery高级方法描述与应用
Oct 04 Javascript
JS实现浏览器打印、打印预览示例
Feb 28 Javascript
基于vue2实现左滑删除功能
Nov 28 Javascript
了解JavaScript表单操作和表单域
May 27 Javascript
Vue+Vuex实现自动登录的知识点详解
Mar 04 Javascript
Mootools 1.2教程 同时进行多个形变动画
Sep 15 #Javascript
Mootools 1.2教程(21)——类(二)
Sep 15 #Javascript
Mootools 1.2教程 选项卡效果(Tabs)
Sep 15 #Javascript
Mootools 1.2教程 Tooltips
Sep 15 #Javascript
Mootools 1.2教程 类(一)
Sep 15 #Javascript
Mootools 1.2 手风琴(Accordion)教程
Sep 15 #Javascript
Mootools 1.2教程 排序类和方法简介
Sep 15 #Javascript
You might like
深入分析php之面向对象
2013/05/15 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
firefox浏览器下javascript 拖动层效果与原理分析代码
2007/12/04 Javascript
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
2012/04/12 Javascript
js模拟点击事件实现代码
2012/11/06 Javascript
nodejs批量修改文件编码格式
2015/01/22 NodeJs
js插件YprogressBar实现漂亮的进度条效果
2015/04/20 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
jQuery实现仿美橙互联两级导航菜单效果完整实例
2015/09/17 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
遍历json 对象的属性并且动态添加属性的实现
2016/12/02 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
2020/10/13 Javascript
解决pycharm双击但是无法打开的情况
2020/10/31 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
gearman的安装启动及python API使用实例
2014/07/08 Python
Python中MYSQLdb出现乱码的解决方法
2014/10/11 Python
Python实现删除文件中含“指定内容”的行示例
2017/06/09 Python
pandas获取groupby分组里最大值所在的行方法
2018/04/20 Python
python实现飞机大战微信小游戏
2020/03/21 Python
Python空间数据处理之GDAL读写遥感图像
2019/08/01 Python
python实现猜数游戏
2020/03/27 Python
关于人生的感言
2014/01/17 职场文书
本科毕业生求职自荐信
2014/02/03 职场文书
服务标兵事迹材料
2014/05/04 职场文书
青春演讲稿范文
2014/05/08 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
2015年化工厂工作总结
2015/05/04 职场文书
2016年党支部公开承诺书
2016/03/25 职场文书