Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件

我们将学习如何使用Fx.Morph(它从本质上可以让你同时渐变多个样式表属性),然后我们再检查一下应用到Fx.Tween和Fx.Morph的一些Fx选项,最后我们将看看如何使用Fx事件,譬如“onComplete”和“onStart”。通过这些选项和事件,我们可以获得更好的控制权来控制形变动画。
Fx.Morph
创建一个新的Fx.Morph
初始化一个新的形变和创建一个新的渐变很类似,除了你要指定多个样式属性以外。
参考代码:


代码如下:

// 首先,把我们的元素赋值给一个变量
var morphElement = $('morph_element');
// 现在,我们创建一个新的形变
var morphObject = new Fx.Morph(morphElement);
// 现在我们可以设置样式属性,就像Fx.Tween一样
// 不过我们这里可以设置多个样式属性
morphObject.set({
'width': 100,
'height': 100,
'background-color': '#eeeeee'
});
// 我们也可以像启动一个渐变一样来启动我们的形变
// 不过我们这里要同时放置多个属性值
morphObject.start({
'width': 300,
'height': 300,
'background-color': '#d3715c'
});

上面这些就是全部的内容了,包括创建、设置和启动一个形变。
为了让这个更合理一些,我们应该创建我们的变量,把我们的函数独立出来,并创建一些事件来控制这这个事情:
参考代码:


代码如下:

var morphSet = function(){
// 这里我们可以像Fx.Tween一样设置样式属性
// 不过在这里我们可以同时设置多个样式属性
this.set({
'width': 100,
'height': 100,
'background-color': '#eeeeee'
});
}
var morphStart = function(){
// 我们也可以像启动一个渐变一样启动一个形变
// 不过现在我们可以同时设置多个样式属性
this.start({
'width': 300,
'height': 300,
'background-color': '#d3715c'
});
}
var morphReset = function(){
// 设置为最开始的值
this.set({
'width': 0,
'height': 0,
'background-color': '#ffffff'
});
}
window.addEvent('domready', function() {
// 首先,把我们的元素赋值给一个变量
var morphElement = $('morph_element');
// 现在,我们创建我们的形变
var morphObject = new Fx.Morph(morphElement);
// 在这里我们给按钮添加点击事件
// 并且绑定morphObject和这个函数
// 从而可以在上面的函数中使用"this"
$('morph_set').addEvent('click', morphSet.bind(morphObject));
$('morph_start').addEvent('click', morphStart.bind(morphObject));
$('morph_reset').addEvent('click', morphReset.bind(morphObject));
});

参考代码:


代码如下:

<div id="morph_element"></div>
<button id="morph_set">Set</button>
<button id="morph_start">Start</button>
<button id="morph_reset">reset</button>

SetStartreset
Fx选项(Options)
下面的选项都可以被Fx.Tween和Fx.Morph接受。它们都非常容易实现,而且可以给你非常多的控制权来控制你的效果。要使用这些选项,请使用下面的语法:
参考代码:


代码如下:

// 建立你的渐变或者形变
// 然后在大括号{ }之间设置你的选项
var morphObject = new Fx.Morph(morphElement, {
// 首先是选项的名字
// 然后后面跟一个冒号(:)
// 然后定义你的选项
duration: 'long',
transition: 'sine:in'
});

fps(每秒帧数,frames per second)
这个选项决定了这个动画每秒的帧数。默认值是50,可以接受数字和值为数字的变量。
参考代码:


代码如下:

// 建立你的渐变或者形变
// 然后在大括号{ }之间设置你的选项
var morphObject = new Fx.Morph(morphElement, {
fps: 60
});
// 或者这样
var framesPerSecond = 60;
var tweenObject = new Fx.Tween(tweenElement, {
fps: framesPerSecond
});

unit(单位)
这个选项设置了数字的单位。例如,你的100是指100个像素(px)、百分比还是em?
参考代码:


代码如下:

// 建立你的渐变或者形变
// 然后在大括号{ }之间设置你的选项
var morphObject = new Fx.Morph(morphElement, {
unit: '%'
});

link(连接)
link选项提供了一种方式可以让你管理多个启动效果的函数调用。例如,如果你有一个鼠标移上去(mouseover)的效果,你是希望每次用户移上去都启动这个效果吗?或者是,如果一个人把鼠标移上去两次,它应该忽略第二个响应还是应该把它们串连起来,然后等第一次调用完成以后再第二次调用这个效果?link又三个设置:
“ignore”(默认)——在一个效果没有完成之前忽略任何启动新效果的调用
“cancel”——如果有另外一个效果调用,则放弃当前的效果,转而处理新的效果调用
“chain”——链可以让你把效果像“链条”一样把效果连接起来,把这些调用进行堆栈,然后逐一调用这些效果,直到完成
参考代码:


代码如下:

// 建立你的渐变或者形变
// 然后在大括号{ }之间设置你的选项
var morphObject = new Fx.Morph(morphElement, {
link: 'chain'
});

duration(持续时间)
duration可以让你定义这个动画的持续时间。持续事件和速度是不一样的,因此如果你想让一个对象在一秒内移动100个像素,那么它将比一个每秒移动1000个像素的对象要慢。你可以输入一个数字(以毫秒为单位)、一个值为数字的变量或者三个快捷方式:
“short”=250ms
“normal”=500ms(默认)
“long”=1000ms
参考代码:


代码如下:

// 建立你的渐变或者形变
// 然后在大括号{ }之间设置你的选项
var morphObject = new Fx.Morph(morphElement, {
duration: 'long'
});
// 或者这样
var morphObject = new Fx.Morph(morphElement, {
duration: 1000
});

transition(过渡效果)
最后一个选项:transition,可以让你决定过渡类型。例如,它是不是一个平滑的过渡或者它应该先慢慢开始然后加速直到结束。看看这些在MooTools的核心库里可以用的过渡效果:
参考代码:


代码如下:

var tweenObject = new Fx.Tween(tweenElement, {
transition: 'quad:in'
});

注意:第一个过渡条在开始时触发了一个红色的醒目效果,在结束时触发了一个橙色的醒目效果。看看下面是怎么使用Fx的事件的。
这上面30个过渡类型可以分成十组:
Quad
Cubic
Quart
Quint
Expo
Circ
Sine
Back
Bounce
Elastic
每一个组都有三个选项:
Ease In
Ease Out
Ease In Out
Fx的事件
Fx的事件使得你在动画效果的执行过程中,在不同的点执行一些代码。在创建用户反馈信息时这会很有用,这也给了你另一层控制权来控制你的渐变和形变:
onStart——当Fx开始时触发
onCancel——当Fx取消时触发
onComplete——当Fx完成时触发
onChainComplete——当Fx链完成时触发
当你建立一个渐变或者形变时,你可以设置这其中的一个事件,就像你设置一个或多个选项一样,不过不是设置一个值,而是设置一个函数:
参考代码:


代码如下:

// 首先我们把一个新的Fx.Tween赋值给一个变量
// 然后定义我们要渐变的元素
quadIn = new Fx.Tween(quadIn, {
// 这里是一些选项
link: 'cancel',
transition: ‘quad:in',
// 这里是一些事件
onStart: function(passes_tween_element){
// 这些事件都会传递渐变的对象
// 因此当动画开始时
// 这里我们调用一个"highlight"效果
passes_tween_element.highlight('#C54641');
},
// 注意这个逗号是怎样始终出现在每个事件和选项之间的
// 但是最后一个事件或者选项后面没有
onComplete: function(passes_tween_element){
// 在结束时,我们再应用一个highlight效果
passes_tween_element.highlight('#C54641');
}
});

示例
为了生成上面的变形代码,我们可以用一种我们在这个系列的教程中还没有见过的方式来重用我们的函数。这上面所有的变形元素都使用了两个函数,一个当鼠标进入时渐变淡出,另外一个在当鼠标离开时渐变返回:
参考代码:


代码如下:

// 这是我们在鼠标进入时调用的函数
// 宽度渐变到700px
var enterFunction = function() {
this.start('width', '700px');
}
// 这是我们在鼠标离开时调用的函数
// 宽度渐变回300px
var leaveFunction = function() {
this.start('width', '300px');
}
window.addEvent('domready', function() {
// 这里我们把一些元素赋值给变量
var quadIn = $('quadin');
var quadOut = $('quadout');
var quadInOut = $('quadinout');
// 然后我们创建三个渐变元素
// 分别对应上面的三个变量
quadIn = new Fx.Tween(quadIn, {
link: 'cancel',
transition: Fx.Transitions.Quad.easeIn,
onStart: function(passes_tween_element){
passes_tween_element.highlight('#C54641');
},
onComplete: function(passes_tween_element){
passes_tween_element.highlight('#E67F0E');
}
});
quadOut = new Fx.Tween(quadOut, {
link: 'cancel',
transition: 'quad:out'
});
quadInOut = new Fx.Tween(quadInOut, {
link: 'cancel',
transition: 'quad:in:out'
});
// 现在我们添加鼠标进入和鼠标离开事件
// 注意.addEvents的使用
// 则和.addEvent的使用类似
// 不过你可以通过下面的模式添加多个事件
$('quadin').addEvents({
// 首先,你要说明是什么事件,并把事件用单引号引起来
// 然后后面跟一个冒号(:)
// 最后放置你的函数
// 在这个例子中,函数banding到这个渐变对象
'mouseenter': enterFunction.bind(quadIn),
'mouseleave': leaveFunction.bind(quadIn)
});
$('quadout').addEvents({
// 注意我们这里是怎样重复使用这个函数的
'mouseenter': enterFunction.bind(quadOut),
'mouseleave': leaveFunction.bind(quadOut)
});
$('quadinout').addEvents({
// 我们这里也使用了那些同样的函数
// 不过每次我们都应用一个事件到不同的元素
// 并且绑定不同的渐变
'mouseenter': enterFunction.bind(quadInOut),
'mouseleave': leaveFunction.bind(quadInOut)
});

更多学习……

你可以通过Fx库里面的工具来获得对效果更细致的控制权。请一定要阅读一下文档中的Fx这一节,还有tweenmorphtransitions

下载一个包含你开始所需要的东西的zip包

包括这个页面上的实例,MooTools 1.2核心库,一个外部的JavaScript文件,一个外部的CSS文件或者一个简单的html文件。

(0)

相关推荐

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

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

  • Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件

    我们将学习如何使用Fx.Morph(它从本质上可以让你同时渐变多个样式表属性),然后我们再检查一下应用到Fx.Tween和Fx.Morph的一些Fx选项,最后我们将看看如何使用Fx事件,譬如"onComplete"和"onStart".通过这些选项和事件,我们可以获得更好的控制权来控制形变动画. Fx.Morph 创建一个新的Fx.Morph 初始化一个新的形变和创建一个新的渐变很类似,除了你要指定多个样式属性以外. 参考代码: 复制代码 代码如下: // 首先,把

  • Mootools 1.2教程 滑动效果(Slide)

    基本用法 就像我们前面看过的所有类一样,我们在把这个类应用到一个元素上面时,我们要做的第一件事就是初始化一个新的Fx.Slide实例. 首先,让我们为滑动元素建立一个HTML文件. 参考代码: 复制代码 代码如下: <div id="slide_element" class="slide">这里是要滑动显示的内容.</div> 我们的CSS也不需要任何修饰. 参考代码: 复制代码 代码如下: .slide { margin: 20px 0;

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

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

  • Mootools 1.2教程 事件处理

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

  • Mootools 1.2教程 函数

    今天开始MooTools系列教程的第4讲.如果你还没有看过上一讲,请先查看上一篇教程<Mootools 1.2教程(3)--数组使用简介>.今天我们先不讲MooTools,而是讲一讲JavaScript中的函数(function)的基本知识. 但是,为了符合MooTools这个主题,你需要知道在哪里该使用MooTools的函数.此前,我们已经在我们的所有示例代码中,把代码都放在domready方法中.当我们需要把它放在domready的外面时,我们使用了函数(function).在你在domr

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

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

  • Mootools 1.2教程 Fx.Tween的使用

    和我们看到的其他的MooTools函数一样,这些方法使用起来都非常简单,但是功能都很强大.Tween可以让你添加那些极"炫"的效果--可以很平滑地发生形变动画,从而改善你的用户体验. Tween的快捷方法 我们通常都从"基本知识"入手,不过MooTools 1.2只为渐变(tween)提供了这样极其出色的快捷方法,它们使用起来都极其简单以至于我忍不住要从这里开始. .tween(); 一个渐变(tween)是一个在两个样式属性值之间的平滑的变化.举个例子,通过渐变(

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

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

  • Mootools 1.2教程 类(一)

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

随机推荐