Impress.js上手 - 拋開PPT、制作Web 3D幻燈片放映


 

 

前言:

  如果你已經厭倦了使用PPT設置路徑、設置時間、設置動畫方式來制作動畫特效、那么Impress.js將是你一個非常好的選擇。

  用它制作的PPT將更加直觀、效果也是嗷嗷美觀的。

  當然,如果用它來裝X,是需要付出一些代價的,不過如果你是一個前端愛好者,理解HTML/CSS,那么就沒什么問題了。

  看看網上的實例,動手練習練習,分分鍾就能上手了。

 


 

 

介紹:

  impress.js 是國外一位開發者受 Prezi 啟發,采用 CSS3 與 JavaScript 語言完成的一個可供開發者使用的表現層框架(演示工具)。
  現在普通開發者可以利用 impress.js 自己開發出類似效果的演示工具,但性能比基於 FLASH 的 Prezi 更優。其功能包括畫布的無限旋轉與縮放,任意角度放置任意大小的文字,CSS3 3D 效果支持等。同時,也支持傳統 PowerPoint 形式的幻燈演示。

  目前 impress.js 是基於 webkit 瀏覽器(Chrome、Safari)開發,而在其它基於非 webkit 引擎,但支持 CSS3 3D 的瀏覽器也能正常運行。

 


 

 

演示:

  手機暫時可能看不了,因為它是使用方向鍵(←/→)或Tab鍵切換播放的。

  從下面的下載地址即可下載Impress.js的源碼,里面附帶了官網的效果Demo。

  如果需要上面我做的那個例子,留言郵箱就OK了。

 


 

 

准備:

  1. Impress.js的源碼已經發布在了GitHub上,下載即可:https://github.com/bartaz/impress.js
  2. 瀏覽器:Chrome、Safari、FireFox、IE10(有的人說不行,不知道為什么)。
  3. 代碼編輯器(在這里我用的是WebStorm)。

  OK、一切准備就緒,開搞、

  大家一步一步跟着寫,impress.js怎么用就會秒懂了。

 


 

 

步驟一:

  1. 新建一個HTML頁面,在</body>結束之前引入上面下載的impress.js
  2. 在<body>中創建兩個div:
    第一個class為“impress-not-supported”,表示不支持是的提示信息,你懂的;
    另一個的id為“impress”,表示幻燈片的容器。注意這里是id,我剛玩的時候就寫成了class,結果impress一直報錯找不到監聽等錯誤信息。

  代碼如下:

 1 <!DOCTYPE html>
 2 <html>
 3 <head lang="zh">
 4     <meta charset="UTF-8">
 5     <title>Impress.js Demo - 孤影</title>
 6 </head>
 7 <body>
 8     <div class="impress-not-supported"></div>
 9 
10     <div id="impress"></div>
11 
12     <script type="text/javascript" src="impress.js"></script>
13 </body>
14 </html>

 


 

 

步驟二:

  現在我們就要來創建每一個切換的步驟了。

  在id為impress的div中創建這些要切換的步驟的div即可,div的class為“step”。

  div的id可有可無,如果沒有id,則會按照默認從上向下的step的順序一步步執行,訪問地址如:“http://.../demo.html#/step-1”。反之,將會按照你自定義的id順序執行。

 

  每個幻燈片顯示的位置和大小、切換的效果等屬性如下:

  • data-x:幻燈片的X坐標
  • data-y:幻燈片的Y坐標
  • data-scale:幻燈片顯示的縮放比例
  • data-rotate:幻燈片旋轉的度數
  • data-rotate-x:為3D使用,這個度數設置它相對X軸旋轉多少度。
  • data-rotate-y:為3D使用,這個度數設置它相對Y軸旋轉多少度。
  • data-rotate-z:為3D使用,這個度數設置它性對Z軸旋轉多少度。

  OK、了解了這些屬性之后,我們開始創建如下代碼,幻燈片內容在這里我就用歌詞了:

  1.引用impress.js代碼之后,我們需要使用它來初始化頁面,產生后面我們將要制作的效果,代碼如下:

<1--  引入impress.js  -->
<
script type="text/javascript" src="impress.js"></script> <script type="text/javascript"> impress().init();  // 初始化幻燈片的step </script>

 

  2.創建第一個初始的幻燈片,他的data-x和data-y都設置為0,所以它會出現在頁面的中間:

<div class="step" data-x="0" data-y="0">
    <h3>《Poker Face》</h3> - Lady Gaga
</div>

 

  3.我們創建第二個幻燈片,它的data-x為500,data-y依舊為0,所以切換到第二的時候,它會向右平移切換到這個幻燈片:

<div class="step" data-x="500" data-y="0">
    I wanna hold them like they do in Texas Plays.
</div>

 

  4.下面創建第三個幻燈片,它的data-x依舊為500,data-y為-400,所以它會向上平移400px切換至此:

<div class="step" data-x="500" data-y="-400">
    Fold them let them hit me raise it Baby stay with me.
</div>

 

  4.平移的效果是不是感覺沒什么意思?下面我們第四張幻燈片來點兒花樣:

  使用data-scale控制縮放的大小,在這里我設置為0.5,表示縮放為原大小的一半;data-x依舊500,data-y為-800。

  表示向上移動400px,並且縮放一半的大小,代碼如下:

<div class="step" data-x="500" data-y="-800" data-scale="0.5">
    (I love it.)
</div>

 

  5.第五張幻燈片我們使用data-rotate屬性來設置它的旋轉動畫。

  在這里,我設置當前的data-x為0、data-y依舊是-800,data-rotate為90。

  表示,它將會安裝旋轉90°的動畫,想左翻轉500px,顯示當前幻燈片,代碼如下:

<div class="step" data-x="0" data-y="-800" data-rotate="90">
    Love game intuition play the cards with Spades to start.
</div>

 

  6.下面來點兒終極的,設置data-x為-1200,data-y為0,表示當前幻燈片相對於前一張向左1200px向下800px。

  然后分別使用data-rotate-x、data-rotate-y、data-rotate-z設置旋轉角度,並且使用data-scale設置縮放比例為放大4倍。

  代碼如下:

<div class="step" data-x="-1200" data-y="0" data-rotate-x="30" data-rotate-y="-30" data-rotate-z="90" data-scale="4">
    And after he's been hooked I'll play the on that's on his heart.
</div>

 

  7.現在你已經可以打開瀏覽器運行代碼了,是不是感覺效果相當霸氣。

  當然,界面可能有點丑,你可以按照個人喜好寫點樣式。如果懶得寫的話,也可以使用下面我簡單些的幾個樣式:

    <style type="text/css">
        body{margin:0px; background:#000000; color:#00FF66; font-size: 20px;}
        div.step h3{display: inline-block;}
        div.step{
width:400px; height: 100px; padding-top: 50px;
text-align
: center; border:1px solid #00FF66;
box-shadow
: 0px 0px 10px #00FF66; border-radius: 20px;
} div#overview{border:0px; box-shadow:0px 0px 0px transparent; } </style>

 

 

  OK、通過以上7個小步驟,我們就已經完成了一張簡單粗暴的演示文稿了。

  你也就可以發揮自己獨特的想象力來動手制作一個嚇尿一片人的Web演示文稿的展示效果了。

 

 


 

 

附注:

  這里還有一個全局預覽的效果,就是把所有step塊的的內容全部放在一個平面顯示,效果超贊。

  在這里,我在所有step后面創建一個id為overview的div,作為整體預覽的展示塊,展示縮放大小為放大3倍,x和y的位置如下等代碼如下:

<div class="step" id="overview" data-x="-200" data-y="-500" data-scale="3"></div>

 


 

 

結尾:

  本實例所有代碼如下:

 1 <!DOCTYPE html>
 2 <html>
 3 <head lang="zh">
 4     <meta charset="UTF-8">
 5     <title>Impress.js Demo - 孤影</title>
 6     <style type="text/css">
 7         body{margin:0px; background:#000000; color:#00FF66; font-size: 20px;}
 8         div.step h3{display: inline-block;}
 9         div.step{width:400px; height: 100px; padding-top: 50px; text-align: center; border:1px solid #00FF66; box-shadow: 0px 0px 10px #00FF66; border-radius: 20px;}
10         div#overview{border:0px; box-shadow:0px 0px 0px transparent; }
11     </style>
12 </head>
13 <body>
14     <div class="impress-not-supported"></div>
15 
16     <div id="impress">
17         <div class="step" data-x="0" data-y="0"><h3>《Poker Face》</h3> - Lady Gaga</div>
18         <div class="step" data-x="500" data-y="0">I wanna hold them like they do in Texas Plays.</div>
19         <div class="step" data-x="500" data-y="-400">Fold them let them hit me raise it Baby stay with me..</div>
20         <div class="step" data-x="500" data-y="-800" data-scale="0.5">(I love it.)</div>
21         <div class="step" data-x="0" data-y="-800" data-rotate="90">Love game intuition play the cards with Spades to start.</div>
22         <div class="step" data-x="-1200" data-y="0" data-rotate-x="30" data-rotate-y="-30" data-rotate-z="90" data-scale="4">
23             And after he's been hooked I'll play the on that's on his heart.
24         </div>
25         <div class="step" id="overview" data-x="-200" data-y="-500" data-scale="3"></div>
26     </div>
27 
28     <script type="text/javascript" src="impress.js"></script>
29     <script type="text/javascript">
30         impress().init();
31     </script>
32 </body>
33 </html>
本實例完整代碼

  如果還需要再看看開頭我做的那個演示實例的話,留言郵箱吧。

 

  當你制作出這么一個簡單的演示文稿后,你應該記住,使用它制作出的效果如何,你的想象和創造力是唯一決定性的因素!

 


 

 

體會:

  正因為我們是前端,所以用前端技術做做各種嘗試沒什么不好,impress更可以讓我們的演示文稿更有新意,所以簡單了解下絕對是值得的,學習是最好的投資。

  優點:
  1. 個人非常喜歡overview的功能
  2. 因為HTML+CSS都需要自己完成,位置和效果都得自己經手,視覺效果都由自己掌控
  3. 在我用過的同類產品中視覺效果最絢,CSS3+3D效果,直接給觀眾看暈:)
  缺點:
  1. impress在視覺表現上確實非常強大,比起同樣做演示文稿的 html5slides 和 deck.js, impress.js的復雜度上高了不少,而且如果想把演示文稿排版的好看可能需要花掉大量的時間.
  2. *如果閑impress麻煩的朋友可以去看看 html5slides 和 deck.js的資料,視覺效果會稍差一些,不過上手會簡單不少。
  3. 不要把3D和旋轉用得太花哨、太絢,看的人會暈,恰當就好哈

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM