使用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 相关文章推荐
默认让页面的第一个控件选中的javascript代码
Dec 26 Javascript
基于jquery tab切换(防止页面刷新)
May 23 Javascript
php对mongodb的扩展(小试牛刀)
Nov 11 Javascript
javascript中的事件代理初探
Mar 08 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
May 20 Javascript
AngularJS Select(选择框)使用详解
Jan 18 Javascript
vue.js如何将echarts封装为组件一键使用详解
Oct 10 Javascript
jQuery实现的简单无刷新评论功能示例
Nov 08 jQuery
微信小程序使用wxParse解析html的方法示例
Jan 17 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
Mar 21 Javascript
Vue批量图片显示时遇到的路径被解析问题
Mar 28 Javascript
js实现鼠标滑动到某个div禁止滚动
Sep 17 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
怎样在php中使用PDF文档功能
2006/10/09 PHP
javascript Keycode对照表
2009/10/24 Javascript
为指定元素增加样式的js代码
2009/12/09 Javascript
javascript算法学习(直接插入排序)
2011/04/12 Javascript
javascript得到当前页的来路即前一页地址的方法
2014/02/18 Javascript
javascript实现确定和取消提示框效果
2015/07/10 Javascript
javascript实现对表格元素进行排序操作
2015/11/18 Javascript
学习JavaScript设计模式之中介者模式
2016/01/14 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
JSON 对象未定义错误的解决方法
2016/09/29 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
2019/02/21 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
[08:08]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY
2014/06/25 DOTA
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
单利模式及python实现方式详解
2018/03/20 Python
python使用scrapy发送post请求的坑
2018/09/04 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
HTML5 File接口在web页面上使用文件下载
2017/02/27 HTML / CSS
HTML5 Canvas——用路径描画线条实例介绍
2013/06/09 HTML / CSS
MVMT手表官方网站:时尚又实惠的高品质手表
2016/12/04 全球购物
OPPO手机官方商城:中国手机市场出货量第一品牌
2017/10/18 全球购物
MADE法国:提供原创设计师家具
2018/09/18 全球购物
物业保安主管岗位职责
2013/12/25 职场文书
餐饮采购员岗位职责
2014/03/15 职场文书
2014两会优秀的心得体会范文
2014/03/17 职场文书
中专毕业生的自荐书
2014/07/01 职场文书
主要领导对照检查材料
2014/08/26 职场文书
Python机器学习之KNN近邻算法
2021/05/14 Python
浅谈redis的过期时间设置和过期删除机制
2022/03/18 MySQL