reveal.js是一种力量jQueryJavaScript库,用于在网页上创建美观、可触摸、功能齐全、类似powerpoint的HTML5演示。
1.下载软件包,并在HTML文档中加载必要的JavaScript和CSS文件。
<link rel="stylesheet" href="dist/reveal.css" /> <script src="dist/reveal.js"></script>
2.在文档中加载您选择的主题:
<link rel="stylesheet" href="dist/theme/beige.css" /> <link rel="stylesheet" href="dist/theme/black.css" /> <link rel="stylesheet" href="dist/theme/blood.css" /> <link rel="stylesheet" href="dist/theme/league.css" /> <link rel="stylesheet" href="dist/theme/moon.css" /> <link rel="stylesheet" href="dist/theme/night.css" /> <link rel="stylesheet" href="dist/theme/serif.css" /> <link rel="stylesheet" href="dist/theme/simple.css" /> <link rel="stylesheet" href="dist/theme/sky.css" /> <link rel="stylesheet" href="dist/theme/solarized.css" /> <link rel="stylesheet" href="dist/theme/white.css" />
3.在文档中加载您选择的插件:
<!-- Syntax highlighting --> <script src="plugin/highlight/highlight.js"></script> <!-- Write content using Markdown --> <script src="plugin/markdown/markdown.js"></script> <!-- Render math equations --> <script src="plugin/math/math.js"></script> <!-- Show a speaker view in a separate window --> <script src="plugin/notes/notes.js"></script> <!-- Press CTRL+Shift+F to search slide content --> <script src="plugin/highlight/highlight.js"></script> <!-- Alt+click to zoom in on elements --> <script src="plugin/zoom/zoom.js"></script>
4.您也可以使用NPM安装和导入reveal.js。
# Yarn $ yarn add reveal.js # NPM $ npm i reveal.js --save
import Reveal from 'reveal.js'; import Markdown from 'reveal.js/plugin/markdown/markdown.esm.js'; // .. more plugins here
5.初始化reveal.js,我们就可以开始了。
let instance = new Reveal({ // ... options here ... }) instance.initialize();
6.根据您的需要加载一个外部版本。所有可能的扩展:
// Browser instance.initialize({ plugins: [ RevealMarkdown ] }); // ES Module instance.initialize({ plugins: [ Markdown ] });
7.在演示文稿中插入您自己的幻灯片并完成。
<div class="reveal"> <div class="slides"> <section>Slide 1</section> <section> <section>Vertical Slide 2-1</section> <section>Vertical Slide 2-2</section> </section> <section>Slide 3</section> ... </div> </div>
8.或者使用Markdown编写内容。
<section data-markdown> <textarea data-template> Markdown Here </textarea> </section> <section data-markdown="example.md" data-separator="^\n\n\n" data-separator-vertical="^\n\n" data-separator-notes="^Note:" data-charset="iso-8859-15"> Or load from an external Markdown file </section> <section data-markdown> <script type="text/template"> - Fragment 1 - Fragment 2 - Fragment 3 </script> </section> <section data-markdown> <script type="text/template"> <!-- .slide: data-background="#ff0000" --> Markdown Here </script> </section>
9.可用于自定义每张幻灯片的HTML数据属性。
<!-- Custom Background Color --> <section data-background-color="black"> ... </section> <!-- Custom Background Image --> <section data-background-image="1.png" data-background-size="100px" data-background-repeat="repeat" data-background-position="center" data-background-opacity="1"> ... </section> <!-- Gradient Background --> <section data-background-gradient="linear-gradient(to bottom, #283b95, #17b2c3)"> ... </section> <!-- Custom Background Video --> <section data-background-video="1.mp4" data-background-size="cover" data-background-opacity="1" data-background-video-loop data-background-video-muted> ... </section> <!-- Iframe Backgrounds --> <section data-background-iframe="https://jqueryscript.net" data-background-interactive> </section> <!-- Video Autoplay --> <section> <video data-autoplay src="1.mp4"></video> </section> <!-- Lazy Load Media --> <section> <img data-src="image.png"> <iframe data-src="https://www.jqueryscript.net"></iframe> <video> <source data-src="video.webm" type="video/webm" /> <source data-src="video.mp4" type="video/mp4" /> </video> </section> <!-- Lazy Load Iframes --> <section> <iframe data-src="https://www.jqueryscript.net" data-preload></iframe> </section> <!-- Source Code --> <section> <pre> <code data-trim data-noescape data-line-numbers="3,8-10"> ... code here </code> </pre> </section> <!-- Hidden Slides --> <section data-visibility="hidden"> Hidden Slide </section> <!-- Uncounted Slides --> <section data-visibility="uncounted"> Uncounted Slide </section> <!--Transitions --> <section data-transition="zoom" data-transition-speed="fast"> ... </section> <section data-transition="fade" data-transition-speed="slow"> ... </section> <section data-transition="slide"> ... </section> <section data-transition="convex"> ... </section> <section data-transition="concave"> ... </section> <!-- Autoplay --> <section data-auto-animate> ... </section> <!-- Auto Slide --> <section data-autoslide="2000"> ... </section> <!-- Prevent Swipe --> <section> <p data-prevent-swipe> Can't change slides by swiping across this element. </p> </section>
10.用于自定义演示文稿的所有默认配置选项。
instance.initialize({ // Display presentation control arrows controls: true, // Help the user learn the controls by providing hints, for example by // bouncing the down arrow when they first encounter a vertical slide controlsTutorial: true, // Determines where controls appear, "edges" or "bottom-right" controlsLayout: 'bottom-right', // Visibility rule for backwards navigation arrows; "faded", "hidden" // or "visible" controlsBackArrows: 'faded', // Display a presentation progress bar progress: true, // Display the page number of the current slide // - true: Show slide number // - false: Hide slide number // // Can optionally be set as a string that specifies the number formatting: // - "h.v": Horizontal . vertical slide number (default) // - "h/v": Horizontal / vertical slide number // - "c": Flattened slide number // - "c/t": Flattened slide number / total slides // // Alternatively, you can provide a function that returns the slide // number for the current slide. The function should take in a slide // object and return an array with one string [slideNumber] or // three strings [n1,delimiter,n2]. See #formatSlideNumber(). slideNumber: false, // Can be used to limit the contexts in which the slide number appears // - "all": Always show the slide number // - "print": Only when printing to PDF // - "speaker": Only in the speaker view showSlideNumber: 'all', // Use 1 based indexing for # links to match slide number (default is zero // based) hashOneBasedIndex: false, // Add the current slide number to the URL hash so that reloading the // page/copying the URL will return you to the same slide hash: false, // Flags if we should monitor the hash and change slides accordingly respondToHashChanges: true, // Push each slide change to the browser history. Implies `hash: true` history: false, // Enable keyboard shortcuts for navigation keyboard: true, // Optional function that blocks keyboard events when retuning false // // If you set this to 'foucsed', we will only capture keyboard events // for embdedded decks when they are in focus keyboardCondition: null, // Disables the default reveal.js slide layout (scaling and centering) // so that you can use custom CSS layout disableLayout: false, // Enable the slide overview mode overview: true, // Vertical centering of slides center: true, // Enables touch navigation on devices with touch input touch: true, // Loop the presentation loop: false, // Change the presentation direction to be RTL rtl: false, // Changes the behavior of our navigation directions. // // "default" // Left/right arrow keys step between horizontal slides, up/down // arrow keys step between vertical slides. Space key steps through // all slides (both horizontal and vertical). // // "linear" // Removes the up/down arrows. Left/right arrows step through all // slides (both horizontal and vertical). // // "grid" // When this is enabled, stepping left/right from a vertical stack // to an adjacent vertical stack will land you at the same vertical // index. // // Consider a deck with six slides ordered in two vertical stacks: // 1.1 2.1 // 1.2 2.2 // 1.3 2.3 // // If you're on slide 1.3 and navigate right, you will normally move // from 1.3 -> 2.1. If "grid" is used, the same navigation takes you // from 1.3 -> 2.3. navigationMode: 'default', // Randomizes the order of slides each time the presentation loads shuffle: false, // Turns fragments on and off globally fragments: true, // Flags whether to include the current fragment in the URL, // so that reloading brings you to the same fragment position fragmentInURL: true, // Flags if the presentation is running in an embedded mode, // i.e. contained within a limited portion of the screen embedded: false, // Flags if we should show a help overlay when the question-mark // key is pressed help: true, // Flags if it should be possible to pause the presentation (blackout) pause: true, // Flags if speaker notes should be visible to all viewers showNotes: false, // Global override for autolaying embedded media (video/audio/iframe) // - null: Media will only autoplay if data-autoplay is present // - true: All media will autoplay, regardless of individual setting // - false: No media will autoplay, regardless of individual setting autoPlayMedia: null, // Global override for preloading lazy-loaded iframes // - null: Iframes with data-src AND data-preload will be loaded when within // the viewDistance, iframes with only data-src will be loaded when visible // - true: All iframes with data-src will be loaded when within the viewDistance // - false: All iframes with data-src will be loaded only when visible preloadIframes: null, // Can be used to globally disable auto-animation autoAnimate: true, // Optionally provide a custom element matcher that will be // used to dictate which elements we can animate between. autoAnimateMatcher: null, // Default settings for our auto-animate transitions, can be // overridden per-slide or per-element via data arguments autoAnimateEasing: 'ease', autoAnimateDuration: 1.0, autoAnimateUnmatched: true, // CSS properties that can be auto-animated. Position & scale // is matched separately so there's no need to include styles // like top/right/bottom/left, width/height or margin. autoAnimateStyles: [ 'opacity', 'color', 'background-color', 'padding', 'font-size', 'line-height', 'letter-spacing', 'border-width', 'border-color', 'border-radius', 'outline', 'outline-offset' ], // Controls automatic progression to the next slide // - 0: Auto-sliding only happens if the data-autoslide HTML attribute // is present on the current slide or fragment // - 1+: All slides will progress automatically at the given interval // - false: No auto-sliding, even if data-autoslide is present autoSlide: 0, // Stop auto-sliding after user input autoSlideStoppable: true, // Use this method for navigation when auto-sliding (defaults to navigateNext) autoSlideMethod: null, // Specify the average time in seconds that you think you will spend // presenting each slide. This is used to show a pacing timer in the // speaker view defaultTiming: null, // Enable slide navigation via mouse wheel mouseWheel: false, // Opens links in an iframe preview overlay // Add `data-preview-link` and `data-preview-link="false"` to customise each link // individually previewLinks: false, // Exposes the reveal.js API through window.postMessage postMessage: true, // Dispatches all reveal.js events to the parent window through postMessage postMessageEvents: false, // Focuses body when page changes visibility to ensure keyboard shortcuts work focusBodyOnPageVisibilityChange: true, // Transition style transition: 'slide', // none/fade/slide/convex/concave/zoom // Transition speed transitionSpeed: 'default', // default/fast/slow // Transition style for full page slide backgrounds backgroundTransition: 'fade', // none/fade/slide/convex/concave/zoom // The maximum number of pages a single slide can expand onto when printing // to PDF, unlimited by default pdfMaxPagesPerSlide: Number.POSITIVE_INFINITY, // Prints each fragment on a separate slide pdfSeparateFragments: true, // Offset used to reduce the height of content within exported PDF pages. // This exists to account for environment differences based on how you // print to PDF. CLI printing options, like phantomjs and wkpdf, can end // on precisely the total height of the document whereas in-browser // printing has to end one pixel before. pdfPageHeightOffset: -1, // Number of slides away from the current that are visible viewDistance: 3, // Number of slides away from the current that are visible on mobile // devices. It is advisable to set this to a lower number than // viewDistance in order to save resources. mobileViewDistance: 2, // The display mode that will be used to show slides display: 'block', // Hide cursor if inactive hideInactiveCursor: true, // Time before the cursor is hidden (in ms) hideCursorTime: 5000 });
11.API方法。
// Navigate to a specific slide Reveal.slide( indexh, indexv, indexf ); // Relative navigation Reveal.left(); Reveal.right(); Reveal.up(); Reveal.down(); Reveal.prev(); Reveal.next(); // Fragment navigation Reveal.prevFragment(); Reveal.nextFragment(); // Checks which directions we can navigate towards // {top: false, right: true, bottom: false, left: false} Reveal.availableRoutes(); // Call this if you add or remove slides to update controls, progress, etc Reveal.sync(); // Call this to update the presentation scale based on available viewport Reveal.layout(); // Randomize the order of slides Reveal.shuffle(); // Returns the present configuration options Reveal.getConfig(); // Fetch the current scale of the presentation Reveal.getScale(); // Returns an object with the scaled presentationWidth & presentationHeight Reveal.getComputedSlideSize(); // Coordinates of the slide (e.g. { h: 0, v: 0, f: 0 }) Reveal.getIndices(slide=currentSlide); // (0 == first slide, 1 == last slide) Reveal.getProgress(); // Returns the speaker notes for the slide Reveal.getSlideNotes(slide=currentSlide); // Retrieves the previous and current slide elements Reveal.getPreviousSlide(); Reveal.getCurrentSlide(); // Returns an all horizontal/vertical slides in the deck Reveal.getHorizontalSlides(); Reveal.getVerticalSlides(); // Total number of slides Reveal.getTotalSlides(); Reveal.getSlidePastCount(); // Array of all slides Reveal.getSlides(); // Checks if the presentation contains two or more // horizontal/vertical slides Reveal.hasHorizontalSlides(); Reveal.hasVerticalSlides(); // Checks if the deck has navigated on either axis at least once Reveal.hasNavigatedHorizontally(); Reveal.hasNavigatedVertically(); Reveal.isFirstSlide(); Reveal.isLastSlide(); Reveal.isVerticalSlide(); // Shows a help overlay with keyboard shortcuts, optionally pass true/false // to force on/off Reveal.toggleHelp(); // Toggle presentation states, optionally pass true/false to force on/off Reveal.toggleOverview(); Reveal.toggleAutoSlide(); Reveal.togglePause(); Reveal.isOverview(); Reveal.isAutoSliding(); Reveal.isPaused(); // Retrieve key DOM elements Reveal.getRevealElement(); Reveal.getSlidesElement(); Reveal.getViewportElement(); // load an external URL Reveal.initialize({ url: 'https://example.com/my-reveal-presentation' }) // Destroy Reveal.destroy(); // Plugin API Reveal.hasPlugin( 'markdown' ) Reveal.getPlugin( 'markdown' ) Reveal.getPlugins()
12.事件。
Reveal.on('ready', event => { // event.currentSlide, event.indexh, event.indexv }); Reveal.on('slidechanged', event => { // event.previousSlide, event.currentSlide, event.indexh, event.indexv }); Reveal.on('slidetransitionend', event => { // event.currentSlide }); Reveal.on('resize', event => { // event.scale, event.oldScale, event.size }); Reveal.on('overviewshown', event => { // ... }); Reveal.on('overviewhidden', event => { // ... }); Reveal.on('fragmentshown', event => { // event.fragment }); Reveal.on('fragmenthidden', event => { // event.fragment }); Reveal.on('autoslideresumed', event => { // ... }); Reveal.on('autoslidepaused', event => { // ... });
版本4.5.0(2023-04-13)
版本4.4.0(2022-10-17)
第4.3.1版(2022-03-21)
版本4.3.0(2022-02-28)
v4.2.0 (2021-11-14)
v4.1.2 (2021-06-09)
v4.1.1 (2021-05-21)
版本4.1.0(2020-10-12)
版本4.0.2(2020-05-29)
版本4.0.1(2020-05-25)