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對象組成的數組。

轉載于:https://www.cnblogs.com/tiandi/p/3415909.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448021.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448021.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448021.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

電子路考容易犯錯的五大細節

正在學車的你,知道在電子路考中哪些是考生常犯的錯誤嗎?下面,小編為大家帶來學車考生參加科目三考試特別容易犯錯的地方,尤其是不按規定使用轉向燈和在超車時不能根據道路交通情況合理選擇行車道或速度這兩項犯錯的人最多。 ●起步…

Linux 查看 MySQL 版本的四種方法

1 在終端下執行 mysql -V 2 在help中查找 mysql --help |grep Distrib 3 在mysql 里查看 select version() 4 在mysql 里查看 status 轉自:https://blog.csdn.net/chengyuc/article/details/77094775

html 基本布局介紹

1、div默認是縱向排列的&#xff0c;例子如下&#xff1a; <div id"wrap"><div id"div1">div1</div><div id"div2">div2</div><div id"div3">div3</div> </div> 2、如果要div橫向排列…

考駕照重點科目的關鍵考試技巧

定點停車停不好關鍵在于方向盤打得太晚&#xff0c;而且剎車沒有控制好&#xff01;剎車和方向應該同步進行&#xff0c;方向盤不要打得太多。上坡停車或者3檔以下停車可以先踩離合器&#xff0c;4-5檔停車必須先剎車減速以后再踩離合器。 上坡定點停車步驟&#xff1a;聽到指令…

第一階段小結

python簡介 定義&#xff1a;是一個免費&#xff0c;開源&#xff0c;跨品臺&#xff0c;動態&#xff0c;面向對象的編程語言 程序執行方式&#xff1a; 交互式&#xff1a;在命令行輸入指令&#xff0c;回車即可得到結果文件式&#xff1a;將指令編寫到py文件中&#xff0c;可…

@JsonSerialize 使用:注解方式 實現條件判斷屬性值、條件修改屬性值

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 數據庫中是 1、0 記錄性別。 預期效果為&#xff1a;當查到屬性值為 1 時&#xff0c;就給序列化后的 json 中性別字段賦值為 “男”…

科目二、科目三易掛項目整理和網友支招

雖然已順利的拿到小黑本本&#xff0c;成了殺手&#xff0c;但回想起學車的種種經歷&#xff0c;不免感慨萬千&#xff01;感謝各位網友提供的種種信息&#xff0c;我才能很有信心的順利通過考試。因此&#xff0c;想把一些失敗的經歷匯總起來為后來者提個醒&#xff0c;做到心…

我該如何介紹我自己

今天和銷售總監一起去見客戶&#xff0c;早上8&#xff1a;47分的高鐵到蘇州。6&#xff1a;30起床&#xff0c;7點趕地鐵……上了高鐵&#xff0c;和銷售總監閑聊幾句&#xff0c;看了一點雜志耳邊就聽到列車廣播傳出優美的妹子聲“蘇州園區到了……”。25分鐘就到了蘇州&…

@JsonSerialize 與 @JsonDeserialize 使用

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1、以注解方式使用&#xff1a; JsonDeserialize(using DateJsonDeserializer.class) JsonSerialize(using DateJsonSerializer.class)…

【Android開發】NDK開發(1)-Hello World!

上半年&#xff0c;公司的一個項目&#xff0c;本身我是不喜歡Android開發的&#xff0c;但是學習到的東西總需要整理一下。 從iOS轉到Android&#xff0c;真心有些不習慣。就IDE來說&#xff0c;eclipse比Xcode差的不是一點半點。Android模擬器竟然還要開機&#xff01;我勒個…

每天30分鐘:成功有效的學習方法

《每天堅持30分鐘》&#xff0c;是一本講述學習方法、提高學習效率的暢銷書&#xff0c;作者&#xff1a;古市幸雄&#xff0c;日本銷量50萬余冊&#xff0c;專為沒有學習習慣的人而寫。 《每天堅持30分鐘》摘錄 第一章 只有學習才能成功 1、有“學習意識”時&#xff0c;學習欲…

修改 input 框里的字體、顏色

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 /* WebKit browsers */ input::-webkit-input-placeholder {color: #C0C0C0;font-size: 14px; } /* Mozilla Firefox 4 to 18 */ input…

Easyjs 細說Javascript里的 閉包(Closure)

要成為高級 JavaScript 程序員&#xff0c;就必須理解閉包。閉包有時你非用她不可&#xff0c; 所有理解閉包還是必要的。筆者通過例子來說一下“閉包” 1.定義一個函數的代理&#xff1a; functiondelegate (fn, scope, args, append) { returnfunction/*匿名函數1*/(…

學習方法書籍 很好推薦

學習方法書籍&#xff1a;一《超級學習法》&#xff1a; 這是一種優秀的學習法。美國紐約華爾街10號的“超級記憶法有限公司”和保加利亞的羅扎諾夫學院都在推廣這一種學習方法。日本長野吉田高中應用該方法使學生平均成績提高20分&#xff0c;日本東海大學的關英男教授用這種方…

js 取兩位小數

var totalPrice (product.unitPrice * product.nums).toFixed(2);轉載于:https://www.cnblogs.com/yqlwl66/p/4155606.html

jQuery 實現表格與 ckeckbox 的全選、單選功能

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 功能點 1. 用戶點擊頭的checkbox時&#xff0c;所有表格數據行的checkbox全選或反選。 當數據行某一行沒有選中時&#xff0c;頭check…

jquery checkbox 選中、改變狀態、change 和 click 事件

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 jquery判斷checked的三種方法: ??????? .attr(checked); //看版本1.6返回:”checked”或”undefined” ;1.5-返回:true或false …

中醫教你5個補腎護發食療方

一個人的頭發有10萬到15萬根&#xff0c;每根頭發都有個毛囊&#xff0c;從毛囊里又生成毛球&#xff0c;長出頭發。頭發從長出到脫落&#xff0c;要經過3個周期&#xff0c;即成長期(約2&#xff5e;7年)、退縮期(約1個月)和休止期(約4個月)。 頭發的生長速度和密度隨年齡而變…

VUE:checkbox 單選框(單選、多選)、一選全選 / 全選一選、表格單選列實現

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 效果&#xff1a;如紅框中部分。 一選全選&#xff1a;表頭上的單選框選中則下面每行都選中。 全選一選&#xff1a;表中數據每行都…

我愛學習第一天(委托)

---恢復內容開始--- 1.delegate 一般用法 delegate void WriteValue(string vale);//申明一個委托,參數是string類型,無返回值static void Main(string[] args){WriteValue write new WriteValue(WriteLine);//實例化委托write("喝水");//調用Console.ReadKey();}pu…