你也可以做一個小米魅族網站(WOW.js:WOW.js – 在頁面滾動時展現動感的元素動畫效果)
可視區域動畫:
aos.js :http://www.jq22.com/jquery-info8150
scrollReveal.js :http://top.css88.com/archives/384
簡介
有的頁面在向下滾動的時候,有些元素會產生細小的動畫效果。雖然動畫比較小,但卻能吸引你的注意。比如剛剛釋出的 iPhone 6 的頁面(檢視)。如果你希望你的頁面也更加有趣,那麼你可以試試 WOW.js。
WOW.js 依賴 animate.css,所以它支援 animate.css 多達 60 多種的動畫效果,能滿足您的各種需求。
瀏覽器相容
使用方法
1、引入檔案
<code class="hljs xml has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">link</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">rel</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"stylesheet"</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">href</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"css/animate.min.css"</span>></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
2、HTML
<code class="hljs applescript has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">div</span> <span class="hljs-type" style="box-sizing: border-box;">class</span>=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"wow slideInLeft"</span>></<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">div</span>> <<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">div</span> <span class="hljs-type" style="box-sizing: border-box;">class</span>=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"wow slideInRight"</span>></<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">div</span>></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>
可以加入 data-wow-duration(動畫持續時間)和 data-wow-delay(動畫延遲時間)
屬性,如:
<code class="hljs lasso has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;"><</span>div class<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"wow slideInLeft"</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">data</span><span class="hljs-attribute" style="box-sizing: border-box;">-wow</span><span class="hljs-attribute" style="box-sizing: border-box;">-duration</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"2s"</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">data</span><span class="hljs-attribute" style="box-sizing: border-box;">-wow</span><span class="hljs-attribute" style="box-sizing: border-box;">-delay</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"5s"</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">><</span>/div<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">></span> <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;"><</span>div class<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"wow slideInRight"</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">data</span><span class="hljs-attribute" style="box-sizing: border-box;">-wow</span><span class="hljs-attribute" style="box-sizing: border-box;">-offset</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"10"</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">data</span><span class="hljs-attribute" style="box-sizing: border-box;">-wow</span><span class="hljs-attribute" style="box-sizing: border-box;">-iteration</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"10"</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">><</span>/div<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>
3、JavaScript
<code class="hljs cs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> WOW().init();</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
要自定義配置,可如下使用:
<code class="hljs cs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">var</span> wow = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> WOW({ boxClass: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'wow'</span>, animateClass: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'animated'</span>, offset: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, mobile: <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">true</span>, live: <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">true</span> }); wow.init();</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul>
配置
外掛描述:aos.js是一款效果超讚的頁面滾動元素動畫jQuery動畫庫外掛。該動畫庫可以在頁面滾動時提供28種不同的元素動畫效果,以及多種easing效果。在頁面往回滾動時,元素會恢復到原來的狀態。
簡要教程
aos.js是一款效果超讚的頁面滾動元素動畫jQuery動畫庫外掛。該動畫庫可以在頁面滾動時提供28種不同的元素動畫效果,以及多種easing效果。在頁面往回滾動時,元素會恢復到原來的狀態。
安裝
可以通過bower來安裝aos動畫庫外掛。
bower install aos --save
使用方法
在頁面中引入aos.css檔案,jquery和aos.js檔案
<link rel="stylesheet" href="dist/aos.css" />
<script src="js/jquery.min.js"></script>
<script src="dist/aos.js"></script>
HTML結構
要使用aos動畫庫,你需要做的就是在需要動畫的元素上新增aos屬性,例如:
<div aos="animation_name">
aos指令碼將會在頁面滾動時,在該元素上觸發相應的動畫。
在元素上還可以新增以下一些屬性:
屬性 | 屬性 | 屬性 | 預設值 |
aos-offset | 是立刻觸發動畫還是在指定時間之後觸發動畫 | 200 | 120 |
aos-duration | 動畫持續時間 | 600 | 400 |
aos-easing | 動畫的easing動畫效果 | ease-in-sine | ease |
aos-delay | 動畫的延遲時間 | 300 | 0 |
aos-anchor | 錨元素。使用它的偏移來取代實際元素的偏移來觸發動畫 | #selector | null |
aos-anchor-placement | 錨位置,觸發動畫時元素位於螢幕的位置 | top-center | top-bottom |
aos-once | 動畫是否只會觸發一次,或者每次上下滾動都會觸發 | true | false |
注意,aos-duration的動畫持續時間的範圍從50-3000毫秒,如果你想設定更大的值,可以在頁面中新增下面的CSS程式碼:
body[aos-duration='4000'] [aos], [aos][aos][aos-duration='4000']{ transition-duration: 4000ms; }
上面的程式碼將動畫的持續時間修改為4000毫秒。
示例程式碼:
<div aos="fade-zoom-in" aos-offset="200" aos-easing="ease-in-sine" aos-duration="600">
<div aos="flip-left" aos-delay="100" aos-anchor=".example-selector">
<div aos="fade-up" aos-anchor-placement="top-center">
如果你擔心HTML5校驗的問題,可以為上面的屬性新增data-字首。
<div data-aos="animation_name" data-aos-offset="200" data-aos-easing="ease-in-sine">
全域性配置
如果你不想單獨每個元素做一個動畫配置,你可以通過init()方法來統一配置所有元素的動畫效果。
AOS.init({ offset: 200, duration: 600, easing: 'ease-in-sine', delay: 100, });
額外配置
AOS提供了2個額外的配置方法,這些方法只能夠在初始化時使用。
配置 | 描述 | 示例值 | 預設值 |
disable | AOS被禁用的條件 | mobile | false |
startEvent | AOS被初始化的事件名稱 | exampleEvent | DOMContentLoaded |
禁用AOS:
如果你項在小螢幕裝置中禁用AOS,可以:
AOS.init({ disable: 'mobile' });
你可以傳入3種裝置的型別:mobile、phone或tablet。
你也可以設定自己的禁用條件,例如在螢幕小於1024畫素時禁用AOS:
disable: window.innerWidth < 1024
或者傳入一個函式,返回true或false。
disable: function () { var maxWidth = 1024; return window.innerWidth < maxWidth; }
開始動畫的事件:
如果你不想滾動動畫從頁面載入(DOMContentLoaded)後就開始執行,可以使用startEvent來設定自己的事件,AOS會在document上監聽這個事件:
AOS.init({ startEvent: 'someCoolEvent' });
API
AOS物件有2個可用的方法:
-
init
-
refresh
AOS.refresh();
上面的程式碼會重新計算元素的位置和偏移。
動畫和錨位置
動畫
淡入淡出動畫:
-
fade-up
-
fade-down
-
fade-left
-
fade-right
-
fade-up-right
-
fade-up-left
-
fade-down-right
-
fade-down-left
翻轉動畫:
-
flip-up
-
flip-down
-
flip-left
-
flip-right
滑動動畫:
-
slide-up
-
slide-down
-
slide-left
-
slide-right
縮放動畫:
-
zoom-in
-
zoom-in-up
-
zoom-in-down
-
zoom-in-left
-
zoom-in-right
-
zoom-out
-
zoom-out-up
-
zoom-out-down
-
zoom-out-left
-
zoom-out-right
錨位置
-
top-bottom
-
top-center
-
top-top
-
center-bottom
-
center-center
-
center-top
-
bottom-bottom
-
bottom-center
-
bottom-top
easing動畫
你可以使用以下的一些easing動畫效果:
-
linear
-
ease
-
ease-in
-
ease-out
-
ease-in-out
-
ease-in-back
-
ease-out-back
-
ease-in-out-back
-
ease-in-sine
-
ease-out-sine
-
ease-in-out-sine
-
ease-in-quad
-
ease-out-quad
-
ease-in-out-quad
-
ease-in-cubic
-
ease-out-cubic
-
ease-in-out-cubic
-
ease-in-quart
-
ease-out-quart
-
ease-in-out-quart