impress.js初体验 - 前端装X利器

impress.js初体验 - 前端装X利器

概述

如果你已经厌烦了使用PowerPoint制作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 的浏览器也能正常运行。

impreess源码已经发布在GitHub上,地址:https://github.com/bartaz/impress.js

官方demo地址:http://bartaz.github.com/impress.js

因为在其项目网页中却没有找到说明文档&使用文档,所以这篇文章将一步一步创建一个较初级的演示文稿,我们接着往下走。

请准备好现代浏览器:Google Chrome(效果最佳)、Safari或FF.
  *我的IE10不支持,不知道为什么很多资料上写着IE10也能支持,背了个催。

配置

  1. html5页面结构先准备就绪
  2. 创建一个id="impress"的wrapper(载体),直接div就好,其他标签同样也可以
  3. 在body标签结束前引入impress.js文件并且调用
  4. class="impress-not-supported"是当浏览器不支持时显示给用户的提示信息,降级处理你懂的,不多解释哈

[
复制代码

](javascript:void(0); "复制代码")

<!doctype html>
<html>
<head>
  <title>darren - Impress demo</title>
  <meta charset="utf-8" />
  <link href="http://bartaz.github.com/impress.js/css/impress-demo.css" rel="stylesheet" />
</head>
<body>
    <div class="impress-not-supported">
    </div>
  <div id="impress">
  </div>
  <script src="http://bartaz.github.com/impress.js/js/impress.js"></script>
  <script>impress().init();</script>
</body>
</html>

[![复制代码](http://upload-images.jianshu.io/upload_images/635081-23dd29e439e13f66.gif?imageMogr2/auto-orient/strip)](javascript:void(0); "复制代码") 

*   在wrapper内创建一个幻灯片只需要新建一个class="step"的<div>即可。<div>的id可有可无,当有id时url中的hash变化是随着id走;反之就是step-[num],如![image.png](https://upload-images.jianshu.io/upload_images/635081-82d58bff6ca88abc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


*   **数据属性**:用来描述幻灯片大小,切换等效果。

  data-x = 幻灯片的x坐标

  data-y = 幻灯片的y坐标

  data-scale = 通过指定一个值来进行缩放,data-scale为5则将会在你幻灯片原始尺寸基础放大5倍

  data-rotate = 通过一个数字度数来确定旋转你的幻灯片

  data-rotate-x = 为3D用,这个数字度数是它应该相对x轴旋转多少度。(前倾/后仰)

  data-rotate-y = 为3D用,这个数字度数是它应该相对y轴旋转多少度。 (左摆/右摆)

  data-rotate-z = 为3D用,这个数字度数是它应该相对z轴旋转多少度。

# 创建

  数据属性那段是你接下来需要重点打交道的,接下来开始step by step创建一个演示文稿。

  从一个初始的幻灯片开始,这个幻灯片已将它data-x和data-y数据属性设置为0,所以会出现在页面的中间。

> This is slide 1 - 【标题】

  第二个幻灯片的data-x值为500、data-y值为0,活动的时候它将会向左平移(滑动)500px的地方。

> This is slide 2 

  第三张幻灯片其data-x值不变,data-y位置为-400,这将会是从顶部400px处滑入屏幕。  

> This is slide 3

  第四张幻灯片来个新花样,使用data-scale的值控制其缩放大小。data-scale="0.5"表示着它应该是一半的尺寸,当它变成活动的演示时将通过必需的倍数调节所有幻灯片的缩放尺寸,从这一步绚丽开始起步

<div class="step" data-x="500" data-y="-800" data-scale="0.5"> This is slide 4 </div>

  第五张幻灯片旋转属性允许你旋转一个幻灯片到当前视图,幻灯片5被设置旋转90度,视觉效果微叼哈

<div class="step" data-x="0" data-y="-800" data-rotate="90"> This is slide 5 </div>

  第六张幻灯片开始3D style,可为每个维度的轴指定旋转属性(x,y,z)。x轴是横轴,意思是你可使事物倾斜(正值)或向后(负值),y轴是竖轴,所以你可使事物向左摇摆(负值)或向右(正值),z轴是纵轴,这将是旋转的东西向上(负值)和向下(正值)。

[![复制代码](http://upload-images.jianshu.io/upload_images/635081-8031bda0131437ac.gif?imageMogr2/auto-orient/strip)](javascript:void(0); "复制代码") 

<div class="step" data-x="-1200" data-y="0" data-rotate-x="30" data-rotate-y="-30" data-rotate-z="90" data-scale="4"> This is slide 6 </div>

[![复制代码](http://upload-images.jianshu.io/upload_images/635081-dddf8347b214e521.gif?imageMogr2/auto-orient/strip)](javascript:void(0); "复制代码") 

  以上6张幻灯片把数据属性内的值都过了一遍,一张略high的演示文稿就呈现在我们眼前。你可以以你的想象力用不可思议的和令人惊奇的方式合并这些效果来创建你自己的幻灯片展示风格。

*   **全局预览**

  个人超赞这个视觉体验,把所有的幻灯片都平行的展示,排列的合理会非常帅气,使用方式就是在幻灯片6后面插入一段html.

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

  随着你幻灯片位置的不同所以全局预览的值也会不一样,拿着结尾处的demo一点一点调整找感觉,希望你会喜欢!

  完成后请记住它,用它做的不只局限于此,**唯一的限制是你的创造力**!

# 个人体会

  正因为我们是前端,所以用前端技术做做各种尝试没什么不好,impress更可以让我们的演示文稿更有新意,所以简单了解下绝对是值得的,**学习是最好的投资**。

  优点:

1.  个人非常喜欢overview的功能
2.  因为HTML+CSS都需要自己完成,位置和效果都得自己经手,视觉效果都由自己掌控
3.  在我用过的同类产品中视觉效果最绚,CSS3+3D效果,直接给观众看晕:)

  缺点:

1.  impress在视觉表现上确实非常强大,比起同样做演示文稿的 html5slides 和 deck.js, impress.js的复杂度上高了不少,而且如果想把演示文稿排版的好看可能需要花掉大量的时间.
    *如果闲impress麻烦的朋友可以去看看 html5slides 和 deck.js的资料,视觉效果会稍差一些,不过上手会简单不少。
2.  不要把3D和旋转用得太花哨、太绚,看的人会晕,恰当就好哈

  以下是demo代码,初学者自己动手多改改感觉就好了。

![image](http://upload-images.jianshu.io/upload_images/635081-841a4ff04a5211fa.gif?imageMogr2/auto-orient/strip)

[![复制代码](http://upload-images.jianshu.io/upload_images/635081-9bf017d4efcba35a.gif?imageMogr2/auto-orient/strip)](javascript:void(0); "复制代码") 

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: &quot;Courier New&quot; !important; font-size: 12px !important; max-width: 600px;"><!doctype html>
<html>
    <head>
        <title>darren - Impress demo</title>
        <meta charset="utf-8" />
        <link href="http://bartaz.github.com/impress.js/css/impress-demo.css" rel="stylesheet" />
    </head>
    <body>
        <div class="impress-not-supported">
            <div class="fallback-message">
                <p>你的浏览器<b>不支持</b> impress.js, 所以当前展示的是简化版。</p>
                <p>为了获得更好的体验,请使用最新的 <b>Chrome</b>, <b>Safari</b> 或者 <b>Firefox</b> 浏览器。</p>
            </div>
        </div>
        <div id="impress">
            <div class="step" data-x="0" data-y="0"> Darren code - [标题] </div>
            <div class="step" data-x="500" data-y="0"> This is slide 2 </div>
            <div class="step" data-x="500" data-y="-400"> This is slide 3 </div>
            <div class="step" data-x="500" data-y="-800" data-scale="0.5"> This is slide 4 </div>
            <div class="step" data-x="0" data-y="-800" data-rotate="90"> This is slide 5 </div>
            <div class="step" data-x="-1200" data-y="0" data-rotate-x="30" data-rotate-y="-30" data-rotate-z="90" data-scale="4"> This is slide 6 </div>
            <!-- darren code -->
            <div id="overview" class="step" data-x="-200" data-y="-500" data-scale="3"></div>
        </div>
        <script src="http://bartaz.github.com/impress.js/js/impress.js"></script>
        <script>impress().init();</script>
    </body>
</html></pre>

[![复制代码](http://upload-images.jianshu.io/upload_images/635081-f7bc7494ea1f776d.gif?imageMogr2/auto-orient/strip)](javascript:void(0); "复制代码") 

  突然想起一句话作为文章总结吧:“**当你有把锤子的时候,你看什么都像钉子**”。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容