Move.js入門
在網(wǎng)站上,CSS3 的過渡和動畫是當(dāng)前創(chuàng)建輕量級動畫的首選方法。不幸的是,很多開發(fā)者發(fā)現(xiàn)他們自己的語法和復(fù)雜和混亂的。如果這聽起來像你自己,對你來說,或許Move.js是完美的方案。Move.js是使用簡單函數(shù)創(chuàng)建 CSS3 動畫的一個(gè)簡單的JavaScript庫。本教程將探討Move.js的基礎(chǔ)知識,并提供一個(gè)在線demo。
基礎(chǔ)知識
Move.js 提供了創(chuàng)建 CSS3 動畫的最簡單的 JavaScript API。讓我們假設(shè)有一個(gè)帶類 box 的 div 元數(shù),當(dāng)鼠標(biāo) 移動到 div 上面的時(shí)候我們想從左側(cè)移動元素100個(gè)像素。在這種情況下,我們的代碼如果所示:
.box { -webkit-transition: margin 1s; -moz-transition: margin 1s; -o-transition: margin 1s; transition: margin 1s; } .box:hover { margin-left: 100px; }
使用 Move.js 我們可以簡單調(diào)用 set()方法實(shí)現(xiàn)同樣的結(jié)果,如下:
move('.box') .set('margin-left', 100) .end();
入門
首先,訪問 Move.js GitHub page并下載最新的包,提取并拷貝 Move.js 文件到你的工作目錄。接下來,在你的html 頁面中引入該文件。完成后的頁面應(yīng)該如下:
<!DOCTYPE html> <html> <head> <title>Move.js Demo</title> <link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" rel="external nofollow" > </head> <body> <a href="#" rel="external nofollow" rel="external nofollow" id="playButton">Play</a> <div class="box"></div> <script type="text/javascript" src="js/move.js"></script> </body> </html>
我們 已經(jīng)定義了一個(gè)類為 box 的 div 元數(shù)和一個(gè)ID為playButton的a鏈接以用于我們的demo。讓我們創(chuàng)建一個(gè)styles.css文件并添加下面的樣式。注意下面的樣式對于Move.js來說不是必須的:
.box { margin: 10px; width: 100px; height: 100px; background: #7C9DD4; box-shadow: 5px 5px 0px #D1D1D1; } #playButton { display: block; font-size: 20px; margin: 20px 10px; font-weight: bold; color: #222; text-decoration: none; }
我們的html頁面看起來應(yīng)該如下圖:
現(xiàn)在,讓我們寫下第一個(gè)Move.js片段。我們需要附加一個(gè)onclick事件處理程序到palyButton上,并在單擊的時(shí)候使其向右移動。事件處理程序的JavaScript代碼如下,這段代碼添加 transform:translateX(300px) 到 box 元數(shù)上:
document.getElementById('playButton').onclick = function(e) { move('.box') .x(300) .end(); };
添加Move.js代碼后的完整代碼如下:
HTML
<!DOCTYPE html> <html> <head> <title>Move.js Demo</title> <link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" rel="external nofollow" > </head> <body> <a href="#" rel="external nofollow" rel="external nofollow" id="playButton">Play</a> <div class="box"></div> <script type="text/javascript" src="js/move.js"></script> <script type="text/javascript"> document.getElementById('playButton').onclick = function(e){ move('.box') .x(300) .end(); }; </script> </body> </html>
CSS
.box { margin-left: 10px; width: 100px; height: 100px; background: #7C9DD4; box-shadow: 5px 5px 0px #D1D1D1; } #playButton { display: block; font-size: 20px; margin: 20px 10px; font-weight: bold; color: #222; text-decoration: none; }
Move.js的方法
在前面的demo中,我們看到了x()方法。現(xiàn)在,讓我們了解Move.js的其他方法。
set(prop, val)
set()方法用于設(shè)置元素的css屬性,他帶有兩個(gè)參數(shù):css屬性和屬性值。示例用法:
.set('background-color', '#CCC') .set('margin-left', 500) .set('color', '#222')
add(prop, val)
add()方法用來增加其已經(jīng)設(shè)置的屬性值。該方法必須數(shù)值型值,以便用來增加。該方法必須有兩個(gè)參數(shù):屬性值和其增量:
.add('margin-left', 200)
在前面的代碼片段調(diào)用后,會在其值的基礎(chǔ)上增加200px。
sub(prop, val)
sub()是add()的逆過程,他接受兩個(gè)相同的參數(shù),但其值將從屬性值中減去。
.sub('margin-left', 200)
rotate(deg)
正如名稱所暗示的,該方法通過提供的數(shù)值作為參數(shù)來旋轉(zhuǎn)元素。當(dāng)方法被調(diào)用的時(shí)候通過附加到元素的 transform 屬性上。下面的代碼旋轉(zhuǎn)元素90deg:
.rotate(90)
這段代碼將添加如下css到元素上:
transform:rotate(90deg)
duration(n)
通過該方法,你可以設(shè)置動畫的播放時(shí)間。例如:如下代碼,2秒鐘將元素從左側(cè)往右移動200px:
.set('margin-left', 200) .duration('2s')
另一例子,下面的代碼。Move.js在2秒鐘內(nèi)將會修改元素的margin屬性,設(shè)置背景色,同時(shí)將元素旋轉(zhuǎn)90度。
.set('margin-left', 200) .set('background-color', '#CCC') .rotate(90) .duration('2s')
translate(x[, y])
translate()方法用于修改元素的默認(rèn)位置,使用提供的坐標(biāo)作為參數(shù),如果僅設(shè)置一個(gè)參數(shù),將作為x坐標(biāo),如果提供了第二個(gè)參數(shù),將作為y坐標(biāo):
.translate(200, 400)
x() and y()
x()方法用于調(diào)整元素的x坐標(biāo),y()方法用于調(diào)整元素的y坐標(biāo)。兩個(gè)方法的參數(shù)可以是正數(shù)也可以是負(fù)數(shù),如下:
.x(300) .y(-20)
skew(x, y)
skew()用于調(diào)整一個(gè)相對于x和y軸的角度。該方法可以被分為skewX(deg)和skewY(deg)兩個(gè)方法:
.skew(30, 40)
scale(x, y)
該方法用于放大或壓縮元素的大小,按照提供的每一個(gè)值,將調(diào)用transform的scale方法:
.scale(3, 3)
ease(fn)
如果你使用過CSS3過渡,你就了解ease函數(shù)作用在transition屬性上。他指定了過渡的行為。每個(gè) ease 函數(shù)是 in、out、in-out、snap、cubic-bezeir等。這些函數(shù)可以通過Move.js提供的ease()方法得到調(diào)用。例如:
.ease('in').x(400) .ease('cubic-bezier(0,1,1,0)').x(400)
end()
該方法用于Move.js代碼片段的結(jié)束,他標(biāo)識動畫的結(jié)束。技術(shù)上,該方法觸發(fā)動畫的播放。該方法接受一個(gè)可選的callback回掉函數(shù)。代碼如下:
move('.box') .set('background-color', 'red') .duration(1000) .end(function() { alert("Animation Over!"); });
delay(n)
正如方法所暗示的,該方法提供一個(gè)時(shí)間的數(shù)值作為動畫的延時(shí)。如下:
move('.box') .set('background-color', 'red') .delay(1000) .end();
then()
該方法是Move.js中一個(gè)最重要的函數(shù)。他用于分割動畫為兩個(gè)集合,并按順序執(zhí)行。如下動畫被分為兩步,通過then()方法實(shí)現(xiàn)分割:
move('.box') .set('background-color', 'red') .x(500) .then() .y(400) .set('background-color', 'green') .end();
## 使用Move.js創(chuàng)建復(fù)雜動畫 ##
在本教程中,我們已經(jīng)寫了很多基本的 動畫來了解各個(gè)方法。接下來,我們使用Move.js可以很容易的創(chuàng)建復(fù)雜的動畫。該demo闡述了Move.js的大部分內(nèi)容,在demo page
上我們創(chuàng)建了動畫的描述,代碼如下:
move('.square') .to(500, 200) .rotate(180) .scale(.5) .set('background-color', '#FF0551') .set('border-color', 'black') .duration('3s') .skew(50, -10) .then() .set('opacity', 0) .duration('0.3s') .scale(0.1) .pop() .end();
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
javascript實(shí)現(xiàn)Email郵件顯示與刪除功能
這篇文章主要介紹了javascript實(shí)現(xiàn)Email郵件顯示與刪除功能,需要的朋友可以參考下2015-11-11js 將canvas生成圖片保存,或直接保存一張圖片的實(shí)現(xiàn)方法
下面小編就為大家分享一篇js 將canvas生成圖片保存,或直接保存一張圖片的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01原生js實(shí)現(xiàn)點(diǎn)擊按鈕復(fù)制內(nèi)容到剪切板
這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)點(diǎn)擊按鈕復(fù)制內(nèi)容到剪切板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11JavaScript實(shí)現(xiàn)時(shí)間格式的切割與轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了使用JavaScript實(shí)現(xiàn)時(shí)間格式的切割與轉(zhuǎn)換的相關(guān)知識,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下2024-04-04使用swiper自定義分頁點(diǎn)擊跳轉(zhuǎn)指定頁面
這篇文章主要介紹了使用swiper自定義分頁點(diǎn)擊跳轉(zhuǎn)指定頁面方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04