dojo 九 effects dojo/_base/fx 和 dojo/fx
官方教程:Dojo Effects
这里讲学习一下dojo如何实现淡入、淡出、滑动等效果。
实现这些特殊的效果有两个包 dojo/_base/fx 和
dojo/fx。
dojo/_base/fx 中提供了一些基础的animation方法,如: animateProperty,
anim, fadeIn, and fadeOut.
dojo/fx
中提供了一些高级的animation方法,如:chain, combine,
wipeIn, wipeOut and
slideTo。
淡入淡出require(["dojo/_base/fx",
"dojo/on", "dojo/dom",
"dojo/domReady!"],
function(fx, on, dom) {
var fadeOutButton =
dom.byId("fadeOutButton"),//淡出按钮 fadeInButton =
dom.byId("fadeInButton"),//淡入按钮 fadeTarget =
dom.byId("fadeTarget");//目标节点 on(fadeOutButton,
"click",
function(evt){ fx.fadeOut({ node: fadeTarget
}).play();//淡出 }); on(fadeInButton,
"click",
function(evt){ fx.fadeIn({ node: fadeTarget
}).play();//淡入 }); });在所有的方法中包含后面介绍的,都只有一个对象参数,这个对象中可包含多个属性,必不可少的一个属性就是node,为要实现效果的节点对象或id字符串。
在fadeOut/fadeIn方法中还有一个属性duration,持续的时间,默认为350ms。这些animation方法将返回一animation对象,该对象包含一些方法:play,
pause, stop, status, and
gotoPercent,用来执行,暂停,停止,查看状态及执行到某种程度。
擦除require(["dojo/fx",
"dojo/on", "dojo/dom",
"dojo/domReady!"],
function(fx, on, dom) {
var wipeOutButton =
dom.byId("wipeOutButton"), wipeInButton =
dom.byId("wipeInButton"), wipeTarget =
dom.byId("wipeTarget"); on(wipeOutButton,
"click",
function(evt){ fx.wipeOut({ node: wipeTarget
}).play(); }); on(wipeInButton,
"click",
function(evt){ fx.wipeIn({ node: wipeTarget
}).play(); }); });
同淡入淡出一样
滑动
require(["dojo/fx",
"dojo/on", "dojo/dom",
"dojo/domReady!"],
function(fx, on, dom) {
var slideAwayButton =
dom.byId("slideAwayButton"), slideBackButton =
dom.byId("slideBackButton"), slideTarget =
dom.byId("slideTarget"); on(slideAwayButton,
"click",
function(evt){ fx.slideTo({ node: slideTarget, left:
"200", top: "200"}).play(); }); on(slideBackButton,
"click",
function(evt){ fx.slideTo({ node: slideTarget, left:
"0", top: "100"}).play(); }); });
在slideTo方法的参数中,除了节点对象属性外,还有left和top两个属性,用来设置滑动到目的位置的坐标。
事件
require(["dojo/fx",
"dojo/on", "dojo/dom-style",
"dojo/dom",
"dojo/domReady!"],
function(fx, on, style, dom) {
var slideAwayButton =
dom.byId("slideAwayButton"), slideBackButton =
dom.byId("slideBackButton"), slideTarget =
dom.byId("slideTarget"); on(slideAwayButton,
"click",
function(evt){ // Note that we're specifying the
beforeBegin as a property of the animation // rather than using connect. This
ensures that our beforeBegin handler // executes before any
others. var anim =
fx.slideTo({ node: slideTarget, left:
"200", top:
"200", beforeBegin:
function(){ console.warn("slide
target is: ", slideTarget); style.set(slideTarget,
{ left:
"0px", top:
"100px" }); } }); // We could have also specified onEnd
above alongside beforeBegin, // but it's just as easy to connect like
so on(anim,
"End", function(){ style.set(slideTarget,
{ backgroundColor:
"blue" }); },
true); // Don't forget to actually start the
animation! anim.play(); }); on(slideBackButton,
"click",
function(evt){ var anim =
fx.slideTo({ node: slideTarget, left:
"0", top:
"100", beforeBegin:
function(){ style.set(slideTarget,
{ left:
"200px", top:
"200px" }); } }); on(anim,
"End",
function(){ style.set(slideTarget,
{ backgroundColor:
"red" }); },
true); anim.play(); }); });在实现动态效果的过程中会产生两个事件,一个是beforeBegin,在执行之前调用;一个是onEnd,在执行完后调用。
在上面的例子中可以看到,beforeBegin是作为参数对象中的一个方法来定义的;onEnd是作为animation对象的一个事件在on中定义的。
连锁反应require(["dojo/_base/fx",
"dojo/fx", "dojo/on",
"dojo/dom",
"dojo/domReady!"],
function(baseFx, fx, on, dom) {
var slideAwayButton =
dom.byId("slideAwayButton"), slideBackButton =
dom.byId("slideBackButton"), slideTarget =
dom.byId("slideTarget"); // Set up a couple of click handlers to run our
chained animations on(slideAwayButton,
"click",
function(evt){ fx.chain([ baseFx.fadeIn({ node: slideTarget
}), fx.slideTo({ node: slideTarget, left:
"200", top: "200"}), baseFx.fadeOut({ node: slideTarget
}) ]).play(); }); on(slideBackButton,
"click",
function(evt){ fx.chain([ baseFx.fadeIn({ node: slideTarget
}), fx.slideTo({ node: slideTarget, left:
"0", top: "100"}), baseFx.fadeOut({ node: slideTarget
}) ]).play(); }); });
chain用来将多个animation动作连接起来按顺序执行,它的参数即是由不同animation方法返回的animation对象组成的数组,执行的顺序就是数组的先后顺序。
联合
require(["dojo/_base/fx",
"dojo/fx", "dojo/on",
"dojo/dom",
"dojo/domReady!"],
function(baseFx, fx, on, dom) {
var slideAwayButton =
dom.byId("slideAwayButton"), slideBackButton =
dom.byId("slideBackButton"), slideTarget =
dom.byId("slideTarget"); // Set up a couple of click handlers to run our
combined animations on(slideAwayButton,
"click",
function(evt){ fx.combine([ baseFx.fadeIn({ node: slideTarget
}), fx.slideTo({ node: slideTarget, left:
"200", top: "200"}) ]).play(); }); on(slideBackButton,
"click",
function(evt){ fx.combine([ fx.slideTo({ node: slideTarget, left:
"0", top: "100"}), baseFx.fadeOut({ node: slideTarget
}) ]).play(); }); });
combine方法是将多个animation动作联合起来同时执行实现一个完成的动态效果。其参数也是由不同animation方法返回的animation对象组成的数组。dojo 九 effects dojo/_base/fx 和 dojo/fx的更多相关文章
- 实践torch.fx第二篇-fx量化实操
好久不见各位,哈哈,又鸽了好久. 本文紧接上一篇<实践torch.fx第一篇--基于Pytorch的模型优化量化神器>继续说,主要讲如何利用FX进行模型量化. 为什么这篇文章拖了这么久,有 ...
- dojo对数组的处理函数,dojo.forEach、dojo.every、 dojo.some、 dojo.map等
转自:http://jiataodong.blog.163.com/blog/static/3490549220111024111943439/ 数组处理是 Ajax 应用开发中的常见操作.Dojo ...
- 为什么使用dojo?dojo与jquery有什么不同?dojo适合什么开发场景?
首先介绍一下dojo的特性: 1.Dojo是一个符合AMD规范的企业级框架(dojo是一个重量级框架) 2.Dojo全面支持异步加载JS机制(即:支持通过require异步加载JS模块,通过defin ...
- C#读写三菱Fx PLC 使用Fx 串口协议 读写Fx3U设备
本文将使用一个Github开源的组件库技术来读写三菱 FX PLC,使用的是基于串口的实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 github地 ...
- Dojo特效(翻译)
http://dojotoolkit.org/documentation/tutorials/1.10/effects/index.html In this tutorial, we will exp ...
- dojo框架笔记
一.模块定义 1.定义只含值对,没有任何依赖的模块(moudle1.js) define({ color: "black", size: "unisize" } ...
- Dojo动画原理解析
dojo中动画部分分为两部分:dojo/_base/fx, dojo/fx.dojo/_base/fx部分是dojo动画的基石,里面有两个底层API:animateProperty.anim和两个常用 ...
- Hello Dojo!(翻译)
http://dojotoolkit.org/documentation/tutorials/1.10/hello_dojo/index.html 欢迎学习DOJO!在本教程中,你将学些到如何加载DO ...
- Dojo API中文 Dojo内容模块概览,初学者
官网:http://dojotoolkit.org/reference-guide/1.10/dojo/index.html#dojo-dojo的翻译 dojo 内容: dojo dojo/dojo ...
随机推荐
- 我是IT小小鸟
我是IT小小鸟读后感 世界上没有一蹴而就的成功者,只有头悬梁锥刺股的奋斗者.蜉蝣向往大鹏的辉煌,却不曾知大鹏以往的汗水.蜉蝣之所以为蜉蝣,是因为它犹如井底之蛙,目光短浅,之盲目地羡慕成功者,而大鹏之所 ...
- Java 查询URL对应IP地址
/** * @ClassName TestSocket1 * @Version 1.0 * @Date 2014-9-26 上午10:19:36 */ public class TestSocket1 ...
- 剑指offer--13题
#include "stdafx.h" #include <iostream> using namespace std; void FirstNoRepeatCh(co ...
- linux 上传/下载文件到windows工具
一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地: 与ssh ...
- JQuery的ajax方法
1.使用方式: 由于是全局方法,所以调用简单:$.ajax(); 2.可输入参数: 最好是写成一个json形式,个人不建议用链式,那样看上去不太好. 参数名称 类型 描述 dataType strin ...
- HDU 2126 Buy the souvenirs (01背包,输出方案数)
题意:给出t组数据 每组数据给出n和m,n代表商品个数,m代表你所拥有的钱,然后给出n个商品的价值 问你所能买到的最大件数,和对应的方案数.思路: 如果将物品的价格看做容量,将它的件数1看做价值的话, ...
- 思考 ”前端开发人员都在关注的 GitHub 资源“
点这里 原文: 资源 免费的计算机编程类中文书籍 免费编程书籍 计算机科学论文 codeparkshare Python初学者书籍.视频.资料.社区推荐 Python资料汇总 app应用推荐 码农周刊 ...
- solr的collection,shard,replica,core概念
一.collection 1.由多个cores组成一个逻辑索引叫做一个collection.一个collection本质上是一个可以跨越多个核的索引,同时包含冗余索引. 2.collection由不同 ...
- POJ 1947 Rebuilding Roads(树形DP)
题目链接 题意 : 给你一棵树,问你至少断掉几条边能够得到有p个点的子树. 思路 : dp[i][j]代表的是以i为根的子树有j个节点.dp[u][i] = dp[u][j]+dp[son][i-j] ...
- Android 中建立一个OpenGL ES的开发环境
转自: http://wiki.eoe.cn/page/Building_an_OpenGL_ES_Environment.html 负责人:zhangql原文链接:http://docs.eoean ...