impress.js 使用总结

impress.js 使用总结

在美团参加 hackathon 时,使用 impress.js 作了一个商家上线流程的复盘工具。以为 impress.js 很适合用于作 presentation, 所以进行一个简单地总结。css

what is impress.js

impress.js 是一个用于展现的前端框架,基于大量 css3 的动画等特性。最大的特色是其基于 transform 来构建,经过空间位置的移动以及旋转来体现变化,视觉冲击性很强。
该库须要有很好的 css 功底以及空间想象能力,由于整个 app 彻底是靠代码进行编辑,并非像传统的 ppt 工具进行拖拽以及鼠标点击。html

能够在github上查看 example 和 demo。前端

如何用 impress.js 设计 presentation

其实做者制做的 demo 就几乎将全部可能用到的技巧都包含了,并在 github 中提供了源码,不过若是不仔细读源码的话极可能走不少弯路。css3

基本思路

其实做者的想法很巧妙也很简单,impress.js 会根据 html 中 step 的顺序来渲染整个页面,对于每一个页面来讲只有三种重要的属性——scale,position,rotate。git

  • scale 决定了该页的大小。对应属性 width,height
  • position 决定了在三维空间中的坐标。对应属性 transform
  • rotate 则是旋转方式。对应属性 rotate[XYZ]

    • 绕 X 轴
    • 绕 Y 轴
    • 绕 Z 轴

impress.js 会根据这些属性将每一页进行渲染,最后从第一页开始一步步进行播放,所以这些属性也就决定了补间动画的形式。在开始写代码以前必定要想好空间结构。github

技巧总结

虽然第一眼看过去很容易,可若是想作一个定制性很强的ppt仍是会遇到不少问题,在这里总结一些经验与技巧。api

设置补间动画

在 impress.js 文件中能够设置一些默认值,我会慢慢对这些参数进行说明。前端框架

// some default config values.
    var defaults = {
        width: 1024,
        height: 768,
        maxScale: 1,
        minScale: 0,

        perspective: 1000,

        transitionDuration: 700
    };

画布大小

widthheight是每页的基准长度和宽度,与 scale 相乘以后才是该页的大小,设置偏移量时须要对widthheight进行参考。app

如下是计算 window 真实比例的代码。框架

var computeWindowScale = function ( config ) {
        var hScale = window.innerHeight / config.height,
            wScale = window.innerWidth / config.width,
            scale = hScale > wScale ? wScale : hScale;

        if (config.maxScale && scale > config.maxScale) {
            scale = config.maxScale;
        }

        if (config.minScale && scale < config.minScale) {
            scale = config.minScale;
        }

        return scale;
    };

能够知道画布会随着window的缩放而自动进行缩放,maxScale决定了画布最大值,而minScale决定了最小为多大。千万不要将这里的scaledata-scale搞混淆。

透明度

.impress-enabled .step 调整 opacity 来控制非当前页的透明度

渐变更画时间

须要注意的是在更改 default transitionDuration以后还须要在 css 中修改 transitionDuration。这样才能保证动画的同步。

实用的 class

body 状态

  • impress-disabled is added to body element by the impress.js script
  • impress-enabled after init() function is called

page 状态

additional past, present and future classes are added to step elements。经过这三个状态能够作出很酷的动画效果。

  • future class appears on steps that were not yet visited
  • present class appears on currently visible step - it's different from active class as present class is added when transition finishes (step is entered)
  • past class is added to already visited steps (when the step is left)

插件推荐

  • impress-progress.js 显示 ppt 的进度条
相关文章
相关标签/搜索