reveal.js enables you to create beautiful interactive slide decks using HTML. This presentation will show you examples of what it can do.
Vertical Slides
Slides can be nested inside of each other.
Use the Space key to navigate through all slides.
Basement Level 1
Nested slides are useful for adding additional detail underneath a high level horizontal slide.
Basement Level 2
That's it, time to go back up.
Slides
Not a coder? Not a problem. There's a fully-featured visual editor for authoring these, try it out at https://slides.com.
Pretty Code
importReact, { useState } from'react';
functionExample() {
const [count, setCount] = useState(0);
return (
...
);
}
Code syntax highlighting courtesy of highlight.js.
Even Prettier Animations
importReact, { useState } from'react';
functionExample() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<buttononClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
functionSecondExample() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<buttononClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
importReact, { useState } from'react';
functionExample() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<buttononClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
functionSecondExample() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<buttononClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
importReact, { useState } from'react';
functionExample() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<buttononClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
functionSecondExample() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<buttononClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
importReact, { useState } from'react';
functionExample() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<buttononClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
functionSecondExample() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<buttononClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
Point of View
Press ESC to enter the slide overview.
Hold down the alt key (ctrl in Linux) and click on any element to zoom towards it using zoom.js. Click again to zoom back out.
(NOTE: Use ctrl + click in Linux.)
Auto-Animate
Automatically animate matching elements across slides with Auto-Animate.
Auto-Animate
Auto-Animate
Touch Optimized
Presentations look great on touch devices, like mobile phones and tablets. Simply swipe through your slides.
Markdown support
Write content usinginlineorexternal Markdown.
Instructions and more info available in the [readme](https://revealjs.com/markdown/).
```html []
<section data-markdown>
## Markdown support
Write content usinginlineorexternal Markdown.
Instructions and more info available in the [readme](https://revealjs.com/markdown/).
</section>
```
You can override background transitions per-slide.
<sectiondata-background-transition="zoom">
Iframe Backgrounds
Since reveal.js runs on the web, you can easily embed other web content. Try interacting with the page in the background.
Marvelous List
No order here
Or here
Or here
Or here
Fantastic Ordered List
One is smaller than...
Two is smaller than...
Three!
Tabular Tables
Item
Value
Quantity
Apples
$1
7
Lemonade
$2
18
Bread
$3
2
Clever Quotes
These guys come in two forms, inline: The nice thing about standards is that there are so many to choose from and block:
“For years there has been a theory that millions of monkeys typing at random on millions of typewriters would reproduce the entire works of Shakespeare. The Internet has proven this theory to be untrue.”
Intergalactic Interconnections
You can link between slides internally, like this.
Speaker View
There's a speaker view. It includes a timer, preview of the upcoming slide as well as your speaker notes.
Set data-state="something" on a slide and "something" will be added as a class to the document element when the slide is open. This lets you apply broader style changes, like switching the page background.
State Events
Additionally custom events can be triggered on a per slide basis by binding to the data-state name.
The HTML Presentation Framework Created by Hakim El Hattab and contributors Sponsored by
⌘K
Create Stunning Presentations on the Web
reveal.js is an open source HTML presentation framework. It's a tool that enables anyone with a web browser to create fully-featured and beautiful presentations for free.
Presentations made with reveal.js are built on open web technologies. That means anything you can do on the web, you can do in your presentation. Change styles with CSS, include an external web page using an <iframe> or add your own custom behavior using our JavaScript API.
It only takes a minute to get set up. Learn how to create your first presentation in the installation instructions!
Online Editor
If you want the benefits of reveal.js without having to write HTML or Markdown try https://slides.com. It's a fully-featured visual editor and platform for reveal.js, by the same creator.