国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

MooTools教程(11):Fx.Morph、Fx選項(xiàng)和Fx事件

2024-07-21 02:04:24
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

今天,我們繼續(xù)探索一下這個(gè)庫(kù)的fx部分,我們將學(xué)習(xí)如何使用fx.morph(它從本質(zhì)上可以讓你同時(shí)漸變多個(gè)樣式表屬性),然后我們?cè)贆z查一下應(yīng)用到fx.tween和fx.morph的一些fx選項(xiàng),最后我們將看看如何使用fx事件,譬如“oncomplete”和“onstart”。通過(guò)這些選項(xiàng)和事件,我們可以獲得更好的控制權(quán)來(lái)控制形變動(dòng)畫。

fx.morph

創(chuàng)建一個(gè)新的fx.morph

初始化一個(gè)新的形變和創(chuàng)建一個(gè)新的漸變很類似,除了你要指定多個(gè)樣式屬性以外。

參考代碼: [復(fù)制代碼] [保存代碼]
  1. // 首先,把我們的元素賦值給一個(gè)變量
  2. var morphelement = $('morph_element');
  3.  
  4. // 現(xiàn)在,我們創(chuàng)建一個(gè)新的形變
  5. var morphobject = new fx.morph(morphelement);
  6.  
  7. // 現(xiàn)在我們可以設(shè)置樣式屬性,就像fx.tween一樣
  8. // 不過(guò)我們這里可以設(shè)置多個(gè)樣式屬性
  9. morphobject.set({
  10.     'width'100,
  11.     'height'100,
  12.     'background-color''#eeeeee'
  13. });
  14.  
  15. // 我們也可以像啟動(dòng)一個(gè)漸變一樣來(lái)啟動(dòng)我們的形變
  16. // 不過(guò)我們這里要同時(shí)放置多個(gè)屬性值
  17. morphobject.start({
  18.     'width'300,
  19.     'height'300,
  20.     'background-color''#d3715c'
  21. });

上面這些就是全部的內(nèi)容了,包括創(chuàng)建、設(shè)置和啟動(dòng)一個(gè)形變。

為了讓這個(gè)更合理一些,我們應(yīng)該創(chuàng)建我們的變量,把我們的函數(shù)獨(dú)立出來(lái),并創(chuàng)建一些事件來(lái)控制這這個(gè)事情:

參考代碼: [復(fù)制代碼] [保存代碼]
  1. var morphset = function(){
  2.     // 這里我們可以像fx.tween一樣設(shè)置樣式屬性
  3.     // 不過(guò)在這里我們可以同時(shí)設(shè)置多個(gè)樣式屬性
  4.     this.set({
  5.         'width'100,
  6.         'height'100,
  7.         'background-color''#eeeeee'
  8.     });
  9. }
  10.  
  11. var morphstart = function(){
  12.     // 我們也可以像啟動(dòng)一個(gè)漸變一樣啟動(dòng)一個(gè)形變
  13.     // 不過(guò)現(xiàn)在我們可以同時(shí)設(shè)置多個(gè)樣式屬性
  14.     this.start({
  15.         'width'300,
  16.         'height'300,
  17.         'background-color''#d3715c'
  18.     });
  19. }
  20.  
  21.  
  22. var morphreset = function(){
  23.     // 設(shè)置為最開(kāi)始的值
  24.     this.set({
  25.         'width'0,
  26.         'height'0,
  27.         'background-color''#ffffff'
  28.     });
  29. }
  30.  
  31. window.addevent('domready'function() {
  32.     // 首先,把我們的元素賦值給一個(gè)變量
  33.     var morphelement = $('morph_element');
  34.  
  35.     // 現(xiàn)在,我們創(chuàng)建我們的形變
  36.     var morphobject = new fx.morph(morphelement);
  37.  
  38.     // 在這里我們給按鈕添加點(diǎn)擊事件
  39.     // 并且綁定morphobject和這個(gè)函數(shù)
  40.     // 從而可以在上面的函數(shù)中使用"this"
  41.     $('morph_set').addevent('click', morphset.bind(morphobject));  
  42.     $('morph_start').addevent('click', morphstart.bind(morphobject));
  43.     $('morph_reset').addevent('click', morphreset.bind(morphobject));
  44. });
參考代碼: [復(fù)制代碼] [保存代碼]
  1. <div id="morph_element"></div>
  2. <button id="morph_set">set</button>
  3. <button id="morph_start">start</button>
  4. <button id="morph_reset">reset</button>

 

 

fx選項(xiàng)(options)

下面的選項(xiàng)都可以被fx.tween和fx.morph接受。它們都非常容易實(shí)現(xiàn),而且可以給你非常多的控制權(quán)來(lái)控制你的效果。要使用這些選項(xiàng),請(qǐng)使用下面的語(yǔ)法:

參考代碼: [復(fù)制代碼] [保存代碼]
  1. // 建立你的漸變或者形變
  2. // 然后在大括號(hào){ }之間設(shè)置你的選項(xiàng)
  3. var morphobject = new fx.morph(morphelement, {
  4.     // 首先是選項(xiàng)的名字
  5.     // 然后后面跟一個(gè)冒號(hào)(:)
  6.     // 然后定義你的選項(xiàng)
  7.     duration: 'long',
  8.     transition: 'sine:in'
  9. });

fps(每秒幀數(shù),frames per second)

這個(gè)選項(xiàng)決定了這個(gè)動(dòng)畫每秒的幀數(shù)。默認(rèn)值是50,可以接受數(shù)字和值為數(shù)字的變量。

參考代碼: [復(fù)制代碼] [保存代碼]
  1. // 建立你的漸變或者形變
  2. // 然后在大括號(hào){ }之間設(shè)置你的選項(xiàng)
  3. var morphobject = new fx.morph(morphelement, {
  4.     fps: 60
  5. });
  6.  
  7. // 或者這樣
  8. var framespersecond = 60;
  9.  
  10. var tweenobject = new fx.tween(tweenelement, {
  11.     fps: framespersecond
  12. });

unit(單位)

這個(gè)選項(xiàng)設(shè)置了數(shù)字的單位。例如,你的100是指100個(gè)像素(px)、百分比還是em?

參考代碼: [復(fù)制代碼] [保存代碼]
  1. // 建立你的漸變或者形變
  2. // 然后在大括號(hào){ }之間設(shè)置你的選項(xiàng)
  3. var morphobject = new fx.morph(morphelement, {
  4.     unit: '%'
  5. });

link(連接)

link選項(xiàng)提供了一種方式可以讓你管理多個(gè)啟動(dòng)效果的函數(shù)調(diào)用。例如,如果你有一個(gè)鼠標(biāo)移上去(mouseover)的效果,你是希望每次用戶移上去都啟動(dòng)這個(gè)效果嗎?或者是,如果一個(gè)人把鼠標(biāo)移上去兩次,它應(yīng)該忽略第二個(gè)響應(yīng)還是應(yīng)該把它們串連起來(lái),然后等第一次調(diào)用完成以后再第二次調(diào)用這個(gè)效果?link又三個(gè)設(shè)置:

  • “ignore”(默認(rèn))——在一個(gè)效果沒(méi)有完成之前忽略任何啟動(dòng)新效果的調(diào)用
  • “cancel”——如果有另外一個(gè)效果調(diào)用,則放棄當(dāng)前的效果,轉(zhuǎn)而處理新的效果調(diào)用
  • “chain”——鏈可以讓你把效果像“鏈條”一樣把效果連接起來(lái),把這些調(diào)用進(jìn)行堆棧,然后逐一調(diào)用這些效果,直到完成
參考代碼: [復(fù)制代碼] [保存代碼]
  1. // 建立你的漸變或者形變
  2. // 然后在大括號(hào){ }之間設(shè)置你的選項(xiàng)
  3. var morphobject = new fx.morph(morphelement, {
  4.     link: 'chain'
  5. });

duration(持續(xù)時(shí)間)

duration可以讓你定義這個(gè)動(dòng)畫的持續(xù)時(shí)間。持續(xù)事件和速度是不一樣的,因此如果你想讓一個(gè)對(duì)象在一秒內(nèi)移動(dòng)100個(gè)像素,那么它將比一個(gè)每秒移動(dòng)1000個(gè)像素的對(duì)象要慢。你可以輸入一個(gè)數(shù)字(以毫秒為單位)、一個(gè)值為數(shù)字的變量或者三個(gè)快捷方式:

  • “short”=250ms
  • “normal”=500ms(默認(rèn))
  • “long”=1000ms
參考代碼: [復(fù)制代碼] [保存代碼]
  1. // 建立你的漸變或者形變
  2. // 然后在大括號(hào){ }之間設(shè)置你的選項(xiàng)
  3. var morphobject = new fx.morph(morphelement, {
  4.     duration: 'long'
  5. });
  6.  
  7. // 或者這樣
  8. var morphobject = new fx.morph(morphelement, {
  9.     duration: 1000
  10. });

transition(過(guò)渡效果)

最后一個(gè)選項(xiàng):transition,可以讓你決定過(guò)渡類型。例如,它是不是一個(gè)平滑的過(guò)渡或者它應(yīng)該先慢慢開(kāi)始然后加速直到結(jié)束。看看這些在mootools的核心庫(kù)里可以用的過(guò)渡效果:

參考代碼: [復(fù)制代碼] [保存代碼]
  1. var tweenobject = new fx.tween(tweenelement, {
  2.     transition: 'quad:in'
  3. });

注意:第一個(gè)過(guò)渡條在開(kāi)始時(shí)觸發(fā)了一個(gè)紅色的醒目效果,在結(jié)束時(shí)觸發(fā)了一個(gè)橙色的醒目效果。看看下面是怎么使用fx的事件的。


這上面30個(gè)過(guò)渡類型可以分成十組:

  • quad
  • cubic
  • quart
  • quint
  • expo
  • circ
  • sine
  • back
  • bounce
  • elastic

每一個(gè)組都有三個(gè)選項(xiàng):

  • ease in
  • ease out
  • ease in out

fx的事件

fx的事件使得你在動(dòng)畫效果的執(zhí)行過(guò)程中,在不同的點(diǎn)執(zhí)行一些代碼。在創(chuàng)建用戶反饋信息時(shí)這會(huì)很有用,這也給了你另一層控制權(quán)來(lái)控制你的漸變和形變:

  • onstart——當(dāng)fx開(kāi)始時(shí)觸發(fā)
  • oncancel——當(dāng)fx取消時(shí)觸發(fā)
  • oncomplete——當(dāng)fx完成時(shí)觸發(fā)
  • onchaincomplete——當(dāng)fx鏈完成時(shí)觸發(fā)

當(dāng)你建立一個(gè)漸變或者形變時(shí),你可以設(shè)置這其中的一個(gè)事件,就像你設(shè)置一個(gè)或多個(gè)選項(xiàng)一樣,不過(guò)不是設(shè)置一個(gè)值,而是設(shè)置一個(gè)函數(shù):

參考代碼: [復(fù)制代碼] [保存代碼]
  1. // 首先我們把一個(gè)新的fx.tween賦值給一個(gè)變量
  2. // 然后定義我們要漸變的元素
  3. quadin = new fx.tween(quadin, {
  4.     // 這里是一些選項(xiàng)
  5.     link: 'cancel',
  6.     transition: ‘quad:in’,
  7.  
  8.        // 這里是一些事件
  9.     onstart: function(passes_tween_element){
  10.         // 這些事件都會(huì)傳遞漸變的對(duì)象
  11.         // 因此當(dāng)動(dòng)畫開(kāi)始時(shí)
  12.         // 這里我們調(diào)用一個(gè)"highlight"效果 
  13.         passes_tween_element.highlight('#c54641');
  14.     },
  15.  
  16.     // 注意這個(gè)逗號(hào)是怎樣始終出現(xiàn)在每個(gè)事件和選項(xiàng)之間的
  17.     // 但是最后一個(gè)事件或者選項(xiàng)后面沒(méi)有
  18.     oncomplete: function(passes_tween_element){
  19.         // 在結(jié)束時(shí),我們?cè)賾?yīng)用一個(gè)highlight效果
  20.         passes_tween_element.highlight('#c54641');
  21.     }
  22. });

示例

為了生成上面的變形代碼,我們可以用一種我們?cè)谶@個(gè)系列的教程中還沒(méi)有見(jiàn)過(guò)的方式來(lái)重用我們的函數(shù)。這上面所有的變形元素都使用了兩個(gè)函數(shù),一個(gè)當(dāng)鼠標(biāo)進(jìn)入時(shí)漸變淡出,另外一個(gè)在當(dāng)鼠標(biāo)離開(kāi)時(shí)漸變返回:

參考代碼: [復(fù)制代碼] [保存代碼]
  1. // 這是我們?cè)谑髽?biāo)進(jìn)入時(shí)調(diào)用的函數(shù)
  2. // 寬度漸變到700px
  3. var enterfunction = function() {
  4.     this.start('width''700px');
  5. }
  6.  
  7. // 這是我們?cè)谑髽?biāo)離開(kāi)時(shí)調(diào)用的函數(shù)
  8. // 寬度漸變回300px
  9. var leavefunction = function() {
  10.     this.start('width''300px');
  11. }
  12.  
  13. window.addevent('domready'function() {
  14.     // 這里我們把一些元素賦值給變量
  15.     var quadin = $('quadin');
  16.     var quadout = $('quadout');
  17.     var quadinout = $('quadinout');
  18.  
  19.     // 然后我們創(chuàng)建三個(gè)漸變?cè)?/font>
  20.     // 分別對(duì)應(yīng)上面的三個(gè)變量
  21.     quadin = new fx.tween(quadin, {
  22.     link: 'cancel',
  23.     transition: fx.transitions.quad.easein,
  24.     onstart: function(passes_tween_element){
  25.         passes_tween_element.highlight('#c54641');
  26.     },
  27.     oncomplete: function(passes_tween_element){
  28.         passes_tween_element.highlight('#e67f0e');
  29.     }    
  30.     });
  31.  
  32.    quadout = new fx.tween(quadout, {
  33.     link: 'cancel',
  34.     transition: 'quad:out'
  35.     });
  36.  
  37.     quadinout = new fx.tween(quadinout, {
  38.     link: 'cancel',
  39.     transition: 'quad:in:out'
  40.     });
  41.  
  42.     // 現(xiàn)在我們添加鼠標(biāo)進(jìn)入和鼠標(biāo)離開(kāi)事件
  43.     // 注意.addevents的使用
  44.     // 則和.addevent的使用類似
  45.     // 不過(guò)你可以通過(guò)下面的模式添加多個(gè)事件
  46.     $('quadin').addevents({
  47.     // 首先,你要說(shuō)明是什么事件,并把事件用單引號(hào)引起來(lái)
  48.     // 然后后面跟一個(gè)冒號(hào)(:)
  49.     // 最后放置你的函數(shù)
  50.     // 在這個(gè)例子中,函數(shù)banding到這個(gè)漸變對(duì)象
  51.     'mouseenter': enterfunction.bind(quadin),
  52.     'mouseleave': leavefunction.bind(quadin)
  53.     });
  54.  
  55.     $('quadout').addevents({
  56.     // 注意我們這里是怎樣重復(fù)使用這個(gè)函數(shù)的
  57.     'mouseenter': enterfunction.bind(quadout),
  58.     'mouseleave': leavefunction.bind(quadout)
  59.     });
  60.  
  61.     $('quadinout').addevents({
  62.     // 我們這里也使用了那些同樣的函數(shù)
  63.     // 不過(guò)每次我們都應(yīng)用一個(gè)事件到不同的元素
  64.     // 并且綁定不同的漸變
  65.     'mouseenter': enterfunction.bind(quadinout),
  66.     'mouseleave': leavefunction.bind(quadinout)
  67.     });

更多學(xué)習(xí)……

你可以通過(guò)fx庫(kù)里面的工具來(lái)獲得對(duì)效果更細(xì)致的控制權(quán)。請(qǐng)一定要閱讀一下文檔中的fx這一節(jié),還有tweenmorphtransitions

下載一個(gè)包含你開(kāi)始所需要的東西的zip包

包括這個(gè)頁(yè)面上的實(shí)例,mootools 1.2核心庫(kù),一個(gè)外部的javascript文件,一個(gè)外部的css文件或者一個(gè)簡(jiǎn)單的html文件。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 扎鲁特旗| 梨树县| 谢通门县| 阜康市| 牡丹江市| 苗栗县| 奇台县| 乌海市| 定南县| 庆城县| 靖西县| 宁阳县| 兴化市| 乌拉特后旗| 扶风县| 鱼台县| 三亚市| 抚远县| 富平县| 宁夏| 宣武区| 长沙市| 新晃| 盐津县| 高尔夫| 苗栗市| 德保县| 垣曲县| 江华| 台东市| 武川县| 巢湖市| 靖远县| 新蔡县| 宁津县| 灵石县| 连平县| 永泰县| 信丰县| 民县| 光山县|