真的好奇怪,我居然会写前端技术的博客。没有办法的,最近实习,看的大多是前端。所以今天就用这个来练练手了。

  Impress.js 是一个非常棒的用来创建在线演示的Javascript库。它基于CSS3转 换和过渡、工作于现代浏览器(Google Chrome、Safari、Firefox 10 或 IE10)、并受prezi.com的理念启发的演示工具。如果你已经厌烦了使用PowerPoint制作PPT,那么impress.js是一个非常 好的选择,用它做的PPT更加直观,效果也非常不错。在线Demo:http://bartaz.github.io/impress.js/#/bored

  下面这个是一个例子:

 <!doctype html>
<html>
<head>
<title> Impress Tutorial</title>
<meta http-equiv="Content-Type" content="text/html"; charset=UTF-8">
</head>
<body>
<div id="impress">
<div class="step slide" data-x="0" data-y="0" data-scale="20"> My first slide </div>
<div class="step slide" data-x="1500" data-y="0" data-scale="10"> 2222222222222222222 </div>
<div class="step slide" data-x="500" data-y="-500" data-scale="10" data-rotate-x="20"> 333333333333333333333333 </div>
<div class="step slide" data-x="1500" data-y="-500" data-scale="0.5" data-rotate-x="0.5"> 4444444444444444444444444 </div>
</div> <script type="text/javascript" src="impress.js"> </script>
<script> impress().init();</script>
</body>
<html>

  接下来就解释一下了。第15行是导入需要用到的js库,第16行是调用该库的初始化函数。一开始没有写这个,一直调用不成功。第8行的id="impress" 这个是固定的id。里面的div class="step" 也是固定的。这样的关系,就好像impress这个div是一个演示框架,然后每个step对应的div就像是一页一页的幻灯片。虽然我们都是写step,但是在js库中还是会进行编号处理的。这个下面再说。

  对于每一页幻灯片来说,都应该有属性的。

  data-x = 幻灯片的x坐标 (相对与impress这个div来说。整个impress的div是一个画布,中间的坐标是0 , 0 然后各个方向就跟直角坐标系一样定义。)
  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轴旋转多少度。

  data-scale讲解:

  A:data-scale=20   B:data-scale=5    C:data-scale=0.5

  因为我们的幻灯片是一页一页的播放的。假如现在播放A,那么就会以A为一个单位。然后B是会缩小为0.25倍与A。而C就更小了是A的100分之一。我们可以通过键盘的方向健来控制播放的是上一页还是下一页。我们播放B时,如果A的坐标在B的可视范围内的话,是会4倍大于B的。而这次是以B为单位大小。这里就会问,那每次等到播放的那个幻灯片就变成单位大小,那怎么放大显示啊,就是通过简单的css里面的font-size就可以了。

  其实这个库提供的功能不是很多,但是由于运行在页面中,以前做幻灯片的时候没有想过的可以用javascript来控制页面,用css来控制样式,还可以加入各种库,来提高幻灯的开发效率了。现在都可以实现了。这个impress.js最主要的功能就是提供对每个div的编号,还有幻灯的上下页的衔接效果。对于动作效果,前端技术厉害的小伙伴完全可以自己写js的。

  最后一个就是,对于每个step的div来说,内部是有个编码的,这个当你在播放幻灯的时候在网址的后面会成为这样。 http://1.1.1.1/index.html#/step-1  后面的编号就是自己加的。同时对于幻灯的顺序,有了这样编码方式后,我们完全可以通过js控制下一页播放的是哪一页,还有一个就是我们可以通过鼠标进行点击,然后跳转到指点的幻灯页。

  下面给出一个最简单的例子

 <!doctype html>
<html>
<head>
<title> Impress Tutorial</title>
<meta http-equiv="Content-Type" content="text/html"; charset=UTF-8">
<style>
div{
border:1px dashed #000;
font-size: 40px ;
}
a:link{text-decoration:none;}
a:visited{text-decoration:none;}
a:hover{text-decoration:none;}
a:active{text-decoration:none;}
</style>
</head>
<body>
<div id="impress" >
<div class="step slide" data-x="0" data-y="-100" data-scale="1"> 1.<a href="#/step-5">aaaaaaaaa</a><br>2.<a href="#/step-8">bbbbbbbb</a><br>3.<a href="#/step-2">ccccccccc<a><br> </div>
<div class="step slide" data-x="100" data-y="100" data-scale="0.7" data-rotate-x="180" data-rotate-y="180" data-rotate-z="0"> My slide </div>
<div class="step slide" data-x="200" data-y="200" data-scale="0.5" data-rotate-x="180" data-rotate-y="0" data-rotate-z="180"> My slide </div>
<div class="step slide" data-x="300" data-y="300" data-scale="0.3" data-rotate-x="0" data-rotate-y="180" data-rotate-z="180"> My slide <a href="#/step-1">BACK</a></div>
<div class="step slide" data-x="-100" data-y="100" data-scale="0.7" data-rotate-x="180" data-rotate-y="0" data-rotate-z="180"> My slide </div>
<div class="step slide" data-x="-200" data-y="200" data-scale="0.5" data-rotate-x="0" data-rotate-y="180" data-rotate-z="180"> My slide </div>
<div class="step slide" data-x="-300" data-y="300" data-scale="0.3" data-rotate-x=180" data-rotate-y="180" data-rotate-z="0"> My slide <a href="#/step-1">BACK</a></div>
<div class="step slide" data-x="0" data-y="100" data-scale="0.7" data-rotate-x="0" data-rotate-y="180" data-rotate-z="180"> My slide </div>
<div class="step slide" data-x="0" data-y="200" data-scale="0.5" data-rotate-x="180" data-rotate-y="180" data-rotate-z="0"> My slide </div>
<div class="step slide" data-x="0" data-y="300" data-scale="0.3" data-rotate-x="180" data-rotate-y="180" data-rotate-z="0"> My slide <a href="#/step-1">BACK</a></div>
</div> <script type="text/javascript" src="impress.js"> </script>
<script> impress().init();</script>
</body>
<html>

  其他功能的话,可以加上图片,然后用js控制图片的滑动,panel进行画图,jq等外接库。总之就是一个很强大的幻灯演示功能。

  参考资料:

    http://www.cubewebsites.com/blog/guides/how-to-use-impress-js/

    http://www.woiweb.net/impress-js-tutorial.html

  本文地址: http://www.cnblogs.com/wunaozai/p/4055423.html

impress.js 一个创建在线幻灯的js库的更多相关文章

  1. css3clock.js - 一个用CSS3与纯js实现的简单时钟

    前言 项目代码明细可以查看我Github上的源码:https://github.com/nelsonkuang/css3clock.js 实现思路 主要是用CSS3控制时针.分针和秒针旋转:时针每12 ...

  2. 用JS动态创建登录表单,报了个小错误

    后来发现原来是: dvObj.style.border='#Red 1px sold'; 其中的Red多谢了一个‘#’, 但是奇怪的是在chrome和firefox都备有报错,但是在ie中报错了. 各 ...

  3. 创建一个提供数据 API 的 Node.js 网站

    创建站点目录 首先,创建一个文件夹用来保存你的站点文件,使用 mkdir 就可以了 PS C:\> mkdir mysite 然后,进入到这个文件夹进行下一步的操作. 创建包说明 使用记事本或者 ...

  4. Windows10安装node.js,vue.js以及创建第一个vue.js项目

    [工具官网] Node.js : http://nodejs.cn/ 淘宝NPM: https://npm.taobao.org/ 一.安装环境 1.本机系统:Windows 10 Pro(64位)2 ...

  5. 创建node.js一个简单的应用实例

    在node.exe所在目录下,创建一个叫 server.js 的文件,并写入以下代码: //使用 require 指令来载入 http 模块 var http = require("http ...

  6. JS怎么创建一个类?

    15. JS怎么创建一个类? 方式1 : var obj = new Object(); 方式2 : var obj = {}; 16.JS的typeof返回哪些数据类型? string.number ...

  7. Bounce.js – 快速创建漂亮的 CSS3 动画效果

    Bounce.js 是一个用于制作漂亮的 CSS3 关键帧动画的 JavaScript 库,使用其特有的方式生成的动画效果.只需添加一个组件,选择预设,然后你就可以得到一个短网址或者导出为 CSS 代 ...

  8. Phonegap 之 iOS银联在线支付(js调用ios端银联支付控件)

    Phonegap项目,做支付的时候,当把网站打包到ios或android端成app后,在app上通过wap调用银联在线存在一个问题: 就是当从银联支付成功后,再从服务器返回到app客户端就很难实现. ...

  9. 分享一个快速设置背景的js 自动获取背景图的长宽

    我来分享一个快速设置背景的js (需要jq支持!) 快速切图铺页面用---就是不需要手动输入背景图的长宽 自动获取背景图的长宽 : <div class="wrap"> ...

随机推荐

  1. springMVC加载远程freemarker模板文件

    在一个大网站里,有很多子域名,也就是有很多子系统,这些子系统由不同的团队负责,对整个网站的风格的风格至少得要是一致的(最基本的页头.页尾必须一致),这个时候得提供一份统一的页头.页尾以及公共的JS.c ...

  2. Jenkins部署Web项目到远程tomcat(通过jenkins插件)

    之前讲到的是如何构建一个项目,并且将代码进行编译.打包,那么打包完成最后的结果就需要发布到应用服务器,将项目部署成功.在之前的项目中我们采用的shell脚本来部署,下面讲解通过Jenkins部署web ...

  3. 收到新信息,弹出popup窗口提示

     

  4. ios中Pldatabase的用法(4)

    封装成DAO@implementation SqlHelper +(BOOL)InsertSql:(NSString *)sql paramet:(NSMutableDictionary *)parm ...

  5. 如何配置pl/sql 连接远程oracle服务器

    在下边的两种情况下,如何配置pl/sql 连接远程oracle服务器 1)在客户端不装oracle 客户端也不装服务器,能否配置pl/sql 连接远程oracle服务器,如何配置,请给出详细的文档说明 ...

  6. 【LeetCode】216. Combination Sum III

    Combination Sum III Find all possible combinations of k numbers that add up to a number n, given tha ...

  7. resume.c

    resume.c //采用CURLOPT_RESUME_FROM_LARGE 实现文件断点续传功能 #include <stdlib.h> #include <stdio.h> ...

  8. golang下划线(underscore) 总结

    一.概述 "_" 可以简单理解为赋值但以后不再使用,在golang中使用的比较多,使用的场合也很多,稍作总结: 二.场景 1.import import _ "net/h ...

  9. Mac 重建 Spotlight 索引

    前言 最近发现很多 mac 用户反映自己的 mac 系统显示内存占用高达 200 多 Gb,可是实际上自己下载的应用程序根本没那么多,使用专业的内存扫描工具扫的结果跟系统本身显示的完全不一样.那么出现 ...

  10. github上完成个人的站点搭建

    未完待续 很早就想有一个自己的站点了,可是我买不起服务器,不想研究WordPress,ect.无意间,博主发现了github居然可以实现自己梦想,加之网络上的资料偏旧(或则说github+jekyll ...