reveal.js
Version:
The HTML Presentation Framework
701 lines (646 loc) • 22.2 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8" />
<title>reveal.js – The HTML Presentation Framework</title>
<meta
name="description"
content="A framework for easily creating beautiful presentations using HTML"
/>
<meta name="author" content="Hakim El Hattab" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="dist/reset.css" />
<link rel="stylesheet" href="dist/reveal.css" />
<link rel="stylesheet" href="dist/theme/black.css" id="theme" />
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="dist/plugin/highlight/monokai.css" />
</head>
<body>
<div class="reveal">
<!-- Any section element inside of this container is displayed as a slide -->
<div class="slides">
<section>
<a href="https://revealjs.com">
<img
src="https://static.slid.es/reveal/logo-v1/reveal-white-text.svg"
alt="reveal.js logo"
style="height: 180px; margin: 0 auto 4rem auto; background: transparent"
class="demo-logo"
/>
</a>
<h3>The HTML Presentation Framework</h3>
<p>
<small
>Created by <a href="http://hakim.se">Hakim El Hattab</a> and
<a href="https://github.com/hakimel/reveal.js/graphs/contributors"
>contributors</a
></small
>
</p>
</section>
<section>
<h2>Hello There</h2>
<p>
reveal.js enables you to create beautiful interactive slide decks using HTML. This
presentation will show you examples of what it can do.
</p>
</section>
<!-- Example of nested vertical slides -->
<section>
<section>
<h2>Vertical Slides</h2>
<p>Slides can be nested inside of each other.</p>
<p>Use the <em>Space</em> key to navigate through all slides.</p>
<br />
<a href="#/2/1" class="navigate-down">
<img
class="r-frame"
style="background: rgba(255, 255, 255, 0.1)"
width="178"
height="238"
data-src="https://static.slid.es/reveal/arrow.png"
alt="Down arrow"
/>
</a>
</section>
<section>
<h2>Basement Level 1</h2>
<p>
Nested slides are useful for adding additional detail underneath a high level
horizontal slide.
</p>
</section>
<section>
<h2>Basement Level 2</h2>
<p>That's it, time to go back up.</p>
<br />
<a href="#/2">
<img
class="r-frame"
style="background: rgba(255, 255, 255, 0.1); transform: rotate(180deg)"
width="178"
height="238"
data-src="https://static.slid.es/reveal/arrow.png"
alt="Up arrow"
/>
</a>
</section>
</section>
<section>
<h2>Slides</h2>
<p>
Not a coder? Not a problem. There's a fully-featured visual editor for authoring these,
try it out at <a href="https://slides.com" target="_blank">https://slides.com</a>.
</p>
</section>
<section data-visibility="hidden">
<h2>Hidden Slides</h2>
<p>
This slide is visible in the source, but hidden when the presentation is viewed. You can
show all hidden slides by setting the `showHiddenSlides` config option to `true`.
</p>
</section>
<section data-auto-animate>
<h2 data-id="code-title">Pretty Code</h2>
<pre data-id="code-animation"><code class="hljs javascript" data-trim data-line-numbers>
import { useState } from 'react';
function Example() {
const [count, setCount] = useState(0);
return (
...
);
}
</code></pre>
<p>
Code syntax highlighting courtesy of
<a href="https://highlightjs.org/usage/">highlight.js</a>.
</p>
</section>
<section data-auto-animate>
<h2 data-id="code-title">With Animations</h2>
<pre
data-id="code-animation"
><code class="hljs javascript" data-trim data-line-numbers="|4,8-11|17|22-24"><script type="text/template">
import { useState } from 'react';
function Example() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
function SecondExample() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
</script></code></pre>
</section>
<section>
<h2>Point of View</h2>
<p>Press <strong>ESC</strong> to enter the slide overview.</p>
<p>
Hold down the <strong>alt</strong> key (<strong>ctrl</strong> in Linux) and click on any
element to zoom towards it using <a href="http://lab.hakim.se/zoom-js">zoom.js</a>.
Click again to zoom back out.
</p>
<p>(NOTE: Use ctrl + click in Linux.)</p>
</section>
<section
data-auto-animate
data-auto-animate-easing="cubic-bezier(0.770, 0.000, 0.175, 1.000)"
>
<h2>Auto-Animate</h2>
<p>
Automatically animate matching elements across slides with
<a href="https://revealjs.com/auto-animate/">Auto-Animate</a>.
</p>
<div class="r-hstack justify-center">
<div
data-id="box1"
style="background: #999; width: 50px; height: 50px; margin: 10px; border-radius: 5px"
></div>
<div
data-id="box2"
style="background: #999; width: 50px; height: 50px; margin: 10px; border-radius: 5px"
></div>
<div
data-id="box3"
style="background: #999; width: 50px; height: 50px; margin: 10px; border-radius: 5px"
></div>
</div>
</section>
<section
data-auto-animate
data-auto-animate-easing="cubic-bezier(0.770, 0.000, 0.175, 1.000)"
>
<div class="r-hstack justify-center">
<div
data-id="box1"
data-auto-animate-delay="0"
style="background: cyan; width: 150px; height: 100px; margin: 10px"
></div>
<div
data-id="box2"
data-auto-animate-delay="0.1"
style="background: magenta; width: 150px; height: 100px; margin: 10px"
></div>
<div
data-id="box3"
data-auto-animate-delay="0.2"
style="background: yellow; width: 150px; height: 100px; margin: 10px"
></div>
</div>
<h2 style="margin-top: 20px">Auto-Animate</h2>
</section>
<section
data-auto-animate
data-auto-animate-easing="cubic-bezier(0.770, 0.000, 0.175, 1.000)"
>
<div class="r-stack">
<div data-id="box1" style="background: cyan; width: 300px; height: 300px"></div>
<div data-id="box2" style="background: magenta; width: 200px; height: 200px"></div>
<div data-id="box3" style="background: yellow; width: 100px; height: 100px"></div>
</div>
<h2 style="margin-top: 20px">Auto-Animate</h2>
</section>
<section>
<h2>Touch Optimized</h2>
<p>
Presentations look great on touch devices, like mobile phones and tablets. Simply swipe
through your slides.
</p>
</section>
<section data-markdown>
<script type="text/template">
## Markdown Support
Write content using inline or external Markdown.
Instructions and more info available in the [docs](https://revealjs.com/markdown/).
```html []
<section data-markdown>
## Markdown Support
Write content using inline or external Markdown.
Instructions and more info available in the [docs](https://revealjs.com/markdown/).
</section>
```
</script>
</section>
<section>
<h2>Lightbox</h2>
Turn any element into a <a href="https://revealjs.com/lightbox/">lightbox</a> using <strong>data‑preview‑image</strong> & <strong>data‑preview‑video</strong>.
<div class="r-hstack" style="gap: 2rem;">
<div>
<pre style="font-size: 12px; width: 100%"><code class="html" data-trim>
<img src="image.png" data-preview-image="image.png">
</code></pre>
<img src="https://static.slid.es/logo/v2/slides-symbol-1024x1024.png" height="100" data-preview-image>
</div>
<div>
<pre style="font-size: 12px; width: 100%"><code class="html" data-trim>
<img src="video.png" data-preview-video="video.mp4">
</code></pre>
<img src="https://static.slid.es/site/homepage/v1/homepage-video-editor.png" height="100" data-preview-video="https://static.slid.es/site/homepage/v1/homepage-video-editor.mp4">
</div>
</div>
</section>
<section>
<p>Add the <code>r-fit-text</code> class to auto-size text</p>
<h2 class="r-fit-text">FIT TEXT</h2>
</section>
<section>
<section id="fragments">
<h2>Fragments</h2>
<p>Hit the next arrow...</p>
<p class="fragment">... to step through ...</p>
<p>
<span class="fragment">... a</span> <span class="fragment">fragmented</span>
<span class="fragment">slide.</span>
</p>
<aside class="notes">
This slide has fragments which are also stepped through in the notes window.
</aside>
</section>
<section>
<h2>Fragment Styles</h2>
<p>There's different types of fragments, like:</p>
<p class="fragment grow">grow</p>
<p class="fragment shrink">shrink</p>
<p class="fragment fade-out">fade-out</p>
<p>
<span style="display: inline-block" class="fragment fade-right">fade-right, </span>
<span style="display: inline-block" class="fragment fade-up">up, </span>
<span style="display: inline-block" class="fragment fade-down">down, </span>
<span style="display: inline-block" class="fragment fade-left">left</span>
</p>
<p class="fragment fade-in-then-out">fade-in-then-out</p>
<p class="fragment fade-in-then-semi-out">fade-in-then-semi-out</p>
<p>
Highlight <span class="fragment highlight-red">red</span>
<span class="fragment highlight-blue">blue</span>
<span class="fragment highlight-green">green</span>
</p>
</section>
</section>
<section id="transitions">
<h2>Transition Styles</h2>
<p>
You can select from different transitions, like: <br />
<a href="?transition=none#/transitions">None</a> -
<a href="?transition=fade#/transitions">Fade</a> -
<a href="?transition=slide#/transitions">Slide</a> -
<a href="?transition=convex#/transitions">Convex</a> -
<a href="?transition=concave#/transitions">Concave</a> -
<a href="?transition=zoom#/transitions">Zoom</a>
</p>
</section>
<section id="themes">
<h2>Themes</h2>
<p>
reveal.js comes with a few themes built in: <br />
<!-- Hacks to swap themes after the page has loaded. Not flexible and only intended for the reveal.js demo deck. -->
<a
href="#/themes"
onclick="document.getElementById('theme').setAttribute('href','dist/theme/black.css'); return false;"
>Black (default)</a
>
-
<a
href="#/themes"
onclick="document.getElementById('theme').setAttribute('href','dist/theme/white.css'); return false;"
>White</a
>
-
<a
href="#/themes"
onclick="document.getElementById('theme').setAttribute('href','dist/theme/league.css'); return false;"
>League</a
>
-
<a
href="#/themes"
onclick="document.getElementById('theme').setAttribute('href','dist/theme/sky.css'); return false;"
>Sky</a
>
-
<a
href="#/themes"
onclick="document.getElementById('theme').setAttribute('href','dist/theme/beige.css'); return false;"
>Beige</a
>
-
<a
href="#/themes"
onclick="document.getElementById('theme').setAttribute('href','dist/theme/simple.css'); return false;"
>Simple</a
>
<br />
<a
href="#/themes"
onclick="document.getElementById('theme').setAttribute('href','dist/theme/serif.css'); return false;"
>Serif</a
>
-
<a
href="#/themes"
onclick="document.getElementById('theme').setAttribute('href','dist/theme/blood.css'); return false;"
>Blood</a
>
-
<a
href="#/themes"
onclick="document.getElementById('theme').setAttribute('href','dist/theme/night.css'); return false;"
>Night</a
>
-
<a
href="#/themes"
onclick="document.getElementById('theme').setAttribute('href','dist/theme/moon.css'); return false;"
>Moon</a
>
-
<a
href="#/themes"
onclick="document.getElementById('theme').setAttribute('href','dist/theme/solarized.css'); return false;"
>Solarized</a
>
</p>
</section>
<section>
<section data-background="#dddddd">
<h2>Slide Backgrounds</h2>
<p>
Set <code>data-background="#dddddd"</code> on a slide to change the background color.
All CSS color formats are supported.
</p>
<a href="#" class="navigate-down">
<img
class="r-frame"
style="background: rgba(255, 255, 255, 0.1)"
width="178"
height="238"
data-src="https://static.slid.es/reveal/arrow.png"
alt="Down arrow"
/>
</a>
</section>
<section data-background-gradient="linear-gradient(to bottom, #283b95, #17b2c3)">
<h2>Gradient Backgrounds</h2>
<pre><code class="hljs html wrap"><section data-background-gradient=
"linear-gradient(to bottom, #ddd, #191919)"></code></pre>
</section>
<section data-background="https://static.slid.es/reveal/image-placeholder.png">
<h2>Image Backgrounds</h2>
<pre><code class="hljs html"><section data-background="image.png"></code></pre>
</section>
<section
data-background="https://static.slid.es/reveal/image-placeholder.png"
data-background-repeat="repeat"
data-background-size="100px"
>
<h2>Tiled Backgrounds</h2>
<pre><code class="hljs html" style="word-wrap: break-word;"><section data-background="image.png" data-background-repeat="repeat" data-background-size="100px"></code></pre>
</section>
<section
data-background-video="https://static.slid.es/site/homepage/v1/homepage-video-editor.mp4"
data-background-color="#000000"
>
<div style="background-color: rgba(0, 0, 0, 0.9); color: #fff; padding: 20px">
<h2>Video Backgrounds</h2>
<pre><code class="hljs html" style="word-wrap: break-word;"><section data-background-video="video.mp4,video.webm"></code></pre>
</div>
</section>
<section data-background="http://i.giphy.com/90F8aUepslB84.gif">
<h2>... and GIFs!</h2>
</section>
</section>
<section
data-transition="slide"
data-background="#4d7e65"
data-background-transition="zoom"
>
<h2>Background Transitions</h2>
<p>
Different background transitions are available via the backgroundTransition option. This
one's called "zoom".
</p>
<pre><code class="hljs javascript">Reveal.configure({ backgroundTransition: 'zoom' })</code></pre>
</section>
<section
data-transition="slide"
data-background="#b5533c"
data-background-transition="zoom"
>
<h2>Background Transitions</h2>
<p>You can override background transitions per-slide.</p>
<pre><code class="hljs html" style="word-wrap: break-word;"><section data-background-transition="zoom"></code></pre>
</section>
<section data-background-iframe="https://hakim.se" data-background-interactive>
<div
style="
position: absolute;
width: 40%;
right: 0;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5), 0 5px 25px rgba(0, 0, 0, 0.2);
background-color: rgba(0, 0, 0, 0.9);
color: #fff;
padding: 20px;
font-size: 20px;
text-align: left;
"
>
<h2>Iframe Backgrounds</h2>
<p>
Since reveal.js runs on the web, you can easily embed other web content. Try
interacting with the page in the background.
</p>
</div>
</section>
<section>
<h2>Marvelous List</h2>
<ul>
<li>No order here</li>
<li>Or here</li>
<li>Or here</li>
<li>Or here</li>
</ul>
</section>
<section>
<h2>Fantastic Ordered List</h2>
<ol>
<li>One is smaller than...</li>
<li>Two is smaller than...</li>
<li>Three!</li>
</ol>
</section>
<section>
<h2>Tabular Tables</h2>
<table>
<thead>
<tr>
<th>Item</th>
<th>Value</th>
<th>Quantity</th>
</tr>
</thead>
<tbody>
<tr>
<td>Apples</td>
<td>$1</td>
<td>7</td>
</tr>
<tr>
<td>Lemonade</td>
<td>$2</td>
<td>18</td>
</tr>
<tr>
<td>Bread</td>
<td>$3</td>
<td>2</td>
</tr>
</tbody>
</table>
</section>
<section>
<h2>Clever Quotes</h2>
<p>
These guys come in two forms, inline:
<q
cite="http://searchservervirtualization.techtarget.com/definition/Our-Favorite-Technology-Quotations"
>The nice thing about standards is that there are so many to choose from</q
>
and block:
</p>
<blockquote
cite="http://searchservervirtualization.techtarget.com/definition/Our-Favorite-Technology-Quotations"
>
“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.”
</blockquote>
</section>
<section>
<h2>Intergalactic Interconnections</h2>
<p>
You can link between slides internally,
<a href="#/2/3">like this</a>.
</p>
</section>
<section>
<h2>Speaker View</h2>
<p>
There's a <a href="https://revealjs.com/speaker-view/">speaker view</a>. It includes a
timer, preview of the upcoming slide as well as your speaker notes.
</p>
<p>Press the <em>S</em> key to try it out.</p>
<aside class="notes">
Oh hey, these are some notes. They'll be hidden in your presentation, but you can see
them if you open the speaker notes window (hit 's' on your keyboard).
</aside>
</section>
<section>
<h2>Export to PDF</h2>
<p>
Presentations can be <a href="https://revealjs.com/pdf-export/">exported to PDF</a>,
here's an example:
</p>
<iframe
data-src="https://www.slideshare.net/slideshow/embed_code/42840540"
width="445"
height="355"
frameborder="0"
marginwidth="0"
marginheight="0"
scrolling="no"
style="border: 3px solid #666; margin-bottom: 5px; max-width: 100%"
allowfullscreen
>
</iframe>
</section>
<section>
<h2>Global State</h2>
<p>
Set <code>data-state="something"</code> on a slide and <code>"something"</code>
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.
</p>
</section>
<section data-state="customevent">
<h2>State Events</h2>
<p>
Additionally custom events can be triggered on a per slide basis by binding to the
<code>data-state</code> name.
</p>
<pre><code class="javascript" data-trim contenteditable style="font-size: 18px;">
Reveal.on( 'customevent', function() {
console.log( '"customevent" has fired' );
} );
</code></pre>
</section>
<section>
<h2>Take a Moment</h2>
<p>
Press B or . on your keyboard to pause the presentation. This is helpful when you're on
stage and want to take distracting slides off the screen.
</p>
</section>
<section>
<h2>Much more</h2>
<ul>
<li>Right-to-left support</li>
<li><a href="https://revealjs.com/api/">Extensive JavaScript API</a></li>
<li><a href="https://revealjs.com/auto-slide/">Auto-progression</a></li>
<li>
<a href="https://revealjs.com/backgrounds/#parallax-background"
>Parallax backgrounds</a
>
</li>
<li><a href="https://revealjs.com/keyboard/">Custom keyboard bindings</a></li>
</ul>
</section>
<section style="text-align: left">
<h1>THE END</h1>
<p>
- <a href="https://slides.com">Try the online editor</a> <br />
- <a href="https://github.com/hakimel/reveal.js">Source code & documentation</a>
</p>
</section>
</div>
</div>
<script src="dist/reveal.js"></script>
<script src="dist/plugin/zoom.js"></script>
<script src="dist/plugin/notes.js"></script>
<script src="dist/plugin/search.js"></script>
<script src="dist/plugin/markdown.js"></script>
<script src="dist/plugin/highlight.js"></script>
<script>
// Also available as an ES module, see: https://revealjs.com/initialization/
// import Reveal from 'reveal.js';
// import RevealZoom from 'reveal.js/plugin/zoom';
// import RevealNotes from 'reveal.js/plugin/notes';
// import RevealSearch from 'reveal.js/plugin/search';
// import RevealMarkdown from 'reveal.js/plugin/markdown';
// import RevealHighlight from 'reveal.js/plugin/highlight';
Reveal.initialize({
controls: true,
progress: true,
center: true,
hash: true,
// Learn about plugins: https://revealjs.com/plugins/
plugins: [RevealZoom, RevealNotes, RevealSearch, RevealMarkdown, RevealHighlight],
});
</script>
</body>
</html>