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动态添加事件
Nov 01 Javascript
深入理解Javascript作用域与变量提升
Dec 09 Javascript
JS脚本defer的作用示例介绍
Jan 02 Javascript
js 日期比较相关天数代码
Apr 02 Javascript
jQuery中offset()方法用法实例
Jan 16 Javascript
jQuery实现跨域iframe接口方法调用
Mar 14 Javascript
javascript实现信息增删改查的方法
Jul 25 Javascript
用js编写的简单的计算器代码程序
Aug 04 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
Jan 27 Javascript
JavaScript中的this引用(推荐)
Aug 05 Javascript
JS制作类似选项卡切换的年历
Dec 03 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
Apr 26 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/06/06 PHP
smarty缓存用法分析
2014/12/16 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
如何直接访问php实例对象中的private属性详解
2017/10/12 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
JavaScript中如何通过arguments对象实现对象的重载
2014/05/12 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
jQuery知识点整理
2015/01/30 Javascript
Js+php实现异步拖拽上传文件
2015/06/23 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
详解wepy开发小程序踩过的坑(小结)
2019/05/22 Javascript
vue实现侧边栏导航效果
2019/10/21 Javascript
Vue 自适应高度表格的实现方法
2020/05/13 Javascript
详解js中的原型,原型对象,原型链
2020/07/16 Javascript
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
微信小程序实现滚动Tab选项卡
2020/11/16 Javascript
python实现每次处理一个字符的三种方法
2014/10/09 Python
flask中的wtforms使用方法
2018/07/21 Python
基于Html5实现的react拖拽排序组件示例
2018/08/13 HTML / CSS
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
村长贪污检举信
2014/04/04 职场文书
企业形象策划方案
2014/05/29 职场文书
机械机修工岗位职责
2014/08/03 职场文书
团委工作总结2015
2015/04/02 职场文书
2015年中秋晚会主持稿
2015/07/30 职场文书
Python中OpenCV实现查找轮廓的实例
2021/06/08 Python
JS数组方法some、every和find的使用详情
2021/10/05 Javascript
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android