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

  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. Ubuntu中的Gif动画录制工具

    为了在随笔中插入gif动态图Windows系统上可以使用ScreenToGif这个非常好用的小软件,在Ubuntu系统中选择也很多(可以参考最下面的链接),下面介绍两款ubuntu系统中的录屏软件: ...

  2. python之模块chunk,了解即可

    # -*- coding: utf-8 -*-#python 27#xiaodeng#python之模块chunk# chunk模块专用于读取TIFF格式的文件,打开应当使用二进制模式 #TIFF:标 ...

  3. Spring+Quartz实现动态添加定时任务

    发布时间:2018-12-03   技术:spring4.0.2+quartz2.2.1   概述 在最近工作中,由于涉及到定时任务特别多,而这些工作又是由下属去完成的,在生成环境中经常会出现业务逻辑 ...

  4. android中的目录结构介绍

      Google Android手机的软件为了安全性和稳定性都是默认安装到手机内存里,但是手机内存有限,所以我们会做app2sd操作,来让我们安装的软件放到sd卡上,这个操作是需要rom的支持的.   ...

  5. [转]图解分布式一致性协议Paxos

    Paxos协议/算法是分布式系统中比较重要的协议,它有多重要呢? <分布式系统的事务处理>: Google Chubby的作者MikeBurrows说过这个世界上只有一种一致性算法,那就是 ...

  6. iphone 恢复出厂设置方法

    1.下载安装并打开itunes. 2.让手机进入恢复模式: 一.先长按住电源键,出现关机选项时,请滑动关机: 二.随后再按电源键开机,屏幕会出现苹果标志,不要松开电源键: 三.接着再按住主屏 Home ...

  7. 【MyBatis】MyBatis之别名typeAliases标签的使用

    <configuration> <typeAliases> <typeAlias alias="Dept" type="cn.xdl.ent ...

  8. 【HTML】网页中如何让DIV在网页滚动到特定位置时出现

    用js或者jquery比较好实现.但你要知道,滚动到哪个特定位置,例如滚动到一个标题h3那显示这个div,那么可以用jquery算这个h3距离网页顶部的距离:$("h3").off ...

  9. golang学习笔记---函数、方法和接口

    函数:对应操作序列,是程序的基本组成元素. 函数有具名和匿名之分:具名函数一般对应于包级的函数,是匿名函数的一种特例,当匿名函数引用了外部作用域中的变量时就成了闭包函数,闭包函数是函数式编程语言的核心 ...

  10. mysql-binlog_cache_size

    二进制日志缓冲区吗,默认是32k.该参数是基于会话的,不要设置过大. 当事务的记录大于设定的binlog_cache_size时,mysql会把缓冲区中的日志信息写入一个临时文件中,所以该值也不能设置 ...