首頁 web前端 js教程 用Move.js配合創建CSS3動畫的入門指引_JavaScript

用Move.js配合創建CSS3動畫的入門指引_JavaScript

May 16, 2016 pm 03:49 PM
css3

在網站上,CSS3 的過渡和動畫是目前創建輕量級動畫的首選方法。不幸的是,很多開發者發現他們自己的語法和複雜和混亂的。如果這聽起來像你自己,對你來說,或許Move.js是完美的方案。 Move.js是使用簡單函數來建立 CSS3 動畫的一個簡單的JavaScript函式庫。本教學將探討Move.js的基礎知識,並提供一個線上demo。

基礎知識

Move.js 提供了創建 CSS3 動畫的最簡單的 JavaScript API。讓我們假設有一個帶有類別 box 的 div 元數,當滑鼠 移動到 div 上面的時候我們想從左側移動元素100個像素。在這種情況下,我們的程式碼如果所示:

.box {
 -webkit-transition: margin 1s;
 -moz-transition: margin 1s;
 -o-transition: margin 1s;
 transition: margin 1s;
}
.box:hover {
 margin-left: 100px;
}

登入後複製

使用 Move.js 我們可以簡單地呼叫 set()方法來實現相同的結果,如下:

move('.box')
 .set('margin-left', 100)
 .end();

登入後複製

入門

首先,造訪 Move.js GitHub page並下載最新的包,提取並拷貝 Move.js 檔案到你的工作目錄。接下來,在你的html 頁面中引入該文件。完成後的頁面應該如下:

<!DOCTYPE html>
<html>
 <head>
 <title>Move.js Demo</title>
 <link rel="stylesheet" type="text/css" href="styles.css"> 
 </head>
 <body>
 <a href="#" id="playButton">Play</a>
 <div class="box"></div>
 <script type="text/javascript" src="js/move.js"></script>
 </body>
</html>

登入後複製

我們 已經定義了一個類別為 box 的 div 元數和一個ID為playButton的a連結以用於我們的demo。讓我們建立一個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頁面看起來應該如下圖:

201572284630175.jpg (787×186)

現在,讓我們寫下第一個Move.js片段。我們需要附加一個onclick事件處理程序到palyButton上,並在單擊的時候使其向右移動。事件處理程序的JavaScript程式碼如下,這段程式碼將 transform:translateX(300px) 加到 box 元數上:

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"> 
 </head>
 <body>
 <a href="#" 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()方法。現在,讓我們來了解Move.js的其他方法。
set(prop, val)

set()方法用來設定元素的css屬性,他有兩個參數:css屬性和屬性值。範例用法:

.set('background-color', '#CCC')
.set('margin-left', 500)
.set('color', '#222')

登入後複製

 

add(prop, val)

add()方法用來增加其已經設定的屬性值。此方法必須數值型值,以便用來增加。此方法必須有兩個參數:屬性值和其增量:

.add('margin-left', 200)

登入後複製

在前面的程式碼片段呼叫後,會在其值的基礎上增加200px。
sub(prop, val)

sub()是add()的逆過程,他接受兩個相同的參數,但其值將從屬性值中減去。

.sub('margin-left', 200)

登入後複製

rotate(deg)

如名稱所暗示的,該方法透過提供的數值作為參數來旋轉元素。當方法被呼叫的時候經過附加到元素的 transform 屬性上。下面的程式碼旋轉元素90deg:

.rotate(90)
登入後複製

這段程式碼將會加上以下css到元素上:

transform:rotate(90deg)

登入後複製

duration(n)

透過這個方法,你可以設定動畫的播放時間。例如:如下程式碼,2秒鐘將元素從左側往右移動200px:

.set('margin-left', 200)
.duration('2s')

登入後複製

另一例子,下面的程式碼。 Move.js在2秒鐘內將會修改元素的margin屬性,設定背景色,同時將元素旋轉90度。

.set('margin-left', 200)
.set('background-color', '#CCC')
.rotate(90)
.duration('2s')

登入後複製

translate(x[, y])

translate()方法用於修改元素的預設位置,使用提供的座標作為參數,如果僅設定一個參數,將作為x座標,如果提供了第二個參數,將作為y座標:

.translate(200, 400)

登入後複製

x() 和 y()

x()方法用來調整元素的x座標,y()方法用來調整元素的y座標。兩個方法的參數可以是正數也可以是負數,如下:

.x(300)
.y(-20)

登入後複製

skew(x, y)

skew()用來調整一個相對於x和y軸的角度。此方法可以分為skewX(deg)和skewY(deg)兩個方法:

.skew(30, 40)

登入後複製

scale(x, y)

此方法用於放大或壓縮元素的大小,依照提供的每一個值,將呼叫transform的scale方法:

.scale(3, 3)

登入後複製

ease(fn)

如果你使用過CSS3過渡,你就了解ease函數作用在transition屬性上。他指定了過渡的行為。每個 ease 函數是 in、out、in-out、snap、cubic-bezeir等。這些函數可以透過Move.js提供的ease()方法得到呼叫。例如:

.ease('in').x(400)
.ease('cubic-bezier(0,1,1,0)').x(400)

登入後複製

end()

该方法用于Move.js代码片段的结束,他标识动画的结束。技术上,该方法触发动画的播放。该方法接受一个可选的callback回掉函数。代码如下:

move('.box')
 .set('background-color', 'red')
 .duration(1000)
 .end(function() {
 alert("Animation Over!");
 });

登入後複製

delay(n)

正如方法所暗示的,该方法提供一个时间的数值作为动画的延时。如下:

move('.box')
 .set('background-color', 'red')
 .delay(1000)
 .end();

登入後複製

then()

该方法是Move.js中一个最重要的函数。他用于分割动画为两个集合,并按顺序执行。如下动画被分为两步,通过then()方法实现分割:

move('.box')
 .set('background-color', 'red')
 .x(500)
 .then()
 .y(400)
 .set('background-color', 'green')
 .end();

登入後複製

## 使用Move.js创建复杂动画 ##

在本教程中,我们已经写了很多基本的 动画来了解各个方法。接下来,我们使用Move.js可以很容易的创建复杂的动画。该demo阐述了Move.js的大部分内容,在demo page

上我们创建了动画的描述,代码如下:

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();

登入後複製

结论

希望本篇教程能带给你关于Move.js是什么的清晰的认识和如何创建CSS3动画。使用Movejs能帮助你在一个地方正确的组织所有的动画代码。在任何时候你想修复一个动画,你就知道他在那里。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

純CSS3怎麼實現波浪效果? (程式碼範例) 純CSS3怎麼實現波浪效果? (程式碼範例) Jun 28, 2022 pm 01:39 PM

純CSS3怎麼實現波浪效果?這篇文章就來跟大家介紹一下使用 SVG 和 CSS 動畫來製作波浪效果的方法,希望對大家有幫助!

巧用CSS實現各種奇形怪狀按鈕(附代碼) 巧用CSS實現各種奇形怪狀按鈕(附代碼) Jul 19, 2022 am 11:28 AM

這篇文章帶大家看看怎麼使用 CSS 輕鬆實現高頻出現的各類奇形怪狀按鈕,希望對大家有幫助!

css怎麼隱藏元素但不佔空間 css怎麼隱藏元素但不佔空間 Jun 01, 2022 pm 07:15 PM

兩種方法:1、利用display屬性,只要為元素加上「display:none;」樣式即可。 2.利用position和top屬性設定元素絕對定位來隱藏元素,只需為元素加上「position:absolute;top:-9999px;」樣式。

css3怎麼實現花邊邊框 css3怎麼實現花邊邊框 Sep 16, 2022 pm 07:11 PM

在css中,可以利用border-image屬性來實作花邊邊框。 border-image屬性可以使用圖片來建立邊框,即給邊框加上背景圖片,只需要將背景圖片指定為花邊樣式即可;語法「border-image: url(圖片路徑) 向內偏移值圖像邊界寬度outset 是否重複;」。

css3如何實現滑鼠點擊圖片放大 css3如何實現滑鼠點擊圖片放大 Apr 25, 2022 pm 04:52 PM

實作方法:1、使用「:active」選擇器選取滑鼠點擊圖片的狀態;2、使用transform屬性和scale()函數實現圖片放大效果,語法「img:active {transform: scale(x軸放大倍率,y軸放大倍率);}」。

原來利用純CSS也能實現文字輪播與圖片輪播! 原來利用純CSS也能實現文字輪播與圖片輪播! Jun 10, 2022 pm 01:00 PM

怎麼製作文字輪播與圖片輪播?大家第一想到的是利用js,其實利用純CSS也能實現文字輪播與圖片輪播,下面來看看實作方法,希望對大家有幫助!

css3怎麼設定動畫旋轉速度 css3怎麼設定動畫旋轉速度 Apr 28, 2022 pm 04:32 PM

在css3中,可以利用「animation-timing-function」屬性來設定動畫旋轉速度,該屬性用於指定動畫將如何完成一個週期,設定動畫的速度曲線,語法為「元素{animation-timing-function:速度屬性值;}」。

css3動畫效果有變形嗎 css3動畫效果有變形嗎 Apr 28, 2022 pm 02:20 PM

css3中的動畫效果有變形;可以利用「animation:動畫屬性@keyframes ..{..{transform:變形屬性}}」實現變形動畫效果,animation屬性用於設定動畫樣式,transform屬性用於設定變形樣式。

See all articles