使用impress.js制作幻灯片


Posted in Javascript onSeptember 09, 2015

上周看到一个朋友做了很炫的缩放式幻灯片,可能因为对此知识了解的不多,找了好久才找到几个web幻灯片工具。通过筛选决定用Geek的 impress.js 。

impress.js是一款新兴的幻灯工具,它的效果类似Prezi,但是拥有3D的功能,而且是在MIT&GPL协议下开源,对于有一定的Web开发基础的人而言,真是一个福音!只需要简单的用一些html指令,并加载impress.js就可以制作出一个很绚丽的缩放式幻灯。

制作时首先你需要写一些head,这和普通的Web是一样的,但body不同。由于目前impress.js只支持Chrome、Firefox和Safari这样的现代浏览器(摸摸IE……),所以需要一个fallback message。

<body class="impress-not-supported">
<div class="fallback-message">
  <p>Your browser <b>doesn't support the features required</b> by impress.js, so you are presented with a simplified version of this presentation.</p>
  <p>For the best experience please use the latest <b>Chrome</b>, <b>Safari</b> or <b>Firefox</b> browser.</p>
</div>

然后开始写真正的主体,impress部分。这部分必须完全被框在“\ < div id="impress"\ >”之中。

第一中幻灯片是step slide,这个和普通的幻灯片很像,就是一页一页的。可以用如下的方法添加

<div id="page1" class="step slide" data-x="-1000" data-y="-1500">
  <q>第一页的幻灯片</q>
</div>

你需要写的是id、data-x和data-y。id就是一个名称,而data-x、data-y则是坐标。事实上impress.js是给你了一个很大场地布景,而你需要的就是把一张张幻灯片扔进去,放到恰当的位置。然后它会按照你扔的顺序进行展示。其实坐标还有一个,是data-z,这个坐标可以把你带入3D效果之中,进行缩放。

另一种幻灯就叫做step,不像前一种有个死板的框,这种幻灯片彻底去掉了限制你的框,而是直接的写在背景上。请看下面这个例子:

<div id="title" class="step" data-x="0" data-y="0" data-scale="4">
  <span>你看到的幻灯片由</span>
  <h1>impress.js</h1>
  <span>给你呈现</span>
</div>

这里特别的是有一个data-scale,表示这个幻灯片的大小,你可以把一页做得非常大或者非常小,来提供一个缩放的反差。还有一个旋转功能:

<div id="its" class="step" data-x="850" data-y="3000" data-rotate="90" data-scale="5">
  <p>这是一个 <strong>presentation tool</strong> <br/>
  作者从 <a href="http://prezi.com">prezi.com</a> 得到灵感<br/>
  利用现代浏览器<strong>CSS3 transforms and transitions</strong>的力量</p>
</div>

上面的data-rotate就是表示旋转的角度。

最后,你可以提供一个hint,告诉用户需要使用键盘的方向键来控制整个播放过程。如果用户刚点开幻灯片而没反应,这个提示会自动浮现。

<div class="hint">
  <p>请用方向键控制</p>
</div>

在页面的最后,你需要加载impress.js,我这里是直接引用作者的页面,但如果是离线的展示,建议下载下来使用。仅仅加载js是不够的,还需要用impress().init()来启动。

<script src="http://bartaz.github.io/impress.js/js/impress.js"></script>
<script>impress().init();</script>

事实上这个工具功能还有很多,我只是学了一些最基本的功能。官网的建议是直接看他提供的index.html,里面有详细的注释告诉你有什么功能,我做了一个页面,也是从作者提供的index.html改出来的。虽然这些东西很简单,但做一个演讲使用的幻灯片,也已经足够好了。我做的页面放在Gist上,整体代码见本页最后。

当然类似的工具不能不提Prezi,它是这个创意的最初实现,不过据说不支持中文。国内腾讯AlloyTeam也开发了一个叫做 iPresst 的工具,可以说是傻瓜级的好东西,不过由于是社交网络式的,有点不够隐私。impress.js最大的缺陷就是太Geek了,如果能够有个所见即所得的开发工具,一定能够推广开来。

<!doctype html>
<html lang="zh-cn">
<head>
 <meta charset="utf-8" />
 <meta name="viewport" content="width=1024" />
 <meta name="apple-mobile-web-app-capable" content="yes" />
 <title>impress.js 尝试</title>
  <link href="http://fonts.googleapis.com/css?family=Open+Sans:regular,semibold,italic,italicsemibold|PT+Sans:400,700,400italic,700italic|PT+Serif:400,700,400italic,700italic" rel="stylesheet" />
 <link href="http://bartaz.github.io/impress.js/css/impress-demo.css" rel="stylesheet" />
</head>
<body class="impress-not-supported">
<div class="fallback-message">
 <p>Your browser <b>doesn't support the features required</b> by impress.js, so you are presented with a simplified version of this presentation.</p>
 <p>For the best experience please use the latest <b>Chrome</b>, <b>Safari</b> or <b>Firefox</b> browser.</p>
</div>

<div id="impress">
 <div id="page1" class="step slide" data-x="-1000" data-y="-1500">
  <q>第一页的幻灯片:<br/>是否尝试过这样<b>幻灯</b>?</q>
  <q>这种幻灯片最初由Prezi带给世界</q>
 </div>
 <div class="step slide" data-x="0" data-y="-1500">
  <q>这种幻灯片通过ZUI的方式,彻底摆脱了传统幻灯片的“盒子限制”</q>
  <q><strong>唯一限制你的是你的创意!</strong></q>
 </div>
 <div class="step slide" data-x="1000" data-y="-1500">
  <q>后面还有<font color="red"><strong>更多惊喜!</strong></font></q>
 </div>
 <div id="title" class="step" data-x="0" data-y="0" data-scale="4">
  <span>你看到的幻灯片由</span>
  <h1>impress.js</h1>
  <span>给你呈现</span>
 </div>
 <div id="its" class="step" data-x="850" data-y="3000" data-rotate="90" data-scale="5">
  <p>这是一个 <strong>presentation tool</strong> <br/>
  作者从 <a href="http://prezi.com">prezi.com</a> 得到灵感<br/>
  利用现代浏览器<strong>CSS3 transforms and transitions</strong>的力量</p>
 </div>
 <div id="big" class="step" data-x="4000" data-y="2100" data-rotate="180" data-scale="6">
  <p>将你的想法视觉化</p>
 </div>
 <div id="end" class="step" data-x="7000" data-y="2500" data-rotate="90" data-scale="6">
  <p>请看<a href="http://bartaz.github.io/impress.js"><b>impress.js</b></a>
  <br/>
  开放的幻灯工具</p>
 </div>
 <div id="overview" class="step" data-x="3000" data-y="1500" data-scale="10">
 </div>
</div>

<div class="hint">
 <p>请用方向键控制</p>
</div>

<script>
if ("ontouchstart" in document.documentElement) { 
 document.querySelector(".hint").innerHTML = "<p>请用方向键控制</p>";
}
</script>
<script src="http://bartaz.github.io/impress.js/js/impress.js"></script>
<script>impress().init();</script>
</body>
</html>

以上内容就是我给大家分享的使用impress.js制作幻灯片,代码很简单,希望对大家学习有所帮助。

Javascript 相关文章推荐
jquery显示和隐藏div特效实例
Feb 27 Javascript
jquery的父子兄弟节点查找示例代码
Mar 03 Javascript
jquery常用操作小结
Jul 21 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
Nov 02 Javascript
基于jquery实现简单的手风琴特效
Nov 24 Javascript
浅谈时钟的生成(js手写简洁代码)
Aug 20 Javascript
简单实现js点击展开二级菜单功能
May 16 Javascript
node.js命令行教程图文详解
May 27 Javascript
vue  elementUI 表单嵌套验证的实例代码
Nov 06 Javascript
JS+CSS+HTML实现“代码雨”类似黑客帝国文字下落效果
Mar 17 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
Aug 27 Javascript
video.js添加自定义组件的方法
Dec 09 Javascript
谈谈impress.js初步理解
Sep 09 #Javascript
javascript实现base64 md5 sha1 密码加密
Sep 09 #Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
Sep 09 #Javascript
JavaScript中实现Map的示例代码
Sep 09 #Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
Sep 09 #Javascript
javascript实现日期时间动态显示示例代码
Sep 08 #Javascript
使用JQuery在线制作ppt并在线演示源码特效
Sep 08 #Javascript
You might like
很实用的一个完整email发送程序
2006/10/09 PHP
探讨:如何通过stats命令分析Memcached的内部状态
2013/06/14 PHP
详细解读PHP的Yii框架中登陆功能的实现
2015/08/21 PHP
php自定义函数实现统计中文字符串长度的方法小结
2017/04/15 PHP
PHP实现的AES双向加密解密功能示例【128位】
2018/09/03 PHP
JQuery实现自定义对话框的代码
2008/06/15 Javascript
Prototype Object对象 学习
2009/07/12 Javascript
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
漂亮的jquery提示效果(仿腾讯弹出层)
2013/02/05 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
jquery 列表双向选择器之改进版
2013/08/09 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
js关于字符长度限制的问题示例探讨
2014/01/24 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
2015/03/21 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
JavaScript 函数的执行过程
2016/05/09 Javascript
JQuery Mobile 弹出式登录框的实现方法
2016/05/28 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
2017/09/12 Javascript
vue中post请求以a=a&amp;b=b 的格式写遇到的问题
2018/04/27 Javascript
Bootstrap Table列宽拖动的方法
2018/08/15 Javascript
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
Python yield 使用方法浅析
2017/05/20 Python
在python Numpy中求向量和矩阵的范数实例
2019/08/26 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
食品营养与检测应届生求职信
2013/11/08 职场文书
单位成立周年感言
2014/01/26 职场文书
情人节活动策划方案
2014/02/27 职场文书
爱国演讲稿400字
2014/05/07 职场文书
物业保洁员岗位职责
2015/02/13 职场文书
2015年七夕情人节感言
2015/08/03 职场文书
安全教育培训制度
2015/08/06 职场文书
CocosCreator如何实现划过的位置显示纹理
2021/04/14 Javascript
SONY AN-LP1 短波有源天线放大器
2021/04/22 无线电
Nginx内网单机反向代理的实现
2021/11/07 Servers
解决vue自定义组件@click点击失效问题
2022/04/30 Vue.js