A Web Component for web presentations.
General usage example:
<script type="module" src="slide-deck.js"></script>
<slide-deck>
<header><h1>This is a slide show</h1></header>
<div><h2>Each child is a slide</h2></div>
<div>
<h2>We can add our own controls</h2>
<p>Based on event handlers</p>
<button slide-event>previous</button>
<button slide-event>next</button>
<p>Or specifically for changing views</p>
<button set-view>grid</button>
<button set-view>list</button>
</div>
</slide-deck>Define a simple fallback view:
<style>
slide-deck:not(:defined) {
display: grid;
> * {
border-block-end: thin solid;
}
}
</style>Set initial state with attributes, or define your own view:
<script type="module" src="slide-deck.js"></script>
<slide-deck key-control slide-view="fancy">
<header><h1>Listening for arrow keys</h1></header>
<div><h2>And using a fancy view</h2></div>
</slide-deck>
<style>
slide-deck[slide-view="fancy"] {
outline: 1px solid red;
}
</style>This Web Component allows you to:
- Create web-based slides
- Switch between different slide views
- Control presentations with a remote, or a keyboard
- Follow along in a second tab (speaker view)
- Toggle full-screen mode
You have a few options (choose one of these):
- Install via npm:
npm install @oddbird/slide-deck - Download the source manually from GitHub into your project.
- Skip this step and use the script directly via a 3rd party CDN (not recommended for production use)
Make sure you include the <script> in your project (choose one of these):
<!-- Host yourself -->
<script type="module" src="slide-deck.js"></script><!-- 3rd party CDN, not recommended for production use -->
<script
type="module"
src="https://www.unpkg.com/@oddbird/[email protected]/slide-deck.js"
></script><!-- 3rd party CDN, not recommended for production use -->
<script
type="module"
src="https://esm.sh/@oddbird/[email protected]"
></script>With thanks to the following people:
At OddBird, we enjoy collaborating and contributing as part of an open web community. But those contributions take time and effort. If you're interested in supporting our open-source work, consider becoming a GitHub sponsor, or contributing to our Open Collective.
❤️ Thanks!