The HTML Presentation Framework

Overview

reveal.js

Slides

reveal.js is an open source HTML presentation framework. It enables anyone with a web browser to create fully featured and beautiful presentations for free. Check out the live demo.

The framework comes with a broad range of features including nested slides, Markdown support, Auto-Animate, PDF export, speaker notes, LaTeX support, syntax highlighted code and much more.

Get Started

Documentation

The full reveal.js documentation is available at revealjs.com.

Online Editor

Want to create your presentation using a visual editor? Try the official reveal.js presentation platform for free at Slides.com. It's made by the same people behind reveal.js.

License

MIT licensed

Copyright (C) 2011-2020 Hakim El Hattab, https://hakim.se

Comments
  • MathJax 3.x compatibility issue

    MathJax 3.x compatibility issue

    MathJax 2.x uses URL configuration parameters e.g.:

    https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_CHTML
    

    In current 3.x this dispatch mechanism has been superseeded using e.g.:

    https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js
    

    MathJax.js is no longer present in 3.x. This works using the reveal MathJax plugin e.g.:

    math: {
        mathjax: 'mathjax/tex-mml-svg.js',
        config: 'x' // Obsolete dummy value.
    }
    

    However using »Inspect« Chromium shows the following JavaScript error:

    math.js:71 Uncaught TypeError: Cannot read property 'Config' of undefined
        at math.js:71
        at HTMLScriptElement.finish (math.js:43)
    

    Omitting config: 'x' completely does not help either.

    Technically it's a mere nuisance. But if you are chasing for errors this one is confusing. Making »config« an option rather than a mandatory property would help.

    opened by wirepatch 36
  • Vertically fill screen 100%?

    Vertically fill screen 100%?

    I have been playing with the CSS for this for days upon days now and have yet to be able to get the slides to fill the screen vertically. I tried adding a #reveal and .reveal in the css and sizing that, didn't work. I tried adding attributes to .reval .slides, couldn't get that to work.

    Has anyone been able to fill the vertical screen size 100%?

    question 
    opened by kapelskic 34
  • regression: controls disappear; don't account for header

    regression: controls disappear; don't account for header

    I have an HTML document with a header, with a menu in the header:

    <body>
      <header>...</header>
      <main class="reveal">
        <div class="slides">
        ...
        </div>
      </main>
    </body>
    

    On an old version of reveal.js, this worked just fine, and the controls appeared. You can see it here:

    https://confound.io/present/intro

    I'm developing a new site with an almost identical layout. I downloaded the latest reveal.js v3.8.0. Unfortunately, unless I'm mistaken, it seems to be calculating the size of the presentation without taking into consideration the height of the menu in the header. The controls disappear below the screen!

    As you can see from the link above, this was working fine in earlier versions. I have confirmed that reverting to a reveal.js from 2017 fixes the problem. I'll have to revert to the 2017 version, but unfortunately that means that I'll have to add back my linear navigation workaround for #1904.

    opened by garretwilson 30
  • Help with Master/Client presentation

    Help with Master/Client presentation

    I'm trying to use the client/master presentation "thing", however, for me this all very new! I have installed node.js, installed "npm install" and runned "node plugin/multiplex". It is also possible for me to run the presentation from the localhost.

    After this it goes "wrong" however, I use an FTP server to put my presentation online. But I'm not able to control this presentation or whatsoever! It is even possible to run this presentation manually (which isn't the purpose I guess). the presentation is on huubhoofs.eu.pn. So any advice is welcome!!! The only difference between the index.html from the internet with my localhost index.html is the configuration which is:

            Reveal.initialize({
                controls: false,
                progress: true,
                history: true,
                center: true,
                 history: true,
    
                theme: Reveal.getQueryHash().theme, // available themes are in /css/theme
                transition: Reveal.getQueryHash().transition || 'default', // default/cube/page/concave/zoom/linear/fade/none
    
                multiplex: {
                // Example values. Generate your own.
                secret: 13719205123578474166, // Obtained from the socket.io server. Gives this (the master) control of the presentation
                id: '01e56dfefbc7d9af', // Obtained from socket.io server
                url: 'huubhoofs.eu.pn:80' // Location of socket.io server
                },
    
                // Optional libraries used to extend on reveal.js
                dependencies: [
                    { src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
                    { src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
                    { src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
                    { src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
                    { src: 'plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
                    { src: '//cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.10/socket.io.min.js', async: true },
                    { src: 'plugin/multiplex/master.js', async: true },
                    { src: 'plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } }
                    // { src: 'plugin/search/search.js', async: true, condition: function() { return !!document.body.classList; } }
                    // { src: 'plugin/remotes/remotes.js', async: true, condition: function() { return !!document.body.classList; } }
                ]
            });
    

    Any help or further directions would be very welcome because I'm very enthousiastic about the whole program!

    Greetings,

    Huub

    opened by HHoofs 29
  • Change the style transition between two slides?

    Change the style transition between two slides?

    Is there any exemple of how can I change the default transition style for a specific slides? Can I define a "local transition style" between two slides?

    Thanks for advance!

    opened by xbelanch 29
  • New PDF export issue

    New PDF export issue

    I have been using, and loving, reveal.js and the pdf export functionality for a couple of weeks now, but something strange started happening yesterday, I think after a chrome update (I'm currently running Google Chrome version 33.0.1750.117). The issue is that the currently selected slide prints to pdf fine, but several slides before or after it end up blank or with just the background. After some number of slides it starts working as expected again. Just to check and see if it was my local copy somehow being corrupted, I printed the example presentation from the official site, and got this.

    https://www.dropbox.com/s/hg4hloglims45sp/reveal.pdf

    There are no errors in the javascript log, and everything looks normal except printing. I'm at a loss, any thoughts on how I might debug this?

    opened by trws 28
  • SVG animation

    SVG animation

    I build a lot of SVG files with Inkscape to display figures inside reveal.js slides. I wonder to know if there is a way to animate these SVG ?

    For example I would like to display a group in the SVG file first and then display another group by pressing "space" or "right arrow".

    Thank you

    question 
    opened by hadim 25
  • reveal.js 4.0.0

    reveal.js 4.0.0

    I've been hard at work on reveal.js 4.0.0 for a while now and wanted to share the progress so far. It's not ready to merge just yet, but it's getting close.

    The main changes in this release are:

    • New website, docs and logo https://revealjs.com
    • Modernized reveal.js core. The old reveal.js file with 6.2k lines of code (!) was refactored and split into ES modules.
    • You can now run multiple reveal.js presentations on the same page.
      import Reveal from 'reveal.js'
      let deck1 = new Reveal( document.querySelector( '.deck1' ) );
      let deck2 = new Reveal( document.querySelector( '.deck2' ) );
      deck1.initialize({ embedded: true });
      deck2.initialize({ embedded: true });
      
    • Converted all plugins to ES modules so that they can be bundled with reveal.js.
    • All plugins and reveal.js core are transpiled to ES5 for situations where you need to support older browsers.
    • Switched build systems from grunt to gulp (using rollup for bundling).
    • Added a major new Auto-Animate feature.
    • Added a new slidetransitionend event.
    • Reveal.add/removeEventListener -> Reveal.on/off.
    • Added support for code line numbers and highlights using Markdown
    • The initialize method now returns a promise that resolves when reveal.js has started Reveal.initialize().then( () => console.log( 'ready' ) ).
    • The highlight.js and marked libraries are now installed from npm. They were previously hard coded inside their corresponding plugins in this repository.

    There are a few breaking changes in this release:

    • All compiled assets (reveal.js, reveal.css, themes) have moved to /dist.
    • Print stylesheets are now baked into the reveal.css file so there is no need to separately include them in the presentation HTML.
    • The multiplex and server side speakers notes plugins have moved out to separate repos and can be installed via npm: https://github.com/reveal/multiplex https://github.com/reveal/notes-server

    Docs, upgrade instructions and a new revealjs.com will follow when it's ready to merge but hopefully this gives you an idea of what's to come! ✌️

    opened by hakimel 23
  • Integrating Mermaid diagrams into Markdown slides

    Integrating Mermaid diagrams into Markdown slides

    Hey guys,

    Any thoughts on integrating Mermaid (https://github.com/knsv/mermaid) into Markdown slides?

    Basically let's say I have a giant Markdown doc used for slides, with separators etc. How would I be able to add a Mermaid graph, like this:

    <div class="mermaid">
    graph LR;
        A[Hard edge]-->|Link text|B(Round edge);
        B-->C{Decision};
        C-->|One|D[Result one];
        C-->|Two|E[Result two];
    </div>
    

    without having reveal.js interpret and translate the stuff between the div's, and just pass the stuff in between straight to mermaid?

    plugin markdown 
    opened by velvia 23
  • display pacing advice based on slide timings

    display pacing advice based on slide timings

    Display advice on whether the current pace of the presentation is on track for the right timing, and if not, whether the presenter should speed up or has the luxury of slowing down.

    By default this assumes 120 seconds per slide, which can be a reasonable rule of thumb, but this can be configured by the defaultTiming parameter in the Reveal configuration block, and also per slide <section> by setting the data-timing attribute. Both values are the number of seconds.

    Here is a screenshot:

    pacing

    The pacing advice changes red when you are behind, and blue when ahead.

    feature 
    opened by aspiers 20
  • PDF export is broken : slides overlap

    PDF export is broken : slides overlap

    C.f. http://lab.hakim.se/reveal-js/?print-pdf Visible in Chrome 43 & Firefox 38. Sorry to not give more details, but I think the result after the link jump is self-explanatory. I have no idea what is causing this, maybe css/print/pdf.css is broken ?

    opened by Lucas-C 19
  • 2 synchronous video slides

    2 synchronous video slides

    I am trying to have 2 videos plays synchronously together in Reveal.js. The goal is to have 2 (or multiple videos) in the same slide.

    I want one video to be in the foreground and one in the background (hidden by the first video). Both videos start as the slide is shown, but when I go to the next slide I want the video in the foreground to get invisible and the second video to show.

    This could also work in another way. It does not have to be 2 videos on the same slide. Another way I imagine this could work is when I have the first slide I want the same video time be put on the second video. So if the first slide is shown for 20 seconds, skip the first 20 second on the video in the next slide.

    I have been using data-background-video before, but I fear that this will not work for what I am trying to achieve here.

    opened by WakanaYuki 0
  • Resolving gulp dependabot security errors

    Resolving gulp dependabot security errors

    If you, like me, love reveal.js but are annoyed by dependabot security alerts and like to fix them, I have good-ish news on the vulns it is flagging in glob-parent as pulled in transitively through gulp's dependencies. First off, Gulpjs is not going to address this directly: https://github.com/gulpjs/gulp/issues/2640, but per this stackoverflow: https://stackoverflow.com/questions/68333071/how-to-solve-this-npm-glob-parent-problem , you can hardwire the resolution of glob to an updated version, which does not appear to have any problems (testing on serving static reveal presentations, no testing on reveal.js server functionality, so ymmv).

    (not a bug, but I suppose with additional testing this could be baked in to reveal's package.json directly?)

    opened by joncamfield 0
  • How I can add slides dynamicaly

    How I can add slides dynamicaly

    image

    import Reveal from 'reveal.js';
    import Appearance from 'reveal.js-appearance/plugin/appearance/appearance.esm';
    
    let slideshow = new Reveal()
    slideshow.initialize({
        width: "100%",
        height:"100%",
        autoSlide: 5000,
        controls: false,
        progress: false,
        loop: true,
        appearance: {
            hideagain: true,
            delay: 300,
            appearevent: 'slidetransitionend',
            autoappear: false,
            autoelements: false,
            csspath: '',
            animatecsspath: {
                link : 'https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css',
                compat : 'https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.0.0/animate.compat.css',
            },
            compatibility: false,
            compatibilitybaseclass: 'animated'
        },
        plugins: [Appearance]
    });
    
    
    setInterval(() => {
    
        let url = $("#slides-status").data('url');
    
        $.ajax({
           url: url,
            success: (data) => {
                if(data.data.length > 0){
                    data.data.map((d) => {
                        slideshow.add(d);
                    });
                    slideshow.sync();
                }
            }
        });
    
    
    }, 5000);
    
    
    opened by MuhammadSaim 0
  • Hi,

    Hi,

      Hi,
    

    First of all thumbs up for this awesome tool ! I am using the zip archive and directly modifying the index.html in VSCode. It works great but sometimes it does not want to do what I want it to do. Sometimes this is due to mistakes in img names, sometimes for something else.

    Is there a way to debug the presentation (I know F12 but it does not warn me for example in case of missing file)?

    I have been crawling the web but surprisingly found nothing about this topic and it may be obvious. Sorry if it is indeed !

    Thanks in advance

    Originally posted by @Ca-ressemble-a-du-fake in https://github.com/hakimel/reveal.js/discussions/3306

    opened by grico95 0
  • Activate fragments at multiple indices

    Activate fragments at multiple indices

    Hi all,

    Is there any way to allow multiple values in data-fragment-index (e.g. comma separated like data-fragment-index="0,3,6") such that an HTML element can e.g. be highlighted only at some given (multiple) indices (here 0, 3 and 6) ?

    The patch seems related to https://github.com/hakimel/reveal.js/blob/56772afa32d481685157bc355422cb793f5a07ce/js/controllers/fragments.js#L110 where reference of some fragments would appear multiple times (would it work ?) and https://github.com/hakimel/reveal.js/blob/f6f657b627f9703e32414d8d3f16fb49d41031cb/js/reveal.js#L1987 where f would become a list, but as I don't know the structure of RevealJS I'm wondering about possible side effects on the rest of the code. Is this modification straight forward?

    Use case example

    In the following presentation, I would like to merge slides 3, 4 and 5 (which each have 3 fragments) into one slide

    https://jdhp-docs.gitlab.io/slides-jdhp-revealjs/jdhp/optimization_cem.html#/2

    that is to say, I would like to merge these slides into one that would look like this:

    <section>
    	<h2>Cross-Entropy Method</h2>
    
    	<p>At each iteration:</p>
    	<ol>
    		<li><span class="fragment highlight-current-red" data-fragment-index="0,3,6">Sample from the proposal distribution $P_{\vs{\theta}}$</span></li>
    		<li><span class="fragment highlight-current-red" data-fragment-index="1,4,7">Select best samples according to the objective function f</span></li>
    		<li><span class="fragment highlight-current-red" data-fragment-index="2,5,8">Update the proposal distribution to fit the best samples</span></li>
    	</ol>
    
    	<div class="r-stack">
    		<img src="assets/optimization_cem_1.png" width="400" class="fragment current-visible" data-fragment-index="0">
    		<img src="assets/optimization_cem_2.png" width="400" class="fragment current-visible" data-fragment-index="1">
    		<img src="assets/optimization_cem_3.png" width="400" class="fragment current-visible" data-fragment-index="2">
    		<img src="assets/optimization_cem_4.png" width="400" class="fragment current-visible" data-fragment-index="3">
    		<img src="assets/optimization_cem_5.png" width="400" class="fragment current-visible" data-fragment-index="4">
    		<img src="assets/optimization_cem_6.png" width="400" class="fragment current-visible" data-fragment-index="5">
    		<img src="assets/optimization_cem_7.png" width="400" class="fragment current-visible" data-fragment-index="6">
    		<img src="assets/optimization_cem_8.png" width="400" class="fragment current-visible" data-fragment-index="7">
    		<img src="assets/optimization_cem_9.png" width="400" class="fragment current-visible" data-fragment-index="8">
    	</div>
    </section>
    
    opened by jeremiedecock 0
  • Background video for whole presentation and do not restart between slides

    Background video for whole presentation and do not restart between slides

    I would like to have the same background video playing in a loop for every slide but it shall not restart on each slide transition

    How would I achieve both?

    opened by eulenleber 1
Releases(4.4.0)
  • 4.4.0(Oct 17, 2022)

    Changes

    • Gradient slide backgrounds, read the docs 🌈 (@gcmznt in #2510)
    • If multiple separate notes are provided for the same slide they will now all show in the speaker view (@lechten in #3010)
    • Updated browser targets from > 0.5%, IE 11, not dead to > 2%, not dead
    • Stop using zoom for presentation scaling. Zoom produced sharper upsizing than CSS transforms but it's a non-standard CSS property with a few too many quirks. e281b3234e7991283ce4dcca705dd9a6a9ebe5d2

    Fixes

    • Fix issue where speaker view wasn't syncing (@hakimel #3285)
    • Fix incorrect slide numbers when exporting vertical slides to PDF (@chivongv in 3182)
    • Fix inconsistent fragment visibility in looped presentations (@hakimel in #3123)
    • Fix bug where r-fit-text caused text to truncate in PDF exports (@hakimel in #3120)
    • Fix bug where auto-animate could interfere with inherited line-height (@hakimel)

    Full Changelog: https://github.com/hakimel/reveal.js/compare/4.3.1...4.4.0

    Source code(tar.gz)
    Source code(zip)
  • 4.3.1(Mar 21, 2022)

    What's Changed

    • Fix bug that prevented speaker view from working from file:// protocol (@hakimel #3158)
    • Fix console errors attempting to parse postMessage events from sources other than reveal.js (@hakimel)
    • Fix issue with providing your own config for MathJax3 plugin (@eric-wieser in https://github.com/hakimel/reveal.js/pull/3157)
    • Fix ZIP package gulp task (@dennybiasiolli in https://github.com/hakimel/reveal.js/pull/3156)
    • Replace deprecated String.prototype.substr() (@CommanderRoot in https://github.com/hakimel/reveal.js/pull/3165)

    Full Changelog: https://github.com/hakimel/reveal.js/compare/4.3.0...4.3.1

    Source code(tar.gz)
    Source code(zip)
  • 4.3.0(Feb 28, 2022)

    tldr — self-destruction and bug fixes 💣

    Changes

    • It's now possible to destroy/uninitialize a reveal.js presentation. This will remove all event listeners and roll back all changes made to the DOM. It will also unregister all plugins and destroy them if they expose a destroy method. (#1145 / @hakimel)
      Reveal.destroy();
      
    • You can now provide an absolute URL to the presentation that should be loaded in the speaker view. This is useful if you have a presentation integrated as part of a web page but still want the speaker view to work.
      Reveal.initialize({ url: 'https://example.com/my-reveal-presentation' })
      
    • Source maps are now included in dist (#3082 / @dabrahams)

    Fixes

    • Fix the speaker view no longer goes out of sync with your presentation after live-reloading (#2822 / @hakimel).
    • Fix XSS vulnerability in speaker view (#3137 / @r0hanSH)
    • Fix issues with scaling embedded presentations when entering fullscreen mode in Safari (#3080 / @Martinomagnifico)
    Source code(tar.gz)
    Source code(zip)
  • 4.2.1(Dec 6, 2021)

    Bug fix release 🐛

    Fixes

    • Fix an issue where some slides disappeared (fully or partially) after slide transitions in Chrome (9e583b8df4edecb94cb89f012ae5c80014a859ee @hakimel)
    • Fix an issue that caused double-navigations and impacted presentation performance (@hakimel #3079)
    • Fix --host not working in npm start -- --host=0.0.0.0 (@cashcat #3075)
    • Fix incorrect sizing of auto-sized text in PDF exports (https://github.com/hakimel/reveal.js/issues/2865#issuecomment-970258829 @hakimel)
    • Fix background video playback issue in some browsers by inferring MIME type from file extension (#3078 @vanch3d)
    Source code(tar.gz)
    Source code(zip)
  • 4.2.0(Nov 12, 2021)

    Changes

    • The math plugin now supports three typesetting libraries: KaTeX, MathJax 2 and MathJax 3. We continue to use MathJax 2 as our default so this is fully backwards compatible. Learn how to choose between typesetters and how to configure them in the docs at https://revealjs.com/math#typesetting-libraries (@burgerga in #2559).
    • New event: beforeslidechange (#3003). This makes it possible to conditionally prevent navigations:
      // This prevents all slide changes
      Reveal.addEventListener( 'beforeslidechange', e => e.preventDefault() );
      
    • New keyboard shortcut for skipping fragments while navigating: alt + ←/↑/→/↓.
    • New API option for skipping fragments in directional navigation Reveal.right({ skipFragments: true }).
    • Adds a beforeHighlight callback to the highlight plugin (@rajgoel in #3026).
      Reveal.initialize({ 
        highlight: {
          beforeHighlight: (hljs) => {
            // interact with highlight.js, for example to register a new language
          }
        } 
      })
      
    • Code line numbers can now start from an offset (#3050). For example, this code block would begin its line numbering from 10: <code data-ln-start-from="10">.
    • Better error messaging when the .reveal or .slides containers are missing #2217.

    Fixes

    • The last slide keyboard shortcut now works for looped presentations (#3007).
    • Markdown code blocks can be turned into fragments (@nicojs in #2982).
    • Unit tests can now run in Windows (@Vandivier in #3027).
    • Restored support for base64 background images, broken since 4.1.1 (#2978).
    • Fixes an issue that prevented presentations from looping when navigationMode was set to linear.
    • Internal links leading to a slide with video/audio element will now correctly start media playback. This issue only affected mobile browsers.
    Source code(tar.gz)
    Source code(zip)
  • 4.1.2(Jun 9, 2021)

    Changes

    • Adds support for data-auto-animate-restart and data-auto-animate-id. These properties give you finer control over which slides that should auto-animate between each other (@coffeenotfound in #2896).
    • Theme properties are now available as CSS variables, making them easy to override. Full list of variables (#2740 + #2968). Here's an example you can drop into your presentation's HTML:
    <style type="text/css">
    :root {
      --r-background-color: indigo;
      --r-main-color: #f5f5f5;
      --r-main-font: monospace;
    }
    </style>
    

    Fixes

    • Markdown enabled speaker notes (<aside class="notes" data-markdown>) are no longer visible on-slide.
    Source code(tar.gz)
    Source code(zip)
  • 4.1.1(May 20, 2021)

    Mostly bug fixes and enhancements 🐛

    Changes

    • Adds support for Node.js 16.
    • data-background-image now accepts multiple images (#2940).
    • New Markdown config option animateLists — automatically turns all lists into stepped fragments (#2956).
    • Reduce the tab size in code blocks from 8 to 2.
    • More accurate calculation of which slide to jump to when clicking on the progress bar (#2836).
    • Optimize DOM interactions and reduce forced layouts when exporting to PDF (#2843).

    Fixes

    • Video/audio inside of a fragment now stop playing when the fragment is hidden.
    • Markdown is now split into individual slides by the default separator (---) as advertised.
    • The r-fit-text layout helper now sizes text correctly in PDF exports.
    • Fixes an issue where some slide-specific transitions were incorrectly overridden by the global transition setting.
    • The has-dark-background helper class now works when using named colors for data-background-color (#2933).
    Source code(tar.gz)
    Source code(zip)
  • 4.1.0(Oct 12, 2020)

    Changes

    • New: Add data-visibility="hidden" to a slide to hide it from view. Docs & examples
    • New: Add the r-fit-text class to make a text node grow to be as large as possible without overflowing the slide. Docs & examples
    • The configured slide width/height is now exposed as CSS variables (--slide-width/--slide-height).
    • The shuffle config option now shuffles vertical slides as well.
    • All themes now invert the text color based on the current slide background color.
    • Include /css and /js in npm package.

    Fixes

    • Don't append #/ to the URL on first slide.
    • Don't fill the progress bar when there's only one slide in a deck
    • Correct slide count when using data-visibility="uncounted" (#2675)
    Source code(tar.gz)
    Source code(zip)
  • 4.0.2(May 29, 2020)

    Changes

    • Enables caching for JavaScript builds, making subsequent builds ~50% faster.
    • In auto-sliding presentations, the data-autoslide attribute now takes precedence over automatic detection of <video> durations.
    • Remove overzealous reset styles when printing to PDF.
    • Reveal.configure and Reveal.isReady are now available in the pre-initialized reveal.js API, to match v3.x behavior.
    • Switches to serving demo presentation assets from a CDN.

    Bug fixes

    • Fixes polyfills and adds IE 11 support.
    • Fixes the progress bar direction in right-to-left mode.
    Source code(tar.gz)
    Source code(zip)
  • 4.0.1(May 25, 2020)

    Bug fixes

    • Fixed issues when printing speaker notes to PDF (#2671 by @s-l-lee)
    • Fixed incorrect auto-animations when there are multiple auto-animated presentations on the same page
    Source code(tar.gz)
    Source code(zip)
  • 4.0.0(May 20, 2020)

    Breaking Changes 🚨

    This release includes a small number of breaking changes. Please read the Upgrade Instructions if you want to migrate an existing presentation.

    Highlights

    • New website, docs and logo! https://revealjs.com/ 🚀
    • Auto-Animate lets you create complex animations by automatically transitioning between matched elements across slides. Duration, delay and easing can be set on a per-slide or per-element basis.
    • We now support multiple presentations on the same page.
      • This also introduces a new embedded config option, which allows presentations to reside within a portion of a page. Previously reveal.js always covered 100% of the page width and height.
      • The new keyboardCondition: 'focused' config option lets presentations capture keyboard events only when they're focused by the viewer.
    • The reveal.js core and built-in plugins have been rewritten as ES modules. This makes the project easier to maintain and makes reveal.js itself easier to include in a bundle. Two bundles are provided:
      • dist/reveal.js uses UMD and has broad cross browser support (ES5).
      • dist/reveal.esm.js is an ES module. More info
    • Code highlights are now automatically scrolled into view and it looks soooo good. You've got to try it out.

    Changes

    • The Reveal.initialize method now returns a promise that resolves once reveal.js is ready and all plugins have finished initializing.
    • Switches build systems from to gulp, using rollup for bundling.
    • Moves all compiled CSS (reveal.css, reset.css and themes) from css/ to dist/. See Upgrade Instructions.
    • Moves all print CSS into reveal.js. The old script-based print styles can be removed. by @quilicicf
    • Adds a new slidetransitionend event.
    • Adds a new r-stack layout helper for placing elements on top of each other.
    • Adds support for data-visibility="uncounted" to exclude slides from the progress bar and slide number count. #2543 by @lassepe
    • Adds Reveal.getComputedSlideSize API method.
    • Renames the Reveal.addEventListener and Reveal.removeEventListener API methods to Reveal.on and Reveal.off. Old names are aliased for backwards compatibility.
    • Removes the default border style from <img>s. Can be added with the r-frame class.
    • Removes bower.json.

    Plugins

    • New syntax for registering plugins.
    • All built-in plugins—such as markdown and highlight—are now available as ES modules. More info
    • Notes: No longer depends on resolving an external notes.html file to work. Everything is baked into the plugin JS.
    • Highlight: Upgraded to highlight.js 10.0.1.
    • Highlight: Moved highlight themes from lib/css/monokai.css to plugin/highlight/monokai.css.
    • Highlight: 'highlight.js' library is now installed from npm instead of being saved in the repo.
    • Markdown: Support for line numbers and highlights in syntax highlighted code.
    • Markdown: Support for boolean data- attributes. by @Bagira80
    • Markdown: 'marked' library is now installed from npm instead of being saved in the repo.
    • Multiplex: Moved out to https://github.com/reveal/multiplex
    • Notes Server: Moved out to https://github.com/reveal/notes-server

    Bug fixes

    • Fixes a bug that prevented links from working in exported PDFs. #2628 by @telliott22
    • Fixes a bug where navigationMode: 'linear' incorrectly hid valid vertical directions. #2582 by @earboxer
    • Fixes an issue that caused reveal.js to incorrectly block keyboard events when an element with contentedtable=false was focused. #2650
    Source code(tar.gz)
    Source code(zip)
  • 3.9.2(Jan 31, 2020)

    Fixes a security vulnerability in the postMessage API. The follow methods are now blacklisted and can not be called via the postMessage API: registerPlugin, registerKeyboardShortcut, addKeyBinding, addEventListener.

    Source code(tar.gz)
    Source code(zip)
  • 3.9.1(Jan 29, 2020)

    This version contains no changes. It was only released to bump the published version on npm.

    3.9.0 was published to npm with local edits 🤦‍♂️

    Source code(tar.gz)
    Source code(zip)
  • 3.9.0(Jan 29, 2020)

    Changes:

    • Adds step-by-step code highlights! Step through multiple line highlights on the same code block.
    • Adds postMessage callbacks. Makes it possible to use the postMessage API to invoke reveal.js methods with return values.
    • The pacing timer functionality now accepts a total time for the whole presentation. Timing was previously worked out on a per-slide level. (#2400 by longtime reveal.js contributor @fghaas!)
    • Background iframes no longer preload by default. They load when you arrive at the given slide. This unifies the behavior of in-slide and background iframes. Learn how to turn on preloading.
    • The slide number format specified through slideNumber is now honored in PDF exports. (#2337 by @dougalsutherland) (4c557a5959b3ad909056df6cb46c5bf56a0da8ee)
    • Adds data-fragment=<index> to any slide
      with fragments in it. This lets you target specific fragment states with CSS like section[data-fragment="2"] { ... }.
    • Adds Reveal.getHorizontalSlides() and Reveal. getVerticalSlides() for getting all horizontal/vertical slides in a deck.
    • Adds Reveal.hasHorizontalSlides() and Reveal. hasVerticalSlides() for checking whether or not a deck contains any horizontal or vertical slides.
    • Adds mobileViewDistance configuration option. Mobile view distance was previously hardcoded at 2. (#2513 by @TuurDutoit)
    • Adds allow="autoplay" to iframes to comply with Chrome's Autoplay Policy Changes (#2437 by @TehDmitry)
    • Switches to CSS transforms to scale decks up on HDPI displays. Previous use of CSS zoom produced sharper results but led to side effects such as iframes not scaling with the deck content.
    • Switches first/last slide keyboard shortcuts from ⌘←/⌘→ to Shift←/Shift→. The old shortcut conflicted with browser back/forward.
    • Updates highlight.js from 9.11.0 to 9.18.0

    Bug fixes:

    • Fixes an issue where the navigation down-arrow was blocked by the progress bar (#2410 by @NoriSte).
    • Fixes swipe navigation for decks with navigationMode set to linear (#2416 by @earboxer).
    • Fixes vertical overflow in iPadOS Safari.
    • Fixes inconsistent fragment slide animations by translating by a fixed unit.
    • Fixes failing npm install because of outdated dependencies.
    • Fixes exception when highlighting empty code blocks.

    And more...

    Source code(tar.gz)
    Source code(zip)
  • 3.8.0(Apr 1, 2019)

    Changes:

    • The cursor is now automatically hidden after five seconds of inactivity. The timeout can be adjusted with hideCursorTime: <milliseconds>, or you can disable the feature entirely with hideInactiveCursor: false.
    • Presentations can be zoomed on touch devices using the standard pinch-to-zoom gestures.
    • New navigationMode: <default/linear/grid> config option. Set to "grid" to navigate across adjacent vertical stacks. Learn more in the docs. (#2307)
    • New hash: <boolean> config option. When set to true, reveal.js will reflect the current slide in the address bar without pushing each slide change to the browser history. (#2286 by @asottile)
    • New preloadIframes config option for flagging if iframes should be preloaded or not. Can be set per-frame using the data-preload attribute. More info. (#2354 by @maxrothman)
    • A resize event is now dispatched anytime the presentation scale changes. (#2300 by @mw75)
    • The "Resume" button in the pause overlay is hidden if controls are set to false. (#2215 by @anderslemke)
    • New keyboard shortcut: CMD/CTRL + left or right arrow to go to first or last slide.
    • Adds Reveal.getRevealElement() for retrieving the presentation's root element (<div class="reveal">).
    • Removes Head JS as it is no longer required to load dependencies.
    • Removes classList polyfill since browser support caught up.
    • Removes the reset styles from reveal.css to make styles easier to override. Reset styles are now included as a separate reset.css file. (6abc6e00581e66690416978de118145e854c3c1e #1952 & #2248)
    • The zoom transition now zooms between all slides, previously it zoomed between horizontal slides and used a slide transition between vertical.
    • Upgrade to Socket.IO 2.2.0.

    Plugin Changes:

    • Adds a new API for registering plugins Reveal.registerPlugin( 'myPlugin', MyPluginInstance ). If a registered plugin returns a promise when initialized, reveal.js will wait for that promise to be fulfilled before firing the ready event. Learn more in the docs.
    • Code highlighting: Support for line numbers! Just add data-line-numbers to your code blocks.
    • Code highlighting: Highlight specific lines by providing a comma separated list of line numbers to data-line-numbers. Line ranges, like 5-15, are supported too.
    • Speaker view: No longer requires a web server, it now works when opened directly from the filesystem. (#2104 by @jurca)
    • Markdown: External .md files are now loaded asynchronously.
    • Markdown: Upgrade to marked 0.6.0. (@sestegra)
    • MathJax config options can now be set via the reveal.js math config option. (#2090 by @bnjmnt4n)

    Bug fixes:

    • Fixes npm security warnings by updating all dependencies.
    • Fixes an issue that prevented the same internal link from being clicked twice. (#2350 by @rparree)
    • Fixes an issue with data-transition not working on vertical slides. (b6ce0a9724f123396b59e9b7b90ab2d44dda2534 #1947)
    • Fixes an issue that needless caused the slide method—and all of its corresponding performance heavy DOM operations—to be invoked twice for each slide change. (#2263 by @mbotsch)
    • Fixes a layout bug with overlaid speaker notes when reveal.js is smaller than the browser window.
    • Fixes an error that caused Reveal.getProgress() to return a value higher than 1 when there were fragments on the last slide.
    • The speaker view no longer stops working when opened multiple times. (#2251 by @oyron)
    • Prevents presentations from overflowing vertically in some mobile browsers.
    • Elements using .stretch now show up in the overview mode. (@sanand0)

    And more...

    Source code(tar.gz)
    Source code(zip)
  • 3.7.0(Aug 1, 2018)

    Changes:

    • Key Binding API (#1885 by @ denehyg)
    • Adds pdfSeparateFragments option for exporting fragments on separate PDF pages (@koehlma)
    • Adds fragmentInURL option for including fragments in the URL (@dougalsutherland)
    • Adds hashOneBasedIndex option for switching slide URLs from 0 to 1-based index (@sean-parent)
    • Adds data-background-opacity attribute for fading out background media
    • Adds a "Resume presentation" button to the pause overlay
    • Adds two new fragment styles
      • semi-fade-out: starts fully visible and fades out to 50% opacity
      • fade-in-then-semi-out: fades in like a normal fragment and remains visible but faded out when you move to the next fragment
    • New API method Reveal.syncSlide: same use as Reveal.sync but more efficient when you've only made changes to one specific slide
    • New API method Reveal.syncFragments: same use as Reveal.sync but more efficient when you've only made changes to fragments on one specific slide
    • Removes arbitrary restrictions on slide IDs, all IDs are now valid
    • The slide number is now an anchor pointing to the current hash, making it possible to copy the current slide URL even when history is disabled (#2133 by @sean-parent)
    • Whitespace is now allowed in background image names (@RobertBaron)

    Bug fixes:

    • The left/right navigation arrows no longer appear when there are no horizontal slides
    • Navigating to the same slide twice in a row no longer drops its "present" class
    • The loop option now works correctly in presentations with only vertical slides
    • More graceful error handling of duplicate slide IDs
    • Interactive iframe backgrounds now work in vertical slides

    And more...

    Source code(tar.gz)
    Source code(zip)
  • 3.6.0(Nov 23, 2017)

    Changes:

    • New project domain: revealjs.com.
    • New presentation control arrows:
      • Redesigned for improved aesthetics and clarity.
      • Arrows bounce to attract attention until the viewer first navigates. The downwards arrow bounces the first time you arrive at a vertical stack too, making vertical slides harder to miss. This can be turned off by setting the controlsTutorial config option to false.
      • Arrows automatically change color to contrast the slide background. Step left/right here to test.
      • Initialize reveal.js with controlsLayout: "edges" to have the controls appear along the edges of the screen instead of the bottom right corner. Try it out. revealjs-controls
    • New mobile-friendly layout for presentations shared with visible speaker notes.
    • The showNotes config option no longer shows the notes UI if there are no notes.
    • Improved search plugin: added CTRL+SHIFT+F shortcut, now searches inside of <span>. (#1909 by @linux-man)
    • Lazy-loaded videos are now unloaded when they move out of view.
    • Set the autoSlide option to false to prevent ALL auto-sliding (including data-autoslide attributes).
    • New API method Reveal.isSpeakerNotes() to check if the current instance of reveal.js is running inside of the speaker view.
    • New API methods Reveal.loadSlide()/Reveal.unloadSlide() for manually triggering the content on a slide to load or unload.
    • Always show video/audio controls on mobile devices.
    • Themes now use default quotation marks for <q>.

    Bug fixes:

    • Fixed an issue that prevented Reveal.configure() from being called directly before or after Reveal.initialize().
    • Don't apply text-transform uppercase inside of code tags. (#1978 by @sfairchild)
    • Mobile Safari browser chrome no longer covers presentation content in landscape mode.
    • Fixed a feature test exception that prevented speaker notes from working in Safari.

    And more...

    Source code(tar.gz)
    Source code(zip)
  • 3.5.0(May 5, 2017)

    Changes:

    • Add display config option to control the display mode slide section elements. (#1324 by @mojavelinux)
    • Add Reveal.toggleHelp()for toggling the help overlay. (#1816 by @frazer)
    • Slide fragments can now hold their own speaker notes. (#1636 by @traff)
    • The speaker view can now provide pacing advice. This makes it easy to detect if you're running out of time, or going too quickly. (#1564 by @aspiers, more info)
    • Switch to a <textarea data-template></textarea> wrapper for Markdown to avoid HTML parsing issues. (#1780 by @ccqgithub)
    • Background videos now autoplay in iOS. (#1851 by @astone123)
    • Background iframes are now interactive when there is no content in the slide or data-background-interactive is present on the slide element.
    • Shift dependencies to devDependencies (#1764 by @demoneaux)
    • MathJax is now loaded from cdnjs since cdn.mathjax.org was shut down. (#1866 by @christianp)

    Bug fixes:

    • Fix multiple issues with autoplaying <video> and <audio>, particularly on slow connections.
    • Fix overview rendering issues in Firefox.

    And more...

    Source code(tar.gz)
    Source code(zip)
  • 3.4.1(Jan 25, 2017)

  • 3.4.0(Jan 10, 2017)

    Changes:

    • Add a layout selector to the speaker view with four different options (see example)
    • Add ability to pass options to Markdown parser (#1765 by @demoneaux)
    • Auto-playing content inside of a fragment now play automatically when the parent fragment is displayed
    • Improve indentation correction for code blocks using the data-trim (#1756 by @ jmpp)
    • Show an error when an iframe can't be previewed (#1577 by @huxpro)
    • Improve accuracy of zoom plugin (#1572 by @jesstelford)
    • PDF exports:
      • Add showNotes: 'separate-page' to print speaker notes on separate pages (#1518)
      • Prevent printed pages from overflowing
      • Dispatch a pdf-ready event when the presentation is initialized, laid out and ready to print
      • Add pdfMaxPagesPerSlide config value for controlling how many pages a slide can split into when printing to PDF 55581035228aba9a0d061a6969797327c626b0bf
    • Accessibility:
      • Make speaker notes keyboard accessible (#1586 by @jasonkiss)
      • Update disabled attribute on nav buttons for screen reader accessibility (#1586 by @jasonkiss)
      • Don't call out aria-hidden="true" and display: none; elements (#1665 by @Sonaryr)
    • New API method Reveal.showHelp() can be called to display a help overlay with keyboard shortcuts #1611
    • Increased default font sizes and max presentation scale
    • In addition to dispatching a ready event, reveal.js now adds a ready class to the .reveal container that CSS can hook into
    • Updated dependencies

    Bug fixes:

    • Fix disappearing theme background when going fullscreen in Firefox
    • Fix occasional null pointer errors related to iframes and slide backgrounds
    • Fix blurred content when using the none/fade/slide transitions (#1002)
    • Fix incorrect duration calculation for video/audio with playbackRate
    • Fix exception when initializing with no slides
    • Fix mousewheel-event based navigation when using a trackpad (#1607 by @gera2ld)

    And more...

    Source code(tar.gz)
    Source code(zip)
  • 3.3.0(Apr 19, 2016)

    Changes:

    • New default HTML files:
      index.html – barebones presentation suitable to add your own content into
      demo.html – example presentation where many reveal.js features are demonstrated
    • Add Reveal.shuffle() for randomizing slide order, also available through config Reveal.initialize({ shuffle: true }) (#1506)
    • Add data-background-video-muted for muting background video (#1360 by @oslego)
    • Add autoSlideMethod config option for controlling how auto-slide navigates. For example, for backwards navigation you can use Reveal.configure({ autoSlideMethod: Reveal.navigatePrev }) (#1437 by @der-michik)
    • Add four new fragment styles: fade-up, fade-down, fade-right and fade-left (#1445 by @kewitz)
    • Add the grunt-cli as a dependency instead of assuming global Grunt (#1473 by @vicapow)
    • Add Reveal.VERSION (#1451 by @SethosII)
    • Add table of contents to README (#1545 by @ducin)
    • Multiplexing is compatible with now, deployment is as easy as now plugin/multiplex
    • The notes plugin no longer syncs changes to the overview mode
    • 2x auto-slide controls for HDPI displays
    • Remove unused dependencies (#1521 by @demoneaux)
    • Update highlight.js to 9.0.0
    • Update head.js to 1.0.3

    Bug fixes:

    • Fix issues with how presentations were scaled up in Safari and Edge
    • Fix issue where background videos did not play on the first slide (#1376 by @alexbatista)
    • Fix issue with formatting of Markdown notes (#1405 by @jetzhliu)
    • Fix error where parallax backgrounds did not work in a presentation with only vertical slides (#1434 by @mikemellor11)
    • Fix error when using speaker notes on a presentation with a query string in the URL (#1522 by @demoneaux)
    • Fix watching of Markdown files for livereload (#1553 by @0xR)
    • Fix broken overview when reveal.js is configured with percentage based width/height (#1247)
    • Remove extra border in some table configurations (by @flying-sheep)

    And more...

    Source code(tar.gz)
    Source code(zip)
  • 3.2.0(Nov 9, 2015)

    Changes:

    • Turn on the showNotes option to show your speaker notes along the bottom of the presentation. Also works with PDF exports!
    • If slideNumber is turned on slide numbers will now be included in PDF exports.
    • Changed the format and style of slide numbers.
    • Added a bower.json manifest #1067
    • Use data-prevent-swipe to flag that swiping across an element shouldn't trigger slide navigation (more info, #951 by @calyhre)
    • Accessibility: control arrows were changed from <div> to <button>.
    • Updated all dependencies, see ef1402e64567a41be8ac56ad129fdeb54a275218
    • The Multiplexing and Speaker Notes plugins have been upgraded from socket.io 0.9.x to 1.3.7.
    • The server side speaker notes plugin now syncs changes from within the notes window to the main presentation window.
    • We no longer use zoom to scale down presentations since that was causing slight shifts in text layout. Instead we're relying on transforms which always interpolate smoothly although things don't look as crisp.
    • The Leap Motion plugin was moved out of reveal.js core: https://github.com/gneatgeek/reveal.js-leap-motion
    • The remotes.io plugin was removed.
    • Updated highlight.js from 8.2 to 8.9.1

    Bug fixes:

    • Custom-bound togglePause keys can now correctly be used to resume again (#959 by @davidbanham).
    • Fix early access error with video backgrounds (#1310 by @teawithfruit).
    • Fix an issue where the 'none' transition did not apply to vertical slides.
    • Fix initial visibility of strike fragments.
    • Fix an issue where the presentation background turned black in fullscreen mode.
    • Fix an issue where code highlighting didn't load for Markdown-only presentations (#1225 by @gre)
    • Fix an issue where printing to paper would cause text to get cut off (#1381 by @lordsutch)
    • And more...
    Source code(tar.gz)
    Source code(zip)
  • 3.1.0(May 18, 2015)

    Changes:

    • Slides can now have different in/out transitions (more info, #1106 by @jammon)
    • Custom formatting support for slide numbers (more info, #965)
    • Lazy loaded iframe elements now only load when the containing slide becomes visible and unload again once hidden
    • GIFs now restart when they become visible
    • Support for slide backgrounds in the overview mode
    • Config options for controlling parallax background movement per slide (#733 by #lukekarrys)
    • Simplified build script now compiles all CSS in themes folder
    • Only preload last slide when we're configured to loop
    • Add data-background-loop option (#1138 by @denehyg)
    • Core CSS no longer overrides text selection color
    • Removed roll-in fragment style as it was consistently crashing Chrome (#1150)

    Bug fixes:

    • Fix Markdown table column alignment (#1050 by @fehmer)
    • Fix view distance calculation for looped presentations
    • Fix inverse progress bar navigation in RTL mode
    • Fix error where Markdown slide separators did not work on some systems (#929 thanks @callahad)
    • Resolve conflict which caused auto-sliding not to work on a slide with a data-autoplay configured media element (#1170)
    • Input focus inside of iframe elements no longer breaks slide layout
    • And more...
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0(Jan 12, 2015)

    reveal.js 3.0 changes the default style of the framework (demo). If you want to return to the old defaults please take a look at the migration guide.

    Major updates:

    • New default theme "black"
    • New theme "white", same typography as "black" but inverse colors
    • Default transition changed from 3D rotation to 2D sliding
    • Presentations scale up to make better use of high resolution viewports
    • Video backgrounds (more info)
    • Iframe backgrounds (more info, #1029 by @lutangar)
    • Lazy loading of image, iframe, video and audio (more info)
    • Help overlay when pressing ? (#943 by @navateja)
    • Slide content is now announced to screen readers (#854 by @mpnkhan)
    • Rewritten PDF export layout, fixes a number of issues and adds support for vertical centering
    • Markdown separator attributes renamed from data-notes and data-verticalto data-separator-notes and data-separator-vertical.

    Other updates:

    • Minified files (reveal.min.js and reveal.min.css) are no longer tracked in the repo
    • Core stylesheet is now precompiled using Sass
    • Core stylesheet is now using autoprefixer (#1007 by @burnpanck)
    • Built-in postMessage API (more info)
    • The .reveal element is given a "has-light-background" or "has-dark-background" class when a per-slide background color is detected
    • Speaker view
      • New design
      • Now works when running a presentation from file://
      • Disabled slide transitions to improve main presentation performance
      • Disabled auto-sliding to prevent conflicts with main presentation
      • Disabled 'S' shortcut from working inside of speaker view
    • New API method: getState/setState (more info)
    • New API method: getProgress
    • New API method: getTotalSlides (#858)
    • Fragments are included in progress calculation
    • highlight.js updated to 8.2, now includes all supported languages rather than a subset
    • Removed transitions into and out of the overview mode
    • Simplified .slides container layout, no more -50% offset on individual slide elements
    • Renamed "linear" transition to "slide"
    • Renamed "default" transition to "convex"
    • Background images, videos and iframes are lazy loaded
    • Moved content related styles out of core stylesheet into themes
    • Removed Ruby dependency by switching to node-sass (#975 by @miira)
    • Removed theme config option (#1061)
    • Included version of League Gothic is no longer subset (#989)
    • UMD support (#869 by @ahdinosaur)
    • Refreshed content in default presentation

    Bug fixes:

    • Invisible fragments no longer catch mouse events (#845)
    • Prevent named links with non-latin characters from skipping to presentation end (#836)
    • data-autoplay attribute now works on the first slide
    • Auto-sliding now works for fragments on last slide (#974)
    • Fix issues with RTL navigation
    • Fix edge cases where isFirstSlide incorrectly returned true
    • Fix issue with automatically playing/pausing YouTube and Vimeo embeds
    • Fix double-navigation on touch for some Android devices
    • Fix calculation of fragment index when multiple fragments have the same index
    • Many more...
    Source code(tar.gz)
    Source code(zip)
  • 2.6.2(Apr 16, 2014)

  • 2.6.1(Dec 2, 2013)

    • Changed default syntax for Markdown slide and element attributes (#734)
    • Fixed bug related to initial visibility of vertical slides
    • Improved parsing of query strings for Reveal.getQueryHash()
    Source code(tar.gz)
    Source code(zip)
  • 2.6.0(Nov 28, 2013)

    Major changes:

    • Parallax backgrounds (more info, example, thanks @michalsmolinski)
    • Added UI for controlling auto slide playback. Appears in the bottom left and includes a visual indicator for when the slide is about to change (more info, example)
    • Added support for displaying the current page number (more info, thanks @urielha)
    • All configuration values can now be overridden through query parameters, for example: http://lab.hakim.se/reveal-js/?autoSlide=3000&controls=false&loop=true

    Other changes:

    • Unit tests are now available with ever increasing coverage, run via grunt test
    • Fixed vertical slide related bug where isLastSlide() incorrectly returned false
    • Updated highlight.js build to include all supported languages
    • Fixed bug where smart links (like .navigate-right) did not work when controls were disabled
    • Updated grunt and node dependencies to current versions
    • Fixed perspective of vertical slide transition in IE10
    • The grunt serve task now accepts a port number, for example: grunt server 8181
    • Added contribution guidelines
    • Fixed issue where keyboard controls did not work after clicking on an external link inside of a presentation and then coming back
    • Added support for SVG background images
    • Overview mode and progress bar are now disabled in the notes window slide previews
    • Added support for per-slide vertical centering, simply add a .center class to the <section>
    • If an iframe is embedded inside of a slide it will now receive two postMessages: slide:start when the slide is shown and slide:stop when it is hidden (more info)
    • Videos are no longer auto-played in the note window previews
    • The data-autoslide of a slide stack is now inherited by its vertical children
    • Disabled background transitions between consecutive identical data-backgrounds to avoid flicker
    • Added convex, concave and zoom background transitions
    • Refactored fragment implementation to fix multiple bugs (see #721)
    • Adjusted background transition speed to match slide transitions
    • When there is embedded media with data-autoplay set and auto-sliding is on, the auto-slide duration is increased to the duration of the media

    Markdown plugin:

    • Added support for element attributes (more info, thanks @VonC)
    • Added support for slide attributes (more info, thanks @VonC)
    • Fixed bug where notes in last Markdown slide were not picked up
    • If RevealMarkdown.initialize() is called multiple times it won't repeatedly try to parse the same content
    Source code(tar.gz)
    Source code(zip)
  • 2.5.0(Aug 21, 2013)

    Major changes:

    • MathJax plugin (more info)
    • Leap Motion plugin (more info, thanks @gneatgeek)
    • Added .stretch helper class which dynamically resizes an element to fill its parent slide (more info)
    • Added support for notes in external Markdown (more info, thanks @adamhepton)

    Other changes:

    • The framework no longer queries the DOM before Reveal.initialize() is called, this allows reveal.js to be loaded in the <head>
    • URL hash now updates immediately, was previously delayed to account for a legacy Chrome bug
    • Rolling links are now turned off by default, will be removed entirely in the long term
    • Fragments on upcoming slides are no longer visible when navigating back and forth in the presentation
    • Added an none transition setting for slide backgrounds
    • O key can now be used to toggle the overview mode, useful since ESC does not work in fullscreen mode
    • Greatly simplified client-side notes plugin, fixes issues where fragments went out of sync
    • Fixed bug that caused slideshow to break if an invalid named link was referenced
    • Fixed bug with auto-slide on first slide (#525)
    • Fixed issues where past/future slides were clickable even if they weren't visible
    • Optimization:
      • More precise way of hiding slides that are out of view
      • Configurable viewDistance (# of slides from current that should be hidden)
      • Limited view distance for mobile devices, fixes some out of memory errors
    Source code(tar.gz)
    Source code(zip)
  • 2.4.0(Jul 2, 2013)

    Major changes:

    • Embedded media (<video>, <audio> and YouTube <iframe>) are now automatically played
    • Greatly improved RTL support
    • Added Reveal.sync() method, update internals to match current DOM and config

    Other changes:

    • Fixed changing of keyboard, touch, controls and progress flags through using Reveal.configure
    • Auto-slide now resume after overview/pause
    • Added error messaging when external markdown fails to load
    • Added Reveal.avilableRoutes() API method
    • It is now possible to override the transition for a specific slide (more info)
    • Fixes conflict between notes and remotes plugins
    • Added support for transitionSpeed config value (default/fast/slow)
    • Added support for data-transition-speed attribute on sections (more info)
    • getIndices now returns an f property for the current fragment index
    • Added more state backgrounds
    • Broader code highlighter language support (full list in source)
    • Set data-trim on your <code> blocks for automatic whitespace trimming paused when their container slide is hidden. Can also be configured to auto-play when slide is entered (more info)
    • Fixed bug where progress bar would not scale when the window was resized
    • Fragments now reflect visually in the main presentation controls
    • Added fragment config option for disabling all use of fragments
    • Showdown has been replaced with marked for GitHub flavored Markdown parsing
    • HTML characters in code-blocks are automatically ecaped unless the <code> wrapper has data-noescape
    • Fixes flickering linear transition in iOS
    • Added setup instructions and Grunt serve task (more info)
    Source code(tar.gz)
    Source code(zip)
  • 2.3.0(Jul 2, 2013)

    Major changes:

    • Presentations now scale uniformly to fit any display size (more info)
    • Multiplex plugin (more info, @davidbanham)
    • Support for external Markdown (more info, @webpro)
    • Reveal.js can now be re-configured after initialization, example: Reveal.configure({ center: false })

    Other changes:

    • Prevent keyboard navigation while presentation is paused
    • Fixed header word-breaks, will now properly hyphenate
    • Fixed vertical centring of slides in iOS Chrome
    • Added API method Reveal.getSlide( x, y ) for retrieving a slide by its index
    • Correction to notes window sometimes displaying the wrong slides
    • Stop auto-slide when paused or in overview
    • Added API method Reveal.isOverview()
    • Added API method Reveal.isPaused()
    • Added API method Reveal.isFirstSlide()
    • Added API method Reveal.isLastSlide()
    • Fragments order can now be set via data-fragment-index attributes (more info, @jaberg)
    • Updated to Grunt 0.4 (@boazsender)
    • Fixed issue with Markdown HTML entities (@asmod3us)
    • Navigation in notes window now reflects in main window
    • Added paused and resumed events
    • Fixed navigation inconsistency when first/last slide is vertical
    • Two new themes: moon and solarized
    • Themes are now compiled using Grunt
    • Better fallback fonts
    • Search plugin (@razor-1)
    Source code(tar.gz)
    Source code(zip)
Owner
Hakim El Hattab
Swedish JavaScript coder and CSS tweaker • Co-founder of @slides • Creator of reveal.js
Hakim El Hattab
DIY Presentation Micro-Framework

Bespoke.js DIY Presentation Micro-Framework Bespoke.js is a super minimal (1KB min'd and gzipped), modular presentation library for modern browsers, d

Bespoke.js 4.7k Dec 18, 2022
It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prezi.com.

impress.js It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prez

impress.js 37.1k Jan 3, 2023
Strut - An Impress.js and Bespoke.js Presentation Editor

All new development is happening in Strut2 Strut2 is currently private until we further solidify our "open source dividened program." Open Source Divd

Matthew Wonlaw 1.7k Dec 30, 2022
The responsive CSS animation framework for creating unique sliders, presentations, banners, and other step-based applications.

Sequence.js The responsive CSS animation framework for creating unique sliders, presentations, banners, and other step-based applications. Sequence.js

Ian Lunn 3.4k Dec 20, 2022
JavaScript image gallery for mobile and desktop, modular, framework independent

PhotoSwipe Repository JavaScript image gallery for mobile and desktop. Documentation and getting started guide. Demo and script home page. NPM npm ins

Dmitry Semenov 22.5k Dec 30, 2022
A minimal presentation package for Svelte, including a "Presenter" and "Presentation View"

svelte - presenter A minimal presentation package for Svelte, includes synchronized "Presenter" and "Presentation" views. Adding Slides All slides are

Stephane 17 Sep 16, 2022
The HTML Presentation Framework

reveal.js is an open source HTML presentation framework. It enables anyone with a web browser to create fully featured and beautiful presentations for

Hakim El Hattab 62.8k Jan 2, 2023
Shower HTML presentation engine

Shower Presentation Template Shower ['ʃəuə] noun. A person or thing that shows. Built on HTML, CSS and vanilla JavaScript. Works in all modern browser

Shower 4.8k Dec 28, 2022
It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prezi.com.

impress.js It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prez

impress.js 37k Jan 2, 2023
It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prezi.com.

impress.js It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prez

impress.js 37.1k Jan 3, 2023
DIY Presentation Micro-Framework

Bespoke.js DIY Presentation Micro-Framework Bespoke.js is a super minimal (1KB min'd and gzipped), modular presentation library for modern browsers, d

Bespoke.js 4.7k Dec 18, 2022
It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prezi.com.

impress.js It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prez

impress.js 37.1k Jan 3, 2023
DIY Presentation Micro-Framework

Bespoke.js DIY Presentation Micro-Framework Bespoke.js is a super minimal (1KB min'd and gzipped), modular presentation library for modern browsers, d

Bespoke.js 4.7k Dec 18, 2022
♠️ React MDX-based presentation decks

MDX Deck Award-winning React MDX-based presentation decks ?? Write presentations in markdown ⚛️ Import and use React components ?? Customizable themes

Brent Jackson 11k Jan 2, 2023
Strut - An Impress.js and Bespoke.js Presentation Editor

All new development is happening in Strut2 Strut2 is currently private until we further solidify our "open source dividened program." Open Source Divd

Matthew Wonlaw 1.7k Dec 30, 2022
Presentation and materials for The Graph developers taking their first space-walk 🧑‍🚀

Welcome to thegraph-hacker-kit ?? Presentation and materials for The Graph developers taking their first space-walk ??‍?? Are you ready to learn how t

Patrick Gallagher 20 Aug 26, 2022
Work in progress: A presentation server for Lisp programs, implemented in Electron

electron-presentation-server mikel evins [email protected] A work in progress: an experimental presentation server for Lisp programs, implemented with E

mikel evins 5 Feb 26, 2022
Mini-site de streaming réalisé dans le cadre d'une présentation orale sur le sujet du protocole RTP pour la matière Services Réseaux.

Mini-site de streaming réalisé dans le cadre d'une présentation orale sur le sujet du protocole RTP pour la matière Services Réseaux.

Quentin 1 Jan 21, 2022
An example of implementation of the Veriifiable Presentation Generation Service specification.

Verifiable Presentation Generation Service A plugin-based service that allows issuers to render verifiable presentations from templates, and store it

Verifiable Presentation Generation 5 Nov 16, 2022
Image, Presentation and Video editor. Canva clone

React editor [WIP] React editor for graphics, presentations and videos. It should be an alternative to canva.com. Try demo here react-editor-core.verc

null 1.4k Dec 28, 2022