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 相关文章推荐
js左侧多级菜单动态的解决方案
Feb 01 Javascript
前端开发过程中浏览器版本的两种判定方法
Oct 30 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
May 25 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
Jun 14 Javascript
使用Promise链式调用解决多个异步回调的问题
Jan 15 Javascript
详解Angular2组件之间如何通信
Jun 22 Javascript
vue如何集成raphael.js中国地图的方法示例
Aug 15 Javascript
基于VuePress 轻量级静态网站生成器的实现方法
Apr 17 Javascript
angularJs中跳转到指定的锚点实例($anchorScroll)
Aug 31 Javascript
微信小程序实现列表页的点赞和取消点赞功能
Nov 02 Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
Feb 15 Javascript
Vue实现简单购物车功能
Dec 13 Vue.js
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执行速度全攻略
2006/10/09 PHP
浅析SVN常见问题及解决方法
2013/06/21 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
关于php开启错误提示的总结
2019/09/24 PHP
精通JavaScript 纠正 cleanWhitespace函数
2010/03/11 Javascript
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
javascript避免数字计算精度误差的方法详解
2014/03/05 Javascript
JS+CSS实现的经典tab选项卡效果代码
2015/09/16 Javascript
javascript闭包(Closure)用法实例简析
2015/11/30 Javascript
浅析JavaScript中break、continue和return的区别
2016/11/30 Javascript
js实现无缝滚动图
2017/02/22 Javascript
解决angularjs中同步执行http请求的方法
2018/08/13 Javascript
深入koa-bodyparser原理解析
2019/01/16 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
OpenLayers3实现图层控件功能
2020/09/25 Javascript
python网络编程之数据传输UDP实例分析
2015/05/20 Python
Python 如何访问外围作用域中的变量
2016/09/11 Python
Python调用服务接口的实例
2019/01/03 Python
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
python新式类和经典类的区别实例分析
2020/03/23 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
Python unittest如何生成HTMLTestRunner模块
2020/09/08 Python
Python 使用Opencv实现目标检测与识别的示例代码
2020/09/08 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
HTML5 Canvas入门学习教程
2016/03/17 HTML / CSS
iHerb台湾:维生素、保健品和健康产品
2018/01/31 全球购物
机电一体化专业应届生求职信
2013/11/27 职场文书
教师应聘自荐信范文
2014/03/14 职场文书
2014年电信员工工作总结
2014/12/19 职场文书
Python数据处理的三个实用技巧分享
2022/04/01 Python
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis