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 相关文章推荐
一个可以兼容IE FF的加为首页与加入收藏实现代码
Nov 02 Javascript
最短的IE判断var ie=!-[1,]分析
May 28 Javascript
jquery.idTabs 选项卡使用示例代码
Sep 03 Javascript
Javascript之Number对象介绍
Jun 07 Javascript
angular.js+node.js实现下载图片处理详解
Mar 31 Javascript
详解webpack2+React 实例demo
Sep 11 Javascript
Angular ElementRef简介及其使用
Oct 01 Javascript
JavaScript类型相关的常用操作总结
Feb 14 Javascript
node Buffer缓存区常见操作示例
May 04 Javascript
vue+iview分页组件的封装
Nov 17 Vue.js
JavaScript实现简单计时器
Jun 22 Javascript
四十九个javascript小知识实用技巧
Nov 20 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中使用Oracle数据库(2)
2006/10/09 PHP
php miniBB中文乱码问题解决方法
2008/11/25 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
php微信分享到朋友圈、QQ、朋友、微博
2019/02/18 PHP
jQuery Clone Bug解决代码
2010/12/22 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
2013/04/02 Javascript
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
jQuery简单实现隐藏以及显示特效
2015/02/26 Javascript
node.js require() 源码解读
2015/12/13 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
python实现三维拟合的方法
2018/12/29 Python
python 对多个csv文件分别进行处理的方法
2019/01/07 Python
python实现五子棋小游戏
2020/03/25 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
Python pandas实现excel工作表合并功能详解
2019/08/29 Python
python科学计算之narray对象用法
2019/11/25 Python
Python调用.NET库的方法步骤
2019/12/27 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
pycharm快捷键汇总
2020/02/14 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
python实现数字炸弹游戏程序
2020/07/17 Python
教育局长自荐信范文
2013/12/22 职场文书
何时使用Map来代替普通的JS对象
2021/04/29 Javascript
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android
MySQL如何解决幻读问题
2021/08/07 MySQL
详解Python中*args和**kwargs的使用
2022/04/07 Python