作者: 徐小夕

转发链接:https://mp.weixin.qq.com/s/XHwOHf498t6ZNfDLiwZ6Xg

序言

最近在做季度总结和技能分享,以是须要做个PPT, 来回顾这半年来的技能贡献. 但苦于mac上运行PPT那动听的流畅度, 成功的激起了笔者的强制症, 以是索性想办法通过技能的手段来做个网页版PPT, 这个时候笔者创造了reveal.js: 一个利用 HTML 措辞制作演示文稿的 Web 框架,支持插入多种格式的内容,并以类似 PPT 的形式呈现. 花了15分钟系统的调研了一下, 以为基本知足技能分享类PPT的哀求, 以是决定采取该方案来实现我的网页版PPT. 这里列一下笔者的技能调研方法论, 供大家参考:

html幻灯片效果代码应用revealjs制造精巧的网页版PPT Vue.js
(图片来自网络侵删)

以是笔者接下来大致按照以上几个衡量标准, 来带大家一起感想熏染一下如何快速通过reveal.js实现一个极具动感的PPT.

正文

首先笔者先来谈谈PPT的不敷(非专业角度, 技能视角):

PPT虽然强大,但霸占了磁盘的大量空间,运行时内存占用也不小;而且在 mac上跑 PPT 来就像乘上了印度的绿皮小火车。
随着 mac 的遍及和动画技能的发展,诸如Keynote、Prezi 等新秀陆续涌现,它们不仅轻量且可以实现各种炫目的动画效果.制作须要花费大量韶光, 受平台限定

以是对付不熟习PPT套路的技能事情者来说, 每每很难快速制作出精美的PPT.

接下来我们再看看reveal.js的上风.

reveal.js可以把 Markdown 文件转为类似 PPT 的演示文稿,轻快省力,减少排版上的韶光,让演讲者更专于笔墨内容;同时,也得到 PPT 所不具有的灵巧性制作发布灵巧、不限运用,不限平台, 只需修正或打开 HTML 文件丰富的特性,支持过渡动画、代码高亮、视频背景、Markdown 语法、导出 PDF 等极度轻量,占用空间和内存少

说了这么多revealjs的优点,接下来我们就来学习如何利用它吧.

reveal.js使先容以及核心api

作为一名前端工程师, 我们很随意马虎把reveal.js集成到我们的vue或者react项目中, 但是作为演讲类型的项目,我们直接用最原始的办法实现即可,首先我们须要引入干系的文件,详细可参考官网所说的步骤去做: revealjs.com/. 最大略的利用办法如下:

<html&gt; <head> <link rel="stylesheet" href="dist/reveal.css"> <link rel="stylesheet" href="dist/theme/white.css"> </head> <body> <div class="reveal"> <div class="slides"> <section>Slide 1</section> <section>Slide 2</section> </div> </div> <script src="dist/reveal.js"></script> <script> Reveal.initialize(); </script> </body></html>复制代码

这样通过短短几行代码, 我们就能实现一个两页的PPT.

当然我们还能实现更加自由的演示动画, 父子嵌套构造, 专场动画等. 接下来我们先容几个核心API.

父子嵌套

父子嵌套紧张是一个PPT主题可能包含很多子主题, 要想实现父子主题分明的演示文档, 在reveal.js也很好实现, 只须要在section内部再包裹section标签即可. 代码如下:

<div class="reveal"><div class="slides"><section>Slide 1</section><section> <section> Slide 2-1 </section> <section> Slide 2-2 </section> </section> <section>Slide 3</section></div></div>复制代码

效果如下图所示:

嵌入脚本

我们都知道技能类PPT肯定离不开代码, 我们在reveal.js中可以很随意马虎的展示我们的代码,并且支持多种措辞, 其框架底层集成了 业界比较有名的highlight.js. 利用办法如下:

利用Markdown

Markdown是技能事情者常用的编写文档的工具, revealjs同样也支持利用Markdown的办法来编写PPT, 是不是很贴切? 详细办法如下:

动态背景Backgrounnds

revealjs支持对每一页幻灯片利用自定义背景(包括视频).我们只须要在section标签中利用data-background即可, 并且支持背景透明. 详细demo如下:

Backgrounnds一共有如下属性可以利用:

data-background-image 当前页的背景图片地址data-background-size 背景的大小data-background-position 背景位置data-background-repeat 背景的重复办法data-background-opacity 背景透明度data-background-video 视频背景的地址data-background-video-loop 视频背景的循环模式data-background-iframe 背景为iframe的url地址data-background-interactive 是否能与iframe的内容交互Fragments

Fragments用来高亮或者渐进式的展现元素.每一个包含fragment类名的元素都被视为渐进的元素, 它们会通过点击下一步来依次呈现在幻灯片中.

定制主题Theme

reveal.js供应了很多种不同风格的主题, 我们只须要引入不同的css即可. 包括玄色(black), 白色(white), league, beige, 天空(sky), 夜晚(night)等主题.大家可以自行感想熏染一下.

Transitions转场动画

不同幻灯片进入页面的动画办法我们可以利用Transitions来设定. 以下是供应的几种默认转场动画:

fade 淡出slide 滑出convex 凸面旋转concave 凹面旋转zoom 放大

详细demo实现如下:

<div class="reveal"><div class="slides"><section>Slide 1</section><section> <section data-transition="fade"> Slide 2-1 </section> <section data-transition="convex"> Slide 2-2 </section> <section data-transition="concave"> Slide 2-3 </section> <section data-transition="zoom"> Slide 2-4 </section> </section> <section>Slide 3</section></div></div>复制代码导出PDF

导出PDF作为一个附加功能也算是比较知心了,如果想理解利用办法可以参考

https://revealjs.com/pdf-export/

接下来我们就来实现一个动态的PPT demo, 供大家学习参考.

reveal.js制作一个一个动感PPT

代码如下:

<body><div class="reveal"><div class="slides"><section data-background-image="./img/z1.png" data-background-opacity=".4"> <h1>趣谈前端</h1> <p>徐小夕</p> </section><section> <section data-transition="fade" data-background-color="orange"> <h1>趣谈前端 Javascript</h1> </section> <section data-transition="convex" data-background-color="green"> <h1>趣谈前端 Vue</h1> </section> <section data-transition="concave" data-background-color="#61dafb"> <h1>趣谈前端 React</h1> </section> <section data-transition="zoom" data-background-color="#b32535"> <h1>趣谈前端 Angular</h1> </section> </section> <section> <h1>NodeJS</h1> <pre><code data-trim data-noescape> const fs = require('fs') const Koa = require('koa') const app = new Koa() </code></pre> </section> <section> <h3>设计模式</h3> <p class="fragment">不雅观察者模式</p> <p class="fragment">工厂模式</p> <p class="fragment">迭代器模式</p> </section> <section> <h4>数据构造与算法</h4> </section></div></div><script src="dist/reveal.js"></script><script src="plugin/notes/notes.js"></script><script src="plugin/markdown/markdown.js"></script><script src="plugin/highlight/highlight.js"></script><script>// More info about initialization & config:// - https://revealjs.com/initialization/// - https://revealjs.com/config/Reveal.initialize({hash: true,// Learn about plugins: https://revealjs.com/plugins/plugins: [ RevealMarkdown, RevealHighlight, RevealNotes ]});</script></body>推举JavaScript学习干系文章

《15个大略的JS编码标准让你的代码更整洁》

《Node 中的全链路式日志标记及处理》

《利用 Node 开拓做事器项目时如何高效地打日志?》

《一文带你搞懂前端如何玩转 Word 文档》

《高频口试题:JavaScript事宜循环机制解析》

《手写一个Promise/A+ 完美通过官方872个测试用例》

《你不知道的前端图片处理(上)》

《你不知道的前端图片处理(下)》

《钉钉前端-如何设计前端实时剖析及报警系统》

《前端实现最佳截图方案(上)》

《前端实现最佳截图方案(下)》

《Node.js 实现抢票小工具&短信关照提醒(上)「干货」》

《Node.js 实现抢票小工具&短信关照提醒(下)「干货」》

《那些不常见,但却非常实用的JS知识点(上)》

《那些不常见,但却非常实用的JS知识点(下)》

《如何为团队定制自己的 Node.js 框架?》

《细品原生JS从低级到高等知识点汇总(一)》

《细品原生JS从低级到高等知识点汇总(二)》

《细品原生JS从低级到高等知识点汇总(三)》

《细品原生JS从低级到高等知识点汇总(四)》

《学习 jQuery 源码整体架构,打造属于自己的 js 类库》

《细说RTSP实现前端直播流探索记「干货」》

《一文带你搞懂前端上岸设计》

《利用 Node.js 将图片中的苹果变成橘子「实践」》

《基于Canvas实现的高斯模糊(上)「JS篇」》

《基于Canvas实现的高斯模糊(下)「JS篇」》

《由浅入深,66条JavaScript口试知识点(一)》

《由浅入深,66条JavaScript口试知识点(二)》

《由浅入深,66条JavaScript口试知识点(三)》

《由浅入深,66条JavaScript口试知识点(四)》

《由浅入深,66条JavaScript口试知识点(五)》

《由浅入深,66条JavaScript口试知识点(六)》

《由浅入深,66条JavaScript口试知识点(七)》

《为什么 setTimeout 有最小时延 4ms ?》

《如何处理 Node.js 中涌现的未捕获非常?》

《Angular v10.0.0 正式发布,不再支持 IE9/10》

《基于 Docker 的 SSR 持续开拓集成环境实践》

《细聊图解webpack 指南手册》

《一文带你彻底搞懂 NPM 知识点「进阶篇」》

《细聊webpack性能优化面面不雅观》

《JS实现各种日期操作方法汇总》

《「实践」细聊前端性能优化总结》

《「实践」浏览器中的画中画(Picture-in-Picture)模式及其 API》

《「多图」一文带你彻底搞懂 Web Workers (上)》

《「多图」一文带你彻底搞懂 Web Workers (中)》

《深入细聊前端下载总结「干货」》

《细品西瓜播放器功能剖析(上)「实践」》

《细品西瓜播放器功能剖析(下)「实践」》

《细聊50道JavaScript根本口试题「附答案」》

《webpack4主流程源码讲授以及动手实现一个大略的webpack(上)》

《webpack4主流程源码讲授以及动手实现一个大略的webpack(下)》

《细聊前端架构师的视野》

《细聊运用处景再谈防抖和节流「进阶篇」》

《前端埋点统一接入方案实践》

《细聊微内核架构在前真个运用「干货」》

《一种高性能的Tree组件实现方案「干货」》

《攻击的JAMStack》

《前后端全部用 JS 开拓是什么体验(Hybrid + Egg.js履历分享)上》

《前后端全部用 JS 开拓是什么体验(Hybrid + Egg.js履历分享)中》

《前后端全部用 JS 开拓是什么体验(Hybrid + Egg.js履历分享)下》

《一文带你搞懂 babel-plugin-import 插件(上)「源码解析」》

《一文带你搞懂 babel-plugin-import 插件(下)「源码解析」》

《JavaScript常用API合集汇总「值得收藏」》

《推举10个常用的图片处理小帮手(上)「值得收藏」》

《推举10个常用的图片处理小帮手(下)「值得收藏」》

《JavaScript 中ES6代理的实际用例》

《12 个实用的前端开拓技巧总结》

《一文带你搞懂搭建企业级的 npm 私有仓库》

《教你如何利用内联框架元素 IFrames 的沙箱属性提高安全性?》

《细说前端开拓UI公共组件的新认识「实践」》

《细说DOM API中append和appendChild的三个不同点》

《细品淘系大佬讲前端新人如何上王者「干货」》

《一文带你彻底办理背景跟随弹窗滚动问题「干货」》

《推举常用的5款代码比较工具「值得收藏」》

《Node.js实现将笔墨与图片合成技巧》

《爱奇艺云剪辑Web真个技能实现》

《我再也不敢说我会写前端 Button组件「实践」》

《NodeX Component - 滴滴集团 Node.js 生态组件体系「实践」》

《Node Buffers 完全指南》

《推举18个webpack精美插件「干货」》

《前端开拓须要理解常用7种JavaScript设计模式》

《浅谈浏览器架构、单线程js、事宜循环、行列步队、宏任务和微任务》

《了不起的 Webpack HMR 学习指南(上)「含源码讲解」》

《了不起的 Webpack HMR 学习指南(下)「含源码讲解」》

《10个打开了我新天下大门的 WebAPI(上)「实践」》

《10个打开了我新天下大门的 WebAPI(中)「实践」》

《10个打开了我新天下大门的 WebAPI(下)「实践」》

《「图文」ESLint 在中大型团队的运用实践》

《Deno是代码的浏览器,你认同吗?》

《前端存储除了 localStorage 还有啥?》

《Javascript 多线程编程​的前世今生》

《微前端方案 qiankun(实践及总结)》

《「图文」V8 垃圾回收原来这么大略?》

《Webpack 5模块联邦引发微前真个革命?》

《基于 Web 真个人脸识别身份验证「实践」》

《「前端进阶」高性能渲染十万条数据(韶光分片)》

《「前端进阶」高性能渲染十万条数据(虚拟列表)》

《图解 Promise 实现事理(一):根本实现》

《图解 Promise 实现事理(二):Promise 链式调用》

《图解 Promise 实现事理(三):Promise 原型方法实现》

《图解 Promise 实现事理(四):Promise 静态方法实现》

《实践教你从零构建前端 Lint 事情流「干货」》

《高性能多级多选级联组件开拓「JS篇」》

《深入浅出讲解Node.js CLI 工具最佳实战》

《延迟加载图像以提高Web网站性能的五种方法「实践」》

《比较 JavaScript 工具的四种办法「实践」》

《利用Service Worker让你的 Web 运用为虎傅翼(上)「干货」》

《利用Service Worker让你的 Web 运用为虎傅翼(中)「干货」》

《利用Service Worker让你的 Web 运用为虎傅翼(下)「干货」》

《前端如何一次性处理10万条数据「进阶篇」》

《推举三款正则可视化工具「JS篇」》

《如何让用户选择是否离开当前页面?「JS篇」》

《JavaScript开拓职员更喜好Deno的五大缘故原由》

《仅用18行JavaScript实现一个倒数计时器》

《图文细说JavaScript 的运行机制》

《一个轻量级 JavaScript 全文搜索库,轻松实现站内离线搜索》

《推举Web程序员常用的15个源代码编辑器》

《10个实用的JS技巧「值得收藏」》

《细品269个JavaScript小函数,让你少加班熬夜(一)「值得收藏」》

《细品269个JavaScript小函数,让你少加班熬夜(二)「值得收藏」》

《细品269个JavaScript小函数,让你少加班熬夜(三)「值得收藏」》

《细品269个JavaScript小函数,让你少加班熬夜(四)「值得收藏」》

《细品269个JavaScript小函数,让你少加班熬夜(五)「值得收藏」》

《细品269个JavaScript小函数,让你少加班熬夜(六)「值得收藏」》

《深入JavaScript教你内存泄露如何戒备》

《手把手教你7个有趣的JavaScript 项目-上「附源码」》

《手把手教你7个有趣的JavaScript 项目-下「附源码」》

《JavaScript 利用 mediaDevices API 访问摄像头自拍》

《手把手教你前端代码如何做缺点上报「JS篇」》

《一文让你彻底搞懂移动前端和Web 前端差异在哪里》

《63个JavaScript 正则大礼包「值得收藏」》

《提高你的 JavaScript 技能10 个问答题》

《JavaScript图表库的5个首选》

《一文彻底搞懂JavaScript 中Object.freeze与Object.seal的用法》

《可视化的 JS:动态图演示 - 事宜循环 Event Loop的过程》

《教你如何用动态方案和贪心算法实现前端瀑布流布局「实践」》

《可视化的 js:动态图演示 Promises & Async/Await 的过程》

《原生JS封装拖动验证滑块你会吗?「实践」》

《如何实现高性能的在线 PDF 预览》

《细说利用字体库加密数据-仿58同城》

《Node.js要完了吗?》

《Pug 3.0.0正式发布,不再支持 Node.js 6/8》

《纯JS手写轮播图(代码逻辑清晰,普通易懂)》

《JavaScript 20 年 中文版之创立标准》

《值得收藏的前端常用60余种工具方法「JS篇」》

《箭头函数和常规函数之间的 5 个差异》

《通过发布/订阅的设计模式搞懂 Node.js 核心模块 Events》

《「前端篇」不再为正则烦恼》

《「速围」Node.js V14.3.0 发布支持顶级 Await 和 REPL 增强功能》

《深入细品浏览器事理「流程图」》

《JavaScript 已进入第三个时期,未来将何去何从?》

《前端上传前预览文件 image、text、json、video、audio「实践」》

《深入细品 EventLoop 和浏览器渲染、帧动画、空闲回调的关系》

《推举13个有用的JavaScript数组技巧「值得收藏」》

《前端必备根本知识:window.location 详解》

《不要再依赖CommonJS了》

《犀牛书作者:最该忘却的JavaScript特性》

《36个事情中常用的JavaScript函数片段「值得收藏」》

《Node + H5 实现大文件分片上传、断点续传》

《一文理解文件上传全过程(1.8w字深度解析)「前端进阶必备」》

《【实践总结】关于小程序解脱枷锁实现批量上传》

《手把手教你前真个各种文件上传攻略和大文件断点续传》

《字节跳动口试官:请你实现一个大文件上传和断点续传》

《谈谈前端关于文件上传下载那些事【实践】》

《手把手教你如何编写一个前端图片压缩、方向纠正、预览、上传插件》

《最全的 JavaScript 模块化方案和工具》

《「前端进阶」JS中的内存管理》

《JavaScript正则深入以及10个非常故意思的正则实战》

《前端口试者常常忽略的一道JavaScript 口试题》

《一行JS代码实现一个大略的模板字符串更换「实践」》

《JS代码是如何被压缩的「前端高等进阶」》

《前端开拓规范:命名规范、html规范、css规范、js规范》

《【规范篇】前端团队代码规范最佳实践》

《100个原生JavaScript代码片段知识点详细汇总【实践】》

《关于前端174道 JavaScript知识点汇总(一)》

《关于前端174道 JavaScript知识点汇总(二)》

《关于前端174道 JavaScript知识点汇总(三)》

《几个非常故意思的javascript知识点总结【实践】》

《都2020年了,你还不会JavaScript 装饰器?》

《JavaScript实现图片合成下载》

《70个JavaScript知识点详细总结(上)【实践】》

《70个JavaScript知识点详细总结(下)【实践】》

《开源了一个 JavaScript 版敏感词过滤库》

《送你 43 道 JavaScript 口试题》

《3个很棒的小众JavaScript库,你值得拥有》

《手把手教你深入巩固JavaScript知识体系【思维导图】》

《推举7个很棒的JavaScript产品步骤勾引库》

《Echa哥教你彻底弄懂 JavaScript 实行机制》

《一个合格的中级前端工程师须要节制的 28 个 JavaScript 技巧》

《深入解析高频项目中利用到的知识点汇总【JS篇】》

《JavaScript 工具函数大全【新】》

《从JavaScript中看设计模式(总结)》

《身份证号码的正则表达式及验证详解(JavaScript,Regex)》

《浏览器中实现JavaScript计时器的4种创新办法》

《Three.js 动效方案》

《手把手教你常用的59个JS类方法》

《127个常用的JS代码片段,每段代码花30秒就能看懂-【上】》

《深入浅出讲解 js 深拷贝 vs 浅拷贝》

《手把手教你JS开拓H5游戏【消灭星星】》

《深入浅出讲解JS中this/apply/call/bind奥妙用法【实践】》

《手把手教你全方位解读JS中this真正含义【实践】》

《书到用时方恨少,一大波JS开拓工具函数来了》

《干货满满!如何优雅简洁地实现时钟翻牌器(支持JS/Vue/React)》

《手把手教你JS 异步编程六种方案【实践】》

《让你减少加班的15条高效JS技巧知识点汇总【实践】》

《手把手教你JS开拓H5游戏【黄金矿工】》

《手把手教你JS实现监控浏览器高下旁边滚动》

《JS 经典实例知识点整理汇总【实践】》

《2.6万字JS干货分享,带你领略前端魅力【根本篇】》

《2.6万字JS干货分享,带你领略前端魅力【实践篇】》

《大略几步让你的 JS 写得更俊秀》

《恭喜你得到治疗JS this的详细药方》

《谈谈前端关于文件上传下载那些事【实践】》

《口试中教你绕过关于 JavaScript 浸染域的 5 个坑》

《Jquery插件(常用的插件库)》

《【JS】如何防止重复发送ajax要求》

《JavaScript+Canvas实现自定义画板》

《Continuation 在 JS 中的运用「前端篇」》

作者: 徐小夕

转发链接:https://mp.weixin.qq.com/s/XHwOHf498t6ZNfDLiwZ6Xg