Ivaylo Gerchev

How to Create Beautiful HTML & CSS Presentations with WebSlides

Share this article

HTML Presentations with WebSlides

Getting Started with WebSlides

Create a web presentation with webslides.

  • Frequently Asked Questions (FAQs) about Creating Beautiful HTML & CSS Presentations with WebSlides

HTML Presentations with WebSlides

This article was peer reviewed by Ralph Mason , Giulio Mainardi , and Mikhail Romanov . Thanks to all of SitePoint’s peer reviewers for making SitePoint content the best it can be!

Presentations are one of the best ways to serve information to an audience. The format is short and sharp, made up of small, digestible chunks, which makes any topic under discussion engaging and easier to understand. A presentation can contain all kinds of data, represented by many different elements, such as tables, charts, diagrams, illustrations, images, videos, sounds, maps, lists, etc, all of which lends great flexibility to this medium of expression.

Particularly on the web, presentations come in handy on many occasions, and there are loads of tools at your disposal to create some nifty ones. Today, I’ll introduce you to WebSlides — a small and compact library with a nice set of ready-to-use components, which you can leverage to build well-crafted and attractive web presentations:

WebSlides “is about telling the story, and sharing it in a beautiful way.”

In fact, one of WebSlides’ main benefits is that you can share your story beautifully and in a variety of different ways. With one and the same architecture — 40+ components with semantic classes, and clean and scalable code — you can create portfolios, landings, longforms, interviews, etc.

Besides, you can also extend WebSlides’ functionality by combining it with third-party services and tools such as Unsplash , Animate.css , Animate On Scroll , and so on.

WebSlides is easy to learn and fun to use. Let’s see it in action now.

To get started, first download WebSlides . Then, in the root folder, create a new folder and call it presentation . Inside the newly created presentation folder, create a new file and call it index.html . Now, enter the following code, which contains the needed references to the WebSlides’ files (make sure the filepaths correspond to the folder structure in your setup):

In this section you’re going to create a short, but complete presentation, which explains why SVG is the future of web graphics. Note: If you are interested in SVG, please check my articles: SVG 101: What is SVG? and How to Optimize and Export SVGs in Adobe Illustrator .

You’ll be working step by step on each slide. Let’s get started with the first one.

The first slide is pretty simple. It contains only one sentence:

Each parent <section> inside <article id="webslides"> creates an individual slide. Here, you’ve used two classes from WebSlides’ arsenal, i.e., bg-gradient-r and aligncenter , to apply a radial gradient background and to align the slide content to the center respectively.

WebSlides Presentation Demo: Slide 1

The second slide explains what SVG is:

The code above uses the content-left and content-right classes to separate the content into two columns. Also, in order to make the above classes work, you need to wrap all content by using the wrap class. On the left side, the code uses text-subtitle to make the text all caps, and text-intro to increase the font size. The right side consists of an illustrative image.

WebSlides Presentation Demo: Slide 2

The next slide uses the grid component to create two columns:

The snippet above shows how to use the grid and column classes to create a grid with two columns. In the first column the style attribute aligns the text to the left (Note how the aligncenter class on the <section> element cascades through to its .column child element, which causes all text inside the slide to be center aligned). In the second column, the browser class makes the illustrative image look like a screenshot.

WebSlides Presentation Demo: Slide 3

In the fourth slide, use the grid component again to split the content into two columns:

WebSlides Presentation Demo: Slide 4

In this slide, place half of the content to the left and the other half to the right using the content-left and content-right classes respectively:

WebSlides Presentation Demo: Slide 5

In this slide, use the background class to embed an image as a background with the Unsplash service . Put the headline on light, transparent background by using the bg-trans-light class. The text’s color appears white, because the slide uses a black background with the bg-black class, therefore the default color is inversed, i.e., white on black rather than black on white. Also, for the text to be visible in front of the image, wrap it with <div class="wrap"> :

WebSlides Presentation Demo: Slide 6

In this slide, put the explanation text on the left and the illustrative image on the right at 40% of its default size (with the alignright and size-40 classes on the <img> element). For this and the next three slides, use slideInRight , which is one of WebSlides’ built-in CSS animations:

WebSlides Presentation Demo: Slide 7

Do a similar thing here:

WebSlides Presentation Demo: Slide 8

This slide also uses a similar structure:

WebSlides Presentation Demo: Slide 9

Here, divide the content into left and right again. In the second <p> tag, use the inline style attribute to adjust the font-size and line-height properties. Doing so will override the text-intro class styles that get applied to the element by default. On the right side, use <div class="wrap size-80"> to create a container for the SVG code example:

WebSlides Presentation Demo: Slide 10

Here, leverage some of the classes you’ve already used to illustrate browser support for SVG:

WebSlides Presentation Demo: Slide 11

In this slide, show some of the use cases for SVG in the form of an image gallery. To this end, use an unordered list with the flexblock and gallery classes. Each item in the gallery is marked up with a li tag:

WebSlides Presentation Demo: Slide 12

This section shows a typical SVG workflow, so you need to use the flexblock and steps classes, which show the content as a sequence of steps. Again, each step is placed inside a li tag:

For each step after the first one, you need to add the process-step-# class. This adds a triangle pointing to the next step.

WebSlides Presentation Demo: Slide 13

In the last slide, use another one of WebSlides’ built-in CSS animations, i.e., zoomIn :

WebSlides Presentation Demo: Slide 14

Congratulations! You’re done. You can see the final outcome here:

See the Pen HTML and CSS Presentation Demo with WebSlides by SitePoint ( @SitePoint ) on CodePen .

Et voilà! You have just created a beautiful, fully functional and responsive web presentation. But this is just the tip of the iceberg, there’s a lot more you can quickly create with WebSlides and many other WebSlides features which I didn’t cover in this short tutorial.

To learn more, explore the WebSlides Components and CSS architecture documentation , or start customizing the demos already available to you in the downloadable folder.

Then, focus on your content and let WebSlides do its job.

Frequently Asked Questions (FAQs) about Creating Beautiful HTML & CSS Presentations with WebSlides

How can i customize the design of my webslides presentation.

WebSlides allows you to customize your presentation to suit your style and needs. You can change the color scheme, fonts, and layout by modifying the CSS file. If you’re familiar with CSS, you can easily tweak the styles to create a unique look. If you’re not, there are plenty of online resources and tutorials that can help you learn. Remember, the key to a great presentation is not only the content but also the design. A well-designed presentation can help keep your audience engaged and make your content more memorable.

Can I add multimedia elements to my WebSlides presentation?

How can i share my webslides presentation with others.

Once you’ve created your WebSlides presentation, you can share it with others by hosting it on a web server. You can use a free hosting service like GitHub Pages, or you can use your own web server if you have one. Once your presentation is hosted, you can share the URL with anyone you want to view your presentation. They’ll be able to view your presentation in their web browser without needing to install any special software.

Can I use WebSlides for commercial projects?

Yes, WebSlides is free to use for both personal and commercial projects. You can use it to create presentations for your business, for your clients, or for any other commercial purpose. However, please note that while WebSlides itself is free, some of the images and fonts used in the templates may be subject to copyright and may require a license for commercial use.

How can I add interactive elements to my WebSlides presentation?

You can add interactive elements to your WebSlides presentation by using JavaScript. For example, you can add buttons that the user can click to navigate to different slides, or you can add forms that the user can fill out. This can be done by adding the appropriate HTML and JavaScript code to your slides. If you’re not familiar with JavaScript, there are plenty of online resources and tutorials that can help you learn.

Can I use WebSlides offline?

Yes, you can use WebSlides offline. Once you’ve downloaded the WebSlides files, you can create and view your presentations offline. However, please note that some features may not work offline, such as loading external images or fonts. To ensure that all features work correctly, it’s recommended to host your presentation on a web server.

How can I add transitions and animations to my WebSlides presentation?

You can add transitions and animations to your WebSlides presentation by using CSS. CSS allows you to control the appearance and behavior of elements on your slides, including transitions and animations. For example, you can use the transition property to animate the change of a property from one value to another, or you can use the animation property to create more complex animations.

Can I use WebSlides on mobile devices?

Yes, WebSlides is designed to be responsive and works well on both desktop and mobile devices. However, please note that due to the smaller screen size, some elements may not display as intended on mobile devices. It’s recommended to test your presentation on different devices to ensure that it looks and works well on all platforms.

How can I add navigation controls to my WebSlides presentation?

You can add navigation controls to your WebSlides presentation by using the built-in navigation options. You can add arrows to navigate between slides, or you can add a slide counter to show the current slide number and the total number of slides. This can be done by adding the appropriate HTML and CSS code to your slides.

Can I use WebSlides with other web development tools?

Yes, you can use WebSlides with other web development tools. For example, you can use it with a text editor to write your HTML and CSS code, or you can use it with a version control system like Git to manage your project files. You can also use it with a build tool like Gulp or Grunt to automate tasks like minifying your code or compiling your CSS.

I am a web developer/designer from Bulgaria. My favorite web technologies include SVG, HTML, CSS, Tailwind, JavaScript, Node, Vue, and React. When I'm not programming the Web, I love to program my own reality ;)

SitePoint Premium

Top 9 JavaScript frameworks to create beautiful presentation slides

Presentation frameworks are tools or libraries that can help you create presentations using web technologies that you are familiar with, such as HTML, CSS, JavaScript, Markdown, Vue, React, and more. You’ll have full control over the appearance and layout of your slides.

They allow you to export your slides as HTML files that can be viewed in any modern browser. You don’t need to install any software or plugin to view your slides. You can also share your slides online using platforms such as Slides.com, GitHub Pages, Netlify.

Reveal ( 64.2k ⭐) — An open source HTML presentation framework that allows you to create beautiful and interactive presentations using web technologies. You can use HTML, CSS, JavaScript, Markdown, LaTeX, and more to create stunning slides with animations, transitions, code highlighting, and other features.

Impress ( 37.3k ⭐) — Another open source HTML presentation framework that is similar to reveal.js, but with a different approach, inspired by the idea behind prezi.com. It uses CSS3 3D transforms to create dynamic and spatial presentations that can zoom, rotate, and pan across the slides.

Sli dev ( 27.3k ⭐) — A web-based slides maker and presenter that is designed for developers. It allows you to create beautiful and interactive presentations using Markdown, HTML, Vue components, and other web technologies. You can also use features such as live coding, recording, drawing, LaTeX, diagrams, icons, and more to enhance your slides.

MDX Deck ( 11.1k ⭐) — A library based on MDX that allows you to create presentations using Markdown and React components. You can write your slides in a single MDX file and separate them with --- . You can also import and use any React component in your slides, as well as customize the theme and layout of your presentation.

Spectacle ( 9.5k ⭐) — A React-based library for creating sleek presentations using JSX syntax that gives you the ability to live demo your code, created and maintained by Formidable Labs. You can use it to create beautiful and interactive slides with animations, transitions, code highlighting, and other features.

Code Surfer ( 6.2k ⭐) — A library that allows you to create presentations using Markdown and React components. You can write your slides in a single MDX file and separate them with --- , add code highlighting, code zooming, code scrolling, code focusing, code morphing, and fun to MDX Deck slides.

WebSlides ( 6.1k ⭐) — A library that allows you to create beautiful HTML presentations and websites. Just choose a demo and customize it in minutes. 120+ slides ready to use. You can use HTML, CSS, JavaScript, Markdown, LaTeX, and more to create stunning slides with animations, transitions, code highlighting, and other features.

Fusuma ( 5.3k ⭐) — A tool that allows you to create slides with Markdown easily. You can use HTML, CSS, JavaScript, Markdown, Vue components, and other web technologies to create stunning slides with animations, transitions, code highlighting, and other features.

PptxGenJS ( 2.1k ⭐) — A JavaScript library that allows you to create presentations, compatible with PowerPoint, Keynote, and other applications that support the Open Office XML (OOXML) format. You can use it to generate PPTX files with just a few simple JavaScript commands in any modern desktop and mobile browser. You can also integrate PptxGenJS with Node, Angular, React, and Electron.

Common features

Presentation frameworks typically share several common features that aim to enhance the creation and delivery of visually engaging and interactive presentations. Here are some of the common features you can find:

Ease of use : They allow you to use web technologies that you are familiar with, such as HTML, CSS, JavaScript, Markdown, Vue, React, and more. You don’t need to learn a new software or tool to create your slides. You can also use your favorite code editor or IDE to write and edit your slides.

Nested slides : They allow you to create sub-sections or sub-topics within your presentation. You can use nested slides to organize your content, add more details, or create interactive menus.

Markdown support : Markdown is a lightweight markup language that allows you to format text using simple syntax. You can use Markdown to write your slides in a plain text editor and then convert them to HTML. Markdown makes it easy to create headings, lists, links, images, code blocks, and more.

Auto-Animate : A feature that automatically animates the transitions between slides or elements to create smooth and dynamic effects for your presentation, detect the changes between slides and animate them accordingly.

PDF export : You can use PDF export to print your presentation, share it online, or view it offline. PDF export can also preserve the layout, fonts, and images of your presentation.

Speaker notes : You can use speaker notes to prepare your speech, add additional information, or provide references. Speaker notes are usually hidden from the audience but visible to you in a separate window or screen.

LaTeX support : LaTeX is a document preparation system that allows you to create high-quality typesetting for mathematical and scientific expressions. You can use LaTeX to write complex formulas, equations, symbols, and diagrams in your presentation. LaTeX can also handle cross-references, citations, and bibliographies.

Syntax highlighted code : You can use syntax highlighted code to display your source code in your presentation. Syntax highlighted code can make your code more readable, understandable, and attractive.

The HTML Presentation Framework

Created by Hakim El Hattab / @hakimel

Hello There

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.

Down arrow

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.

Up arrow

Not a coder? Not a problem. There's a fully-featured visual editor for authoring these, try it out at https://slides.com .

Point of View

Press ESC to enter the slide overview.

Hold down alt and click on any element to zoom in on it using zoom.js . Alt + click anywhere to zoom back out.

Touch Optimized

Presentations look great on touch devices, like mobile phones and tablets. Simply swipe through your slides.

Hit the next arrow...

... to step through ...

... a fragmented slide.

Fragment Styles

There's different types of fragments, like:

current-visible

highlight-red

highlight-blue

Transition Styles

You can select from different transitions, like: None - Fade - Slide - Convex - Concave - Zoom

reveal.js comes with a few themes built in: Black (default) - White - League - Sky - Beige - Simple Serif - Blood - Night - Moon - Solarized

Slide Backgrounds

Set data-background="#dddddd" on a slide to change the background color. All CSS color formats are supported.

Image Backgrounds

Tiled backgrounds, video backgrounds, ... and gifs, background transitions.

Different background transitions are available via the backgroundTransition option. This one's called "zoom".

You can override background transitions per-slide.

Pretty Code

Code syntax highlighting courtesy of highlight.js .

Marvelous List

  • No order here

Fantastic Ordered List

  • One is smaller than...
  • Two is smaller than...

Tabular Tables

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.

Press the S key to try it out.

Export to PDF

Presentations can be exported to PDF , here's an example:

Global State

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.

Take a Moment

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.

  • Right-to-left support
  • Extensive JavaScript API
  • Auto-progression
  • Parallax backgrounds
  • Custom keyboard bindings

- Try the online editor - Source code & documentation

HTML Presentations Made Easy

Created by Hakim El Hattab / @hakimel

reveal.js is a framework for easily creating beautiful presentations using HTML. You'll need a browser with support for CSS 3D transforms to see it in its full glory.

Vertical Slides

Slides can be nested inside of other slides, try pressing down .

Down arrow

Basement Level 1

Press down or up to navigate.

Basement Level 2

Basement level 3.

That's it, time to go back up.

Up arrow

Not a coder? No problem. There's a fully-featured visual editor for authoring these, try it out at http://slid.es .

Point of View

Press ESC to enter the slide overview.

Hold down alt and click on any element to zoom in on it using zoom.js . Alt + click anywhere to zoom back out.

Works in Mobile Safari

Try it out! You can swipe through the slides and pinch your way to the overview.

Marvelous Unordered List

  • No order here

Fantastic Ordered List

  • One is smaller than...
  • Two is smaller than...

Transition Styles

You can select from different transitions, like: Cube - Page - Concave - Zoom - Linear - Fade - None - Default

Reveal.js comes with a few themes built in: Default - Sky - Beige - Simple - Serif - Night Moon - Solarized

* Theme demos are loaded after the presentation which leads to flicker. In production you should load your theme in the <head> using a <link> .

Global State

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 background.

Custom Events

Additionally custom events can be triggered on a per slide basis by binding to the data-state name.

Slide Backgrounds

Set data-background="#007777" on a slide to change the full page background to the given color. All CSS color formats are supported.

Image Backgrounds

Repeated image backgrounds, background transitions.

Pass reveal.js the backgroundTransition: 'slide' config argument to make backgrounds slide rather than fade.

Background Transition Override

You can override background transitions per slide by using data-background-transition="slide" .

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.”

Pretty Code

Courtesy of highlight.js .

Intergalactic Interconnections

You can link between slides internally, like this .

Fragmented Views

Hit the next arrow...

... to step through ...

Fragment Styles

There's a few styles of fragments, like:

highlight-red

highlight-green

highlight-blue

current-visible

highlight-current-blue

Spectacular image!

Export to pdf.

Presentations can be exported to PDF , below is an example that's been uploaded to SlideShare.

Take a Moment

Press b or period on your keyboard to enter the 'paused' mode. This mode is helpful when you want to take distracting slides off the screen during a presentation.

Stellar Links

  • Try the online editor
  • Source code on GitHub
  • Follow me on Twitter

BY Hakim El Hattab / hakim.se

Create Incredible Web Presentations with Reveal.js

Gabriel Delight

Feb 24, 2023 · 12 min read

Create Incredible Web Presentations with Reveal.js

Reveal.js is an open-source HTML presentation framework. Anyone with a web browser can use it to make attractive presentations for free. The program allows anyone with a web browser to create fully-featured and interactive presentations that support CSS 3D transforms , nested slides, and a variety of other capabilities. It is recommended for those interested in programmable techniques and web technology.

It has lots of benefits. Some of these consist of the following:

  • Responsive design: Reveal.js presentations scale to fit the user’s screen, making them compatible with a wide range of devices.
  • Interactive elements: Reveal.js supports these elements, which can improve user experience and make presentations more interesting. Interactive elements include links, images, and videos.
  • Themes can be readily modified to reflect the user’s brand or tastes to make a presentation look more attractive when the theme matches the content in a slide.
  • Simple and intuitive user interface: Reveal.js enables users to build and edit presentations with minimal technical expertise.
  • Open-source: Reveal.js is free to use, and its source code is available for users to examine and edit.

React Reveal vs. Reveal.js: what’s the difference?

The distinction between React Reveal and Reveal.js will be demonstrated in this section:

  • HTML, CSS, and JavaScript are the foundations on which Reveal.js is constructed, but React Reveal requires React.
  • Reveal.js is the way to go if you want to make static presentations and need to deal with a vanilla JavaScript-based project. React Reveal is the greatest option for creating interactive presentations if you are working with React.
  • You can make interactive slides with Reveal.js, which has a number of features like slides and transitions. You can also make interactive slides with React Reveal, but you can also do so while using React components .
  • Additional capabilities offered by React Reveal include a higher degree of customization and support for animations.

Alternatives to Reveal.js

Many Reveal.js alternatives may be utilized to make engaging presentations with eye-catching visuals. Several well-liked choices include:

  • Impress.js , a JavaScript library that enables the creation of 3D presentations with a range of transitional effects.
  • Prezi : An online presentation tool that lets users zoom in and out of slides to make dynamic, interactive presentations.
  • PhotoSwipe : An open-source JavaScript picture gallery and lightbox, PhotoSwipe. It is modular, independent of frameworks, and made for desktop and mobile devices.
  • Owl Carousel 2 : Owl Carousel 2 is a jQuery carousel plugin with full customization and touch and drag functionality.
  • FlexSlider is a fantastic, totally responsive jQuery slider plugin. It offers designers and developers a quick way to launch a slideshow, carousel, or image slider.
  • Keynote : Apple’s PowerPoint-like presentation software for Mac and iOS devices.
  • Haiku Deck : A web-based application that enables users to design minimalistic presentations with spectacular visual effects.

Getting Started

In this session, we’ll use Reveal.js to create spectacular presentations by utilizing JavaScript. In this section, we’ll learn everything we need to know to get Reveal.js running on our project. To write code to create stunning presentations, let’s first understand the basic setup and installations before using Reveal.

Installations

The best way to install Reveal.js is to clone the source code on GitHub. Utilizing this is extremely simple for you. Just use the code below in your terminal to clone the GitHub repository.

Run the following command to install all the necessary packages and start Reveal.js after you’ve cloned the repository for it in your working directory.

Furthermore, once Reveal.js has been successfully installed in your project, you must start the Reveal.js server on port 8000 (the default port) by executing the following code:

Please use the code below if you decide to run the Reveal.js server on a different port:

You can easily install Reveal.js manually using npm or yarn if you don’t want to clone the GitHub repository:

You may easily include the Reveal.js file as an ES6 module once it has been installed in your front-end framework, such as React:

Folder Structure

This section will go over Reveal.js’ folder structure. When changes are made, the folder structure might change, but this won’t affect how Reveal.js is utilized in our project.

Since we are not the original developers, we won’t be explaining every file in Reveal.js. I’ll go over the most significant directories and files first:

  • CSS files that describe how a presentation should appear and be organized are stored in the CSS folder.
  • The JS folder houses the JS files that provide interaction and other functionality.
  • The presentation begins with a file called index.html that also contains the HTML markup for the slides.
  • A reveal.js file contains reveal.js’ setup parameters.

Reveal.js’s folder structure is shown in the image below:

-

As you can see in the screenshot above, I installed Reveal.js in the opened terminal and launched it by typing npm start .

Starter Template

The starter template is just what is loaded in the index.html page of the Reveal.js folder structure, which we mentioned in the section labeled “Folder Structure” above.

Launch your browser and navigate to the following URLs: http://localhost:8000 The link takes you to the active running page where our presentations will appear in the browser:

This section will concentrate on the contents of Reveal.js. On Reveal Web Presentation, the contents are the components of a responsive presentation. We can use Reveal.js on any project once we have worked with all the components that go into making responsive, stunning presentations, covering Markup, Markdown, Backgrounds, Media, Code Math, Fragments, Links, and Layout.

Markup is the first step in getting started with Reveal.js, and you must use the section element to build markups in Reveal.js. Please remember that the parent class will have the class name . reveal , and the reveal class div will have a child element with the class name .slide . If you place the section element line by line, as in the code below, you will have a slider that moves horizontally.

To make a vertically moving slide, add sections within a section; this is a simple technique; see the code below:

Just use the up and down arrows to view the previous and next slides.

Please use the code below to add a horizontal and vertical sliding format. It’s really simple; the horizontal section of our code will stand alone and not be inside of any section; however, the vertical section will have sections inside of a section.

Backgrounds

It’s simple to add a background color to a slider in Reveal.js; all you have to do is include an attribute that initializes the color for a specific area. You can use the data-background-color attribute to add a background color to a section and specify the value to any color name you choose. View a responsible slider with background colors by referring to the code and outputs below.

Click here to read more about background colors in Reveal.js.

In Reveal.js, media can be used as a presentation. We’ll be showing a video as a presentation in this section. The data-autoplay autoplay attribute must be included in the video tag as an attribute to make the video play when its slide section is open. Code:

You can present codes on the slide and have the code highlighted using Reveal.js. Highlight.js is the only thing that powers the code highlight. You will always use the <code> element when presenting code in Reveal.js, and all you need to do to make HTML escape the default behavior and treat the content as genuine code. Add the data-line-numbers attribute to the <code> element and specify values that will represent the line of code that will be highlighted, as shown below.

-

In Reveal.js, mathematical expressions can be displayed. To use math in your presentation, you must include the RevealMath.KaTeX plugin, which will reflect the math in your presentation.

Let’s run The Lorenz Equations as a presentation:

The Lorenz equations are a set of partial differential equations that describe two-dimensional fluid flow. Please click here to learn more.

On a slide, fragments are utilized to draw attention to or gradually reveal specific parts. Before moving on to the next slide, each element with the class fragment will be stepped through.

Please include the data-fragment-index attribute and set its value to a number if you wish to use fragments. The number value indexed 1 will appear first, followed by the number 2, in that order.

Session Replay for Developers

Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — an open-source session replay suite for developers. It can be self-hosted in minutes, giving you complete control over your customer data

Happy debugging! Try using OpenReplay today.

While watching slides, Reveal.js also simplified things for us. The following slide in a presentation can be easily reached by clicking a link , and the previous slide can likewise be reached by doing the same.

If you want to navigate to a slider, be sure that the portion of the slider you are visiting has an Id that matches the value of the “href” attribute on the HTML anchor element that is now being clicked.

To instantly navigate to the first page of the slide without passing through any intermediary sections, add ”#/0” (0 == first-slide) to the clickable link that will take you to the first page of the slide.

This section will go over the layout in Reveal.js. You can change the text size, and you can also construct a slide by showing an item on top of the previous item; this is known as staking.

Let’s practice stacking by simply laying images on top of one another.

-

Now that we understand how stacking works, let’s spend some time working with FIT TEXT. We’ll display some text in a responsive large format in this part under layout by simply utilizing the class name r-fit-text. Below is a code sample of big text applied to Session Replay:

Please note that you can move forward and backward with the arrow keys.

Customization

In this section, we’ll customize some of Reveal.js’s presentations, focusing on Themes and Transitions, the two most significant things to consider while working with Reveal.js.

Theming is essential for creating anything on the internet. In Reveal.js, you can integrate some theme collections supplied by Reveal.js developers.

To use a theme of your choice, import the theme’s CSS styles into your project. The default theme is black when you install reveal.js or clone the Reveal.js repository. A line of code for incorporating a theme into your project is provided below:

Look closely at the code above; you can see where I wrote theme-name ; please replace it with any of the theme names listed below:

  • Black (default)

Below, I used a theme name titled sky on a slide:

Utilizing the dracula theme produces the theme below:

Now that we’ve learned more about theming , I’d like you to experiment with different theme names to see how they look on your web presentation slide.

Transitions

Reveal.js provides us with some amazing transition effects to use while making a presentation on the web. It is quite simple to use these transition effects , and some of these transition effects include:

-

To use these effects, insert a data-transition attribute into your HTML element and set the attribute’s value to the name of the transition effect listed above.

That’s all for transitions in this section; if you want to learn more about Reveal.js transitions, please click here .

We’ll go through presentation features in Reveal.js, such as vertical slides and auto-slide in this section, and since we’ve already covered the implementation largely on vertical slides, we’ll go over more in depth. Let’s get started.

Vertical Slides

Moving between slides by default employs a horizontal sliding transition. These horizontal slides are the main or top-level slides in your presentation. We can’t rely on just one direction in a presentation, and the usage of presenting on slide vertically is critical. We learned how to design a slide that uses vertical direction earlier in this article.

Below is a code sample on utilizing vertical slides:

Auto-Animate

Reveal.js supports auto animation . The auto animate plays a vital role in web presentation. Auto animation applies smooth transition to a slide content, which is noticeable when viewing a presentation. For example, when you set margin-top: 40px to a section, you will see the smooth animation on how the second section comes down slowly. We’ll be implementing some examples here in this section.

To initiate the auto-animate to a section, add the data-auto-animate attribute to the two or multiple sections you want to integrate the auto-animate effect.

The code output above shows that we added margin-top: 100px to the section child (h1) using data-auto-animate , and you can see the effect applied smoothly and removing the default slide horizontal direction to a slightly vertical direction. Please remember that the element in this example is internally hidden but moved using the margin-top attribute. JavaScript will use a CSS transform to achieve fluid movement. Most CSS attributes may be animated and transitioned using the same technique, allowing you to modify positions, font-size, line-height, color, padding, and margin.

We’ll be working on auto-slide in a slide in this section. This is relatively straightforward to accomplish; simply look at our JavaScript code at the bottom of our HTML page and add the autoSlide duration as an integer and set the Boolean value of a loop to true :

JavaScript:

A play/pause icon can be found in the bottom left corner of the slide, as shown in the output above. A round loader describes the progress of the timing function in the icon. The following code is for the output presentation:

Slide Numbers

Numbering is important in slides, and you may add a slider number in two ways: obtain the current slide number and get the slide number and the overall slide count (X/X).

Set slideNumber to true in the config section at the bottom of the HTML page to obtain the real slide number.

Slide Code:

If you look closely at the output above, you will notice a page number counter in the bottom right corner of the screen. When I reached the vertical part while sliding horizontally, the counter format changed to 3.1, which indicates 3 represents the last horizontal slide page and 1 represents the first vertical slide.

To set a slide number in (X/X) format, set your config to the code below:

Please look closely at the bottom right corner of the screen; you will see the page numbering in X/X format. See the code for the output below:

Please, click here to learn more about slide numbers.

Useful hints and guidelines for Reveal.js

In this section, we’ll discover valuable hints and guidelines for working with Reveal.js, which will greatly improve our experience working with Reveal.js for presentation:

  • Use keyboard shortcuts to navigate through slides: Use arrow keys or the space bar to move ahead and back through slides.
  • Personalize the appearance and feel of your presentation: You can alter the theme, font, and background color of your slides with Reveal.js.
  • To add background images to presentations, use the data-background attribute: You can change a slide’s background image by adding the data-background attribute to the slide’ element.
  • To set the transition effect between slides, use the data-transition attribute: Transition effects such as ‘slide,’ ‘fade,’ ‘convex,’ and ‘concave’ are available.

I hope you enjoyed this article; we covered everything we needed to know to get started with Reveal.js. We also learned about how to use Reveal.js in our project. There are many more features in Reveal.js, and you can learn more by visiting Reveal’s official website . You may also begin integrating presentations into client’s projects or your project by using Reveal.js; this will help you grow your experience utilizing Reveal.js.

Gain Debugging Superpowers

Unleash the power of session replay to reproduce bugs and track user frustrations. Get complete visibility into your frontend with OpenReplay, the most advanced open-source session replay tool for developers.

Check our GitHub Repo

More articles from OpenReplay Blog

Use CSS to produce better looking checkboxes

Apr 20, 2023, 5 min read

How to Customize Checkboxes with CSS

{post.frontmatter.excerpt}

Use the UIKit framework to simplify your development work

Nov 17, 2022, 10 min read

How to create a UIKit website: a tutorial for beginners

html presentation library

A Presentation Framework by @marcolago

Press Down Key to continue Or Swipe Up if you prefer.

What is it?

Flowtime.js is a framework for easily building HTML presentations or websites.

It’s built with web standards in mind and on top of a solid full page grid layout.

The animations are managed with native and accelerated CSS3 transitions. Javascript takes care of the navigation behaviour and adds advanced functionalities and configuration options.

Press Down Key or Swipe Up to continue.

Compatibility and Support

Flowtime.js is fully compatible with real moderns browsers:

  • Internet Explorer 10

Internet Explorer 9 and some old versions of other browsers lack the transitions and some modern Javascript features but the main navigation and functionalities will work.

In older browsers degrades to a bi-directional scrolling navigation with anchor links.

Touch Devices Support

On touch devices you can navigate through slides swiping in all directions.

By now Flowtime.js was tested and works on Safari Mobile and Chrome Mobile on iOS devices but the support will be wider in the near future.

Mastering the Navigation

You can navigate in many ways. The most common way is using the keyboard.

Navigation Keys and default behaviours:

  • Down Key goes to the next page or shows up the next fragment (we’ll see this later).
  • Up Key goes to the previous page or hides the fragment.
  • Right Key goes to the adjacent page in the next section (if available, it’s like a grid, otherwise it goes to the last page in the next section).
  • Left Key goes to the adjacent page in the previous section.

Alternate Navigation Control

Pressing the Shift Key you can alternate the the default navigation keys behaviour; let’s see how:

  • Down Key goes to the next page skipping all the fragments.
  • Up Key goes to the previous page skipping all the fragments.
  • Right Key goes to the first page in the next section.
  • Left Key goes to the first page in the previous section.

Some Other Keys

Because: the more, the better.

  • Page Up Key goes to the first page of the current section.
  • Page Down Key goes to the last page of the current section.
  • Home Key goes to the first page of the first section.
  • End Key goes to the last page of the last section.

Overview Mode.

You can look at the entire presentation by pressing ESC Key . When in Overview Mode you can go back to the Page Mode by pressing again the ESC Key.

Try it out!

WARNING! Experimental Feature. If you experience problems in webkit browser you can use the alternate Overview Mode; see the documentation for more info.

Navigating the Overview

In Overview Mode the arrow keys works in the same way as in Page Mode, highlighting the future destination. To navigate to the highlighted page just press Return or Enter Key or click on the desired page.

Navigate via Links or Javascript API

You can link every page by simply building the href value using this schema:

Where data-id attribute is an optional attribute you can add to every section or page. I.e.: if you want to go to back to the first page click here (press backspace to come back to this page) .

You can also trigger every navigation behaviour using the Flowtime.js Javascript API . Take a look at the documentation if you want to learn more.

Navigate With History

Flowtime.js offers a full support for the HTML5 History API where available or gracefully degrades on the hashchange event.

This means that you can navigate using the browser’s back and forward buttons and deeplink a page for sharing purposes.

Progress Indicator

You can enable a default progress indicator useful not only to know what’s the current page you are looking, but also as a navigation tool.

Look at the bottom right corner and you can see a miniature of the presentation structure.

Clicking on a page thumb will navigate to that page.

Fragments Support

The built in fragments navigation allows to advance step by step inside a page. Press down to try.

You can discover single elements or even a single part of an element, one at a time.

Fragments navigation is deeply customizable with some configuration options You can learn how in the documentation .

Fragments Unleashed

Thanks to some special classes you can add a couple of useful custom behaviours.

  • The .step fragment will partially fades out;
  • The .shy fragment will completely hides itself;
  • You can use this two special fragment types to easily create special effects.

This is a .shy example!

And this is a .step one!

Default HTML Structures

Flowtime.js comes with a default theme that styles the most common HTML structures, like:

1 st Level Heading

2 nd level heading, 3 rd level heading, 4 th , 5 th and 6 th level heading, unordered lists.

  • Another item.
  • Just another item.
  • Ok, we get it!

Ordered Lists

Definition lists, quotes and citations.

My favourite quotation: The bad craftsman blames his tools .

Sotto un cespo di rose scarlatte dai al rospo the caldo col latte. Sotto un cespo di rose paonazze tocca al rospo lavare le tazze.

Quoting and citing with <blockquote>, <q>, <cite>, and the cite attribute on HTML5 Doctor.

Theme and Styling

If you don’t like the default theme or you want to build your own (or both things), or if you want to build a website on top of Flowtime.js, you can write your own theme and replace the default one.

Theme and core css are in separate files so you can’t break the layout (unless you override some classes).

Fluid Layout

Everything can be fluid, just use em , rem and % units if you want to make an element resizable.

Image Management

Images are fluid like all the other content.

You can insert images in the flow or stack images ones on top the others with a minimal markup overhead to create some fancy fragments tricks.

Go to the next pages to see fluid images in action and how stacked images can be managed, both in the flow or centered in the slide. Look at the source code to learn how to write the markup.

html presentation library

Stacked Images

html presentation library

Centered Stacked Images

html presentation library

About the Centered Stack

You can center anything, not only images!

Just like this content. Useful for splash pages and titles.

And you are not limited to stacks, you can center what you want.

Native Parallax Support

By popular demand Flowtime.js includes native parallax support*.

Simply add a parallax class to anything you want to have parallax enabled and configure the amount of distance for all elements or for a single element using data-parallax attribute.

For an example go to the next page ; for more info read the documentation .

* By the way: I’m not a parallax fan; but ehi… this is the "web 3.0".

The Invaders from Audiogalaxy

html presentation library

This Page Is Just for Testing the Parallax

In the previous page, from left to right:

Code Snippets Highlight

Code highlight is a courtesy of Lea Verou’s Prism . Because I really didn’t want to re-invent the wheel. You can use what you want, it’s not a dependency (but it’s very smart and cool).

Events and Custom Implementations

When navigated to a page Flowtime.js fires a custom flowtimenavigation event full of useful properties to customize or build your components or behaviours.

Read the documentation to learn more about this event and its properties.

Some Examples

You can take a look at some examples to explore some of the possibilities that Flowtime.js offers to customize your experience.

  • Cross Direction
  • Custom Fragment Animations
  • Duplicated IDs
  • Modal Overlay
  • Page Titles in Navigation
  • Scroll the Current Section Only
  • Sub Pages Demo
  • Video Embedding and Controls

Continues …

More Examples

  • Default Behavior;
  • gridNavigation(false);
  • nearestPageToTop(true);
  • rememberSectionsLastPage(true);
  • rememberSectionsStatus(true);

If you need a specific example or if you have a question about a feature feel free to ask or open an issue .

Use It! It’s Free

This project is open source, feel free to contribute to the development on Github .

Feedbacks, suggestions and bug reports are welcomes.

Use it as you wish and build great things. And when you have done so let me know the URL, I will appreciate it.

Designed and coded by Marco Lago Interaction/Experience/Game/Designer/Developer

You can find me on Twitter as @marcolago

If you like this work spread the word, you know how ;)

Fork me on GitHub

Mastering reveal.js

This video course that will teach you how to everything you need to know to create great looking presentations with reveal.js.

We'll start from the basics of installing reveal.js, creating slides and configuring your presentation. Then we'll work our way up to more interesting topics like presenting syntax highlighted code, animating slide content with Auto-Animate and using the speaker view. In the advanced videos we'll explore the reveal.js JavaScript API, plugin creation and how to customize keyboard bindings. (See full list of videos .)

Who is this for?

The course is aimed at people who are new to reveal.js as well as those of you who already understand the fundamentals but are ready to explore the full feature set.

You'll need to have a basic understanding of HTML, CSS and JavaScript. HTML is the backbone of reveal.js and used extensively throughout the course. CSS and JavaScript are mostly used for advanced videos on topics such as creating custom themes, working with the reveal.js API and editing the source code.

Who is presenting?

👋 I'm Hakim—a Swedish front-end developer and the creator of reveal.js. I co-founded and am currently working on Slides.com —a presentation platform and graphical editor built on top of reveal.js. Beyond that I love to work on visual demos and experiments at hakim.se .

I released the first version of reveal.js 10 years ago (!) and couldn't have imagined that it would eventually grow to be used by hundreds of thousands of people. I hope you'll join in and experience first hand why so many choose to create their presentations with reveal.js!

  • 5h 39m total runtime
  • Stream in HD
  • Download in 4K
  • Free updates

The course is sold via Gumroad . VAT is added at the time of purchase, if applicable. 100% money back if the course isn't a good fit for you—no questions asked.

Table of Contents

The course is divided into relatively short videos so that you can easily skip topics that aren't relevant to you or that you are already familiar with. The total runtime is 5.5 hours.

html presentation library

Slides.com — the reveal.js presentation editor.

Search code, repositories, users, issues, pull requests...

Provide feedback.

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly.

To see all available qualifiers, see our documentation .

  • Notifications

Create HTML presentations in seconds —

webslides/WebSlides

Folders and files, repository files navigation, webslides = create stories with karma.

MIT License

Finally, everything you need to make HTML presentations, landings, and longforms in a beautiful way. Just a basic knowledge of HTML and CSS is required. Designers, marketers, and journalists can now focus on the content. — https://webslides.tv/demos .

Simply choose a demo and customize it in seconds. Latest version: webslides.tv/webslides-latest.zip .

What's in the download?

The download includes demos and images (devices and logos). All content is for demo purposes only. Images are property of their respective owners.

  • Navigation (horizontal and vertical sliding): remote presenters, touchpad, keyboard shortcuts, and swipe.
  • Slide counter.
  • Permalinks: go to a specific slide.
  • Click to nav.
  • Simple CSS alignments. Put content wherever you want (vertical centering...)
  • 40+ components: background images/videos, quotes, cards, covers...
  • Flexible blocks with auto-fill and equal height.
  • Fonts: Roboto, Maitree (Serif), and San Francisco.
  • Vertical rhythm (use multiples of 8).
  • Code is clean and scalable. It uses intuitive markup with popular naming conventions. There's no need to overuse classes or nesting.
  • Each parent <section> in the #webslides element is an individual slide.

Vertical Sliding

Css syntax (classes).

  • Typography: .text-landing , .text-data , .text-intro ...
  • Background Colors: .bg-primary , .bg-apple , .bg-blue ...
  • Background Images: .background , .background-center-bottom ...
  • Cards: .card-50 , .card-40 ...
  • Flexible Blocks: .flexblock.clients , .flexblock.metrics ...

You can add:

  • Unsplash photos
  • animate.css
  • particles.js
  • Animate on scroll (Useful for longform articles)
  • Do not miss our demos .
  • Plugin Docs
  • Plugin Development
  • WebSlides was created by @jlantunez using Cactus .
  • Javascript: @Belelros and @LuisSacristan .
  • Based on SimpleSlides , by @JennSchiffer .

Releases 12

Used by 192.

@ShyLoon

Contributors 14

@Antonio-Laguna

  • JavaScript 49.3%

Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome , Safari or Firefox browser.

impress.js *

It’s a presentation tool inspired by the idea behind prezi.com and based on the power of CSS3 transforms and transitions in modern browsers.

visualize your big thoughts

and tiny ideas

by positioning , rotating and scaling them on an infinite canvas

the only limit is your imagination

want to know more?

one more thing...

have you noticed it’s in 3D * ?

Use a spacebar or arrow keys to navigate. Press 'P' to launch speaker console.

DEV Community

DEV Community

Emma Bostian ✨

Posted on Jan 11, 2019

How To Build A Captivating Presentation Using HTML, CSS, & JavaScript

Building beautiful presentations is hard. Often you're stuck with Keynote or PowerPoint, and the templates are extremely limited and generic. Well not anymore.

Today, we're going to learn how to create a stunning and animated presentation using HTML, CSS, and JavaScript.

If you're a beginner to web development, don't fret! This tutorial will be easy enough to keep up with. So let's slide right into it!

Getting started

We're going to be using an awesome framework called Reveal.js . It provides robust functionality for creating interesting and customizable presentations.

  • Head over to the Reveal.js repository and clone the project (you can also fork this to your GitHub namespace).

GitHub

  • Change directories into your newly cloned folder and run npm install to download the package dependencies. Then run npm start to run the project.

Localhost

The index.html file holds all of the markup for the slides. This is one of the downsides of using Reveal.js; all of the content will be placed inside this HTML file.

Themes

Built-In Themes

Reveal includes 11 built-in themes for you to choose from:

Themes

Changing The Theme

  • Open index.html
  • Change the CSS import to reflect the theme you want to use

VS Code

The theme files are:

  • solarized.css

Custom Themes

It's quite easy to create a custom theme. Today, I'll be using my custom theme from a presentation I gave called "How To Build Kick-Ass Website: An Introduction To Front-end Development."

Here is what my custom slides look like:

Slides

Creating A Custom Theme

  • Open css/theme/src inside your IDE. This holds all of the Sass files ( .scss ) for each theme. These files will be transpiled to CSS using Grunt (a JavaScript task runner). If you prefer to write CSS, go ahead and just create the CSS file inside css/theme.
  • Create a new  .scss file. I will call mine custom.scss . You may have to stop your localhost and run npm run build to transpile your Sass code to CSS.
  • Inside the index.html file, change the CSS theme import in the <head> tag to use the name of the newly created stylesheet. The extension will be  .css , not  .scss .
  • Next, I created variables for all of the different styles I wanted to use. You can find custom fonts on Google Fonts. Once the font is downloaded, be sure to add the font URL's into the index.html file.

Here are the variables I chose to use:

  • Title Font: Viga
  • Content Font: Open Sans
  • Code Font: Courier New
  • Cursive Font: Great Vibes
  • Yellow Color: #F9DC24
  • Add a  .reveal class to the custom Sass file. This will wrap all of the styles to ensure our custom theme overrides any defaults. Then, add your custom styling!

Unfortunately, due to time constraints, I'll admit that I used quite a bit of  !important overrides in my CSS. This is horrible practice and I don't recommend it. The reveal.css file has extremely specific CSS styles, so I should have, if I had more time, gone back and ensured my class names were more specific so I could remove the  !importants .

Mixins & Settings

Reveal.js also comes with mixins and settings you can leverage in your custom theme.

To use the mixins and settings, just import the files into your custom theme:

Mixins You can use the vertical-gradient, horizontal-gradient, or radial-gradient mixins to create a neat visual effect.

All you have to do is pass in the required parameters (color value) and voila, you've got a gradient!

Settings In the settings file, you'll find useful variables like heading sizes, default fonts and colors, and more!

Content

The structure for adding new content is:

.reveal > .slides > section

The <section> element represents one slide. Add as many sections as you need for your content.

Vertical Slides

To create vertical slides, simply nest sections.

Transitions

There are several different slide transitions for you to choose from:

To use them, add a data-transition="{name}" to the <section> which contains your slide data.

Fragments are great for highlighting specific pieces of information on your slide. Here is an example.

To use fragments, add a class="fragment {type-of-fragment}" to your element.

The types of fragments can be:

  • fade-in-then-out
  • fade-in-then-semi-out
  • highlight-current-blue
  • highlight-red
  • highlight-green
  • highlight-blue

You can additionally add indices to your elements to indicate in which order they should be highlighted or displayed. You can denote this using the data-fragment-index={index} attribute.

There are way more features to reveal.js which you can leverage to build a beautiful presentation, but these are the main things which got me started.

To learn more about how to format your slides, check out the reveal.js tutorial . All of the code for my presentation can be viewed on GitHub. Feel free to steal my theme!

Top comments (19)

pic

Templates let you quickly answer FAQs or store snippets for re-use.

lkopacz profile image

  • Joined Oct 2, 2018

I really love reveal.js. I haven't spoken in a while so I haven't used it. I've always used their themes and never thought about making my own. This is probably super useful for company presentations, too. I'm SO over google slides. Trying to format code in those is a nightmare LOL

sandordargo profile image

  • Location Antibes, France
  • Work Senior Software Engineer at Spotify
  • Joined Oct 16, 2017

The best thing in this - and now I'm not being ironic - is that while you work on a not so much technical task - creating a presentation - you still have to code. And the result is nice.

On the other hand, I know what my presentation skills teachers would say. Well, because they said it... :) If you really want to deliver a captivating presentation, don't use slides at all. Use the time to prepare what you want to say.

I'm not that good - yet, but taking their advice, if must I use few slides, with little information on them and with minimal graphical distractions. My goal is to impress them by what I say, not is what behind my head.

I'm going to a new training soon, where the first day we have to deliver a presentation supported by slides at a big auditorium and the next day we have to go back and forget about the slides and just get on stage and speak. I can't wait for it.

emmabostian profile image

  • Location Stockholm
  • Education Siena College
  • Work Software Engineer at Spotify
  • Joined Dec 21, 2018

Yeah it is time consuming, but the result is much better

myterminal profile image

  • Location Lake Villa, IL
  • Education Bachelor in Electronics Engineering
  • Work Computer & Technology Enthusiast
  • Joined Oct 8, 2017

How about github.com/team-fluxion/slide-gazer ?

It's my fourth attempt at creating a simple presentation tool to help one present ideas quickly without having to spend time within a presentation editor like Microsoft PowerPoint. It directly converts markdown documents into elegant presentations with a few features and is still under development.

bhupesh profile image

I think its a coincidence 😅 I was just starting to think to use reveal.js and suddenly you see this post 🤩

davinaleong profile image

  • Location Singapore
  • Work Web Developer at FirstCom Solutions
  • Joined Jan 15, 2019

Yup, RevealJS is awesome !

Previously I either used PPT or Google Slides. One is a paid license and the other requires an internet connection.

The cool thing about it is that since it's just HTML files behind the scenes, the only software you need to view it with is a web browser. Has amazing syntax-highlighting support via PrismJS. And as a web developer, it makes it simple to integrate other npm packages if need be...

I actually just used it to present a talk this week!

jeankaplansky profile image

  • Location Saratoga Springs,NY
  • Education BA, University of Michigan
  • Work Documentarian
  • Joined Sep 7, 2018

Check out slides.com If you want to skip the heavy lifting and/or use a presentation platform based on reveal.js.

Everything is still easy to customize. The platform provides a UI to work from and an easy way to share your stuff.

BTW - I have no affiliation with slides.com, or even a current account. I used the service a few years back when I regularly presented and wanted to get over PowerPoint, Google Slides, Prezi, etc.

wuz profile image

  • Email [email protected]
  • Location Indianapolis, IN
  • Education Purdue University
  • Pronouns he/him
  • Work Senior Frontend Engineer at Whatnot
  • Joined Aug 3, 2017

Great article, Emma! I love Reveal and this is a great write up for using it!

rosaliestea profile image

  • Joined Feb 13, 2024

Thanks for sharing your experience! A business presentation is always done with the aim of conveying key information about your company, products or projects. Regardless of what is being presented or in what format, our goal during the presentation process is to effectively convey ideas about products or solutions. Nowadays, there are really cool advanced solutions for this purpose, such as the Q-NEX control system . This will help you with convenient remote control

httpjunkie profile image

  • Location Palm Bay, FL
  • Education FullSail University
  • Work Developer Relations Manager at MetaMask
  • Joined Sep 16, 2018

I like Reveal, but I still have not moved past using Google docs slides because every presentation I do has to be done yesterday. Hoping that I can use Reveal more often this year as I get more time to work on each presentation.

  • Location Toronto, ON
  • Education MFA in Art Video Syracuse University 2013 😂
  • Work Cannot confirm or deny atm
  • Joined May 31, 2017

Well I guess you get to look ultra pro by skipping the moment where you have to adjust for display detection and make sure your notes don’t show because you plugged your display connector in 😩 But If the conference has no wifi then we’re screwed I guess

jude_johnbosco profile image

  • Email [email protected]
  • Location Abuja Nigeria
  • Work Project Manager Techibytes Media
  • Joined Feb 19, 2019

Well this is nice and I haven't tried it maybe because I haven't spoken much in meet ups but I think PowerPoint is still much better than going all these steps and what if I have network connection issues that day then I'm scrolled right?

sethusenthil profile image

Using Node and Soket.io remote control (meant to be used on phones) for my school's computer science club, it also features some more goodies which are helpful when having multiple presentations. It can be modded to use these styling techniques effortlessly. Feel free to fork!

SBCompSciClub / prez-software

A synchronized role based presentation software using node, prez-software.

TODO: Make system to easily manage multiple presentations Add Hash endocing and decoding for "sudo" key values TODO: Document Code

Run on Dev Server

npm i nodemon app.js Nodemon? - A life saving NPM module that is ran on a system level which automatically runs "node (file.js)" when files are modified. Download nodemon by running npm i -g nodemon

Making a Presentation

  • Copy an existing presentation folder
  • Change the folder name (which should be located at public/slides) with the name day[num of day] ex(day2)

Making a Slide

Making a slide is pretty simple. Just add a HTML section. <section> <!--slide content--> </section> inside the span with the class of "prez-root". Also keep in mind that you will need to copy and pate the markup inside the prez root to the other pages (viewer & controller).

Adding Text

You may add text however you desire, but for titles use the…

julesmanson profile image

  • Location Los Angeles
  • Education Engineering, Physics, and Math
  • Joined Sep 6, 2018

Fantastic post. I just loved it.

Awesome post! I’m glad I’m not the only one who likes libraries. 😎

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink .

Hide child comments as well

For further actions, you may consider blocking this person and/or reporting abuse

annoh_karlgusta profile image

7 Practical Applications of JavaScript + Tips

Karl Esi - Apr 11

iankcode profile image

Creating a custom logger in Node JS using Winston

Ian Kamau - Apr 11

tyaga001 profile image

🔥 6 Open-source Libraries You Must Know in 2024 🪄🔥

Ankur Tyagi - Apr 15

facubotta profile image

Meta Data in React

Facundo Botta - Apr 10

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

jQuery Script - Free jQuery Plugins and Tutorials

Beautiful html presentation library - reveal.js.

More in this category...

View Recommended Plugins

TOP jQuery Plugins For 2024

Beautiful HTML Presentation Library - reveal.js

reveal.js is a poweful jQuery JavaScript library for creating beautiful, touch-enable, full-features, powerpoint-like HTML5 presentation on the webpage.

  • 10 Best HTML Presentation Frameworks In JavaScript

Key Features:

  • Supports unlimited levels of nested slides.
  • Slide overview mode when you press ESC key.
  • Optimized for mobile & touch devices.
  • Allows you to write slide content using inline or external Markdown.
  • Supports fragments in a slide.
  • Performant Fade, Slide, Convex, Concave, Zoom transitions.
  • 10+ built-in themes to fit your design.
  • You can link between slides internally.
  • Presentations can be exported to PDF.
  • Allows you to pause the presentation with B or . key.
  • Right-to-left support
  • Extensive JavaScript API
  • Auto-progression
  • Parallax backgrounds
  • Custom keyboard bindings
  • Image, iframe, video , parallax background.

Table Of Contents:

  • Installation
  • Data Attributes
  • API Methods

How to use it:

1. Download the package and load the necessary JavaScript and CSS files in the HTML document.

2. Load a theme of your choice in the document:

3. Load a plugin of your choice in the document:

4. You can also install & import the reveal.js with NPM.

5. Initialize the reveal.js and we're ready to go.

6. Load an extersion as per your needs. All possible extensions:

  • highlight: Synax highlighter.
  • markdown: Handles parsing of markdown inside of presentations as well as loading of external markdown documents.
  • math: Enables rendering of math equations inside of reveal.js slides. Essentially a thin wrapper for MathJax.
  • notes: Handles opening of and synchronization with the reveal.js notes window.
  • search: Handles finding a text string anywhere in the slides and showing the next occurrence to the user by navigatating to that slide and highlighting it.
  • zoom: Applies zoom-in/out animations to slides

7. Insert your own slides into the presentation and done.

8. Or write your content using Markdown.

9. Available HTML data attribute to customize each slide.

10. All default configuration options to customize your presentation.

11. API methods.

12. Events.

v5.1.0 (2024-04-12)

  • Add the enter-fullscreen class to any element in your presentation to turn it into fullscreen trigger
  • Video backgrounds now continue to play seamlessly across multiple slides

v5.0.5 (2024-02-26)

  • Keyboard navigation support in scroll view

v5.0.4 (2023-12-22)

  • Fixed: Missing slide backgrounds in mobile scroll view

v5.0.3 (2023-12-18)

  • Search plugin now supports searching for diacritics and searches full phrases
  • Jump-to-slide now adapts to the configured slide number format
  • Slide background XSS prevention

v5.0.2 (2023-11-09)

  • Make Markdown plugin callable without a reveal deck instanc

v5.0.0 (2023-10-28)

  • Add support for scroll view (via config view: "scroll" or by appending ?view=scroll to a deck URL)
  • The PDF print view can now be activated via config Reveal.initialize({ view: 'print' })
  • The new URL query for activating the print view is ?view=print. It used to be ?print-pdf, which is still supported for backwards compatibility. 

v4.6.0 (2023-09-12)

  • Add support for line number offsets in Markdown code blocks.
  • Significantly speed up livereload
  • Add support for links to the id of an element nested inside slide
  • Adds ability to override Markdown plugin default options
  • Allow theme subfolders
  • Refactored Markdown plugin to use let/const and strict equality

v4.5.0 (2023-04-13)

  • Add support for jump-to-slide!
  • Add dracula theme
  • Add two new high contrast themes: black-contrast and white-contrast
  • Add default lang attribute to index.html
  • It's now easier to define custom fragment styles via a new .custom class and reduced specificity.
  • Live reload now works with .html/.md files in subfolders

v4.4.0 (2022-10-17)

  • Gradient slide backgrounds
  • If multiple separate notes are provided for the same slide they will now all show in the speaker view
  • 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

v4.3.1 (2022-03-21)

  • Fix bug that prevented speaker view from working from file:// protocol
  • Fix console errors attempting to parse postMessage events from sources other than reveal.js
  • Fix issue with providing your own config for MathJax3 plugin
  • Fix ZIP package gulp task
  • Replace deprecated String.prototype.substr()

v4.3.0 (2022-02-28)

  • 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.
  • 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.

v4.2.0 (2021-11-14)

  • The math plugin now supports three typesetting libraries: KaTeX, MathJax 2 and MathJax 3.
  • New event: beforeslidechange (#3003). This makes it possible to conditionally prevent navigations.
  • 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
  • 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

v4.1.2 (2021-06-09)

  • 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
  • Theme properties are now available as CSS variables, making them easy to override.

v4.1.1 (2021-05-21)

  • Adds support for Node.js 16.
  • data-background-image now accepts multiple images.
  • New Markdown config option animateLists — automatically turns all lists into stepped fragments.
  • 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.
  • Optimize DOM interactions and reduce forced layouts when exporting to PDF.
  • Fixed: Video/audio inside of a fragment now stop playing when the fragment is hidden.
  • Fixed: Markdown is now split into individual slides by the default separator (---) as advertised.
  • Fixed: 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.
  • Fixed: The has-dark-background helper class now works when using named colors for data-background-color.

v4.1.0 (2020-10-12)

  • New: Add data-visibility="hidden" to a slide to hide it from view. 
  • New: Add the r-fit-text class to make a text node grow to be as large as possible without overflowing the slide.
  • 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.

v4.0.2 (2020-05-29)

  • 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.

v4.0.1 (2020-05-25)

  • Fixed issues when printing speaker notes to PDF
  • Fixed incorrect auto-animations when there are multiple auto-animated presentations on the same page

This awesome jQuery plugin is developed by hakimel . For more Advanced Usages, please check the demo page or visit the official website.

  • Prev: Morden Pageflip Effect - turn.js
  • Next: Animated Page Scrolling Effect with jQuery - superscrolloram

Related jQuery Plugins

jQuery Plugin For Handling CSS3 @Keyframe Animations - Anime.js

jQuery Plugin For Handling CSS3 @Keyframe Animations - Anime.js

jQuery Plugin for Scroll-Activated CSS3 Animations - scrollEffect.js

jQuery Plugin for Scroll-Activated CSS3 Animations - scrollEffect.js

3D Multi-layer Tilt Hover Effect With jQuery And CSS3

3D Multi-layer Tilt Hover Effect With jQuery And CSS3

Simple Ripple Click Effect Using jQuery And CSS3 Transforms

Simple Ripple Click Effect Using jQuery And CSS3 Transforms

Button Selection Interaction With jQuery & CSS3

Button Selection Interaction With jQuery & CSS3

Material Ripple Effect In jQuery And CSS3 - Ripple.js

Material Ripple Effect In jQuery And CSS3 - Ripple.js

You Might Also Like

Custom Smooth Scroll For Anchor Links - jQuery AnchorScroll

Custom Smooth Scroll For Anchor Links - jQuery AnchorScroll

jQuery Plugin For Water Ripple Animation - ripples

jQuery Plugin For Water Ripple Animation - ripples

Interactive Image Hover Effect With jQuery And GSAP

Interactive Image Hover Effect With jQuery And GSAP

Customizable Fixed Scroll To Top Button With jQuery - toTop.js

Customizable Fixed Scroll To Top Button With jQuery - toTop.js

jQuery Plugin To Create Snowfall Animations On Your Web Page - Snowfall

jQuery Plugin To Create Snowfall Animations On Your Web Page - Snowfall

Text Scrolling Plugin for jQuery - Marquee

Text Scrolling Plugin for jQuery - Marquee

Add Your Review

Follow us on Twitter

JavaScript & CSS presentation

Latest free JavaScript and CSS libraries to create professional HTML presentations on your web app.

CSS Only Presentation Library – slide.css

css-presentation-library

A CSS library for creating interactive, responsive HTML presentations, one-page scrolling websites, and vertical page sliders without JavaScript.

Advanced Presentation JavaScript Library – Presenta

Advanced Presentation JavaScript Library - Presenta

A powerful and full-featured presentation library to create responsive, touch-friendly, fully customizable presentations on the web app.

Pure CSS Presentation With Rotate Animation

Pure CSS Presentation With A Rotate Animation

A CSS only, fully responsive, print-ready HTML5 presentation template that switches between slides with a cool rotate effect.

Horizontal & Vertical One Page Scroll Plugin In JavaScript – Wholepage Slider

Horizontal & Vertical One Page Scroll Plugin In JavaScript - Wholepage Slider

A mobile-friendly fullscreen page slider JavaScript plugin that applies horizontal and vertical one-page scrolling effects to sectioned pages within the document.

Small Flexible Presentation Library – presentr.js

Small Flexible Presentation Library - presentr.js

presentr.js is a lightweight, zero-dependency JavaScript library for creating a professional presentation on the browser.

Modern Responsive Presentation Library – Hacker’s Tiny Slide Deck

Modern Responsive Presentation Library - Hacker's Tiny Slide Deck

Hacker’s Tiny Slide Deck is a pure JavaScript library that makes it easy to create a modern, responsive, professional slide deck (presentation) from a markdown document.

Minimal Clean Presentation Library For Web – make-slides

Minimal Clean Presentation Library For Web - make-slides

The make-slides JavaScript library transforms a group of content sections into a responsive, minimal, pretty clean presentation with navigation arrows and bottom progress bar.

Cool Presentation Library With JavaScript And Animate.css – Impresi.js

Cool Presentation Library With JavaScript And Animate.css - Impresi.js

Impresi.js is a JavaScript library for creating a dynamic, interactive presentation for the web.

Fullscreen Scrolling Presentation In JavaScript – Pageable

fullscreen-scrolling-presentation-pageable-min

Pageable is a lightweight JavaScript library to generate a fullscreen scrolling presentation where the users are allowed to scroll through sectioned pages with drag, swipe, and mouse wheel events.

Simple Responsive Presentation Library – Talkie.js

Talkie

Talkie.js is a simple yet robust JavaScript librar that lets you create responsive, accessible, customization presentation slides.

WebSlides Demos

All of these presentations are free and responsive. 40+ components with a solid CSS architecture .

Share your slides using #WebSlides .

Thumbnail Why WebSlides?

Why WebSlides?

Thumbnail Landings

General Questions

WebSlides Documentation: Components · Classes · Media .

Why WebSlides? Good karma

There're excellent presentation tools out there. WebSlides is about telling and sharing stories. Hypertext, clean code, and beauty as narrative elements.

Is WebSlides a framework?

We're all tired of heavy CSS frameworks. WebSlides is a starting point that provides basic structural components and a scalable CSS architecture .

WebSlides Files

What can you do with WebSlides?

WebSlides is a cute solution for making HTML presentations, landings, and portfolios. Put content wherever you want , add background images, videos ...

How easy is WebSlides?

You can create your own presentation instantly. Just a basic knowledge of HTML and CSS is required. Simply choose a demo and customize it.

Loved by designers and developers.

Some of the most famous brands are using WebSlides.

"WebSlides has pushed the keynotes to a new limit. Fantastic work!" Javi Pérez .
"I was immediately thrilled by the simplicity of WebSlides. This is absolutely great." Henrik Ståhl .
"Please make this a trend. The coolest thing I've seen so far in 2017." Austin Guevara .

Start in seconds

Create your own presentation instantly. 120+ premium slides ready to use.

Free Download Pay what you want.

Modern HTML Presentations

Download or → to learn more.

How Does It Work?

Slides are basic HTML.

The deck.core module keeps track of slide states and deck states , leaving CSS to define what each state look like…

…and how to transition between them.

Extensions use core events and methods to add goodies , giving presenters the freedom to add what they want and leave out what they don’t.

Great. Now What?

Only know html.

Use included premade themes and templates to start making your deck immediately.

Get Started

CSS+JS Badass?

Make custom decks with the API exposed by the core and extensions.

Something In-between?

Take a little from both worlds. Tweak a theme, hack an extension, or write some of your own.

  • 4 Dependencies
  • 58 Dependents
  • 51 Versions

Create JavaScript PowerPoint Presentations

PptxGenJS Sample Slides

  • Table of Contents

Introduction

Works everywhere, full featured, simple and powerful, export your way, html to powerpoint, additional builds, angular/react, es6, typescript, script/web browser, library api, html-to-powerpoint feature, library ports, issues / suggestions, contributors.

This library creates Open Office XML (OOXML) Presentations which are compatible with Microsoft PowerPoint, Apple Keynote, and other applications.

  • Every modern desktop and mobile browser is supported
  • Integrates with Node, Angular, React, and Electron
  • Compatible with PowerPoint, Keynote, and more
  • All major object types are available (charts, shapes, tables, etc.)
  • Master Slides for academic/corporate branding
  • SVG images, animated gifs, YouTube videos, RTL text, and Asian fonts
  • The absolute easiest PowerPoint library to use
  • Learn as you code will full typescript definitions included
  • Tons of demo code comes included (over 75 slides of features)
  • Exports files direct to client browsers with proper MIME-type
  • Other export formats available: base64, blob, stream, etc.
  • Presentation compression options and more
  • Includes powerful HTML-to-PowerPoint feature to transform HTML tables into presentations with a single line of code

Visit the demos page to create a simple presentation to see how easy it is to use pptxgenjs, or check out the complete demo which showcases every available feature.

  • PptxGenJS Demos

Installation

PptxGenJS NPM Home

jsDelivr Home

Bundle: Modern Browsers and IE11

Min files: Modern Browsers

GitHub Latest Release

Bundle: Modern Browsers

  • Use the bundle for IE11 support
  • CommonJS: dist/pptxgen.cjs.js
  • ES Module: dist/pptxgen.es.js

Documentation

Quick start guide.

PptxGenJS PowerPoint presentations are created via JavaScript by following 4 basic steps:

That's really all there is to it!

Full documentation and code examples are available

  • Creating a Presentation
  • Presentation Options
  • Adding a Slide
  • Slide Options
  • Saving a Presentation
  • Master Slides
  • Adding Charts
  • Adding Images
  • Adding Media
  • Adding Shapes
  • Adding Tables
  • Adding Text
  • Speaker Notes
  • Using Scheme Colors
  • Integration with Other Libraries

Easily convert HTML tables to PowerPoint presentations in a single call.

Learn more:

  • HTML-to-PowerPoint Docs/Demo

React: react-pptx - thanks to Joonas !

Please file issues or suggestions on the issues page on github , or even better, submit a pull request . Feedback is always welcome!

When reporting issues, please include a code snippet or a link demonstrating the problem. Here is a small jsFiddle that is already configured and uses the latest PptxGenJS code.

Sometimes implementing a new library can be a difficult task and the slightest mistake will keep something from working. We've all been there!

If you are having issues getting a presentation to generate, check out the code in the demos directory. There are demos for both client browsers, node and react that contain working examples of every available library feature.

  • Use a pre-configured jsFiddle to test with: PptxGenJS Fiddle
  • View questions tagged PptxGenJS on StackOverflow . If you can't find your question, ask it yourself - be sure to tag it PptxGenJS .

Thank you to everyone for the issues, contributions and suggestions! ❤️

Special Thanks:

  • Dzmitry Dulko - Getting the project published on NPM
  • Michal Kacerovský - New Master Slide Layouts and Chart expertise
  • Connor Bowman - Adding Placeholders
  • Reima Frgos - Multiple chart and general functionality patches
  • Matt King - Chart expertise
  • Mike Wilcox - Chart expertise
  • Joonas - React port

PowerPoint shape definitions and some XML code via Officegen Project

If you find this library useful, please consider sponsoring us through a donation

Copyright © 2015-present Brent Ely

  • html-to-powerpoint
  • javascript-create-powerpoint
  • javascript-create-pptx
  • javascript-generate-pptx
  • javascript-powerpoint
  • javascript-powerpoint-charts
  • javascript-pptx
  • js-create-powerpoint
  • js-create-pptx
  • js-generate-powerpoint
  • js-powerpoint
  • js-powerpoint-library
  • js-powerpoint-pptx
  • react-powerpoint
  • typescript-powerpoint

Package Sidebar

npm i pptxgenjs

Git github.com/gitbrent/PptxGenJS

gitbrent.github.io/PptxGenJS/

Downloads Weekly Downloads

Unpacked size, total files, last publish, collaborators.

brentely

Create PowerPoint presentations with JavaScript

The most popular powerpoint+js library on npm with 1,800 stars on github, works everywhere.

  • Every modern desktop and mobile browser is supported
  • Integrates with Node, Angular, React, and Electron
  • Compatible with Microsoft PowerPoint, Apple Keynote, and many others

Full Featured

  • All major objects are available (charts, shapes, tables, etc.)
  • Master Slide support for academic/corporate branding
  • Animated gifs, SVG images, YouTube videos, RTL text, and Asian fonts

Simple And Powerful

  • The absolute easiest PowerPoint library to use
  • Learn as you code using the built-in typescript definitions
  • Tons of sample code comes included (75+ slides of demos)

Export Your Way

  • Exports files direct to client browsers with proper MIME-type
  • Other export formats available: base64, blob, stream, etc.
  • Presentation compression options and more

Working as a Senior Fullstack Developer at Yummy Publishing (previously valantic , Sulu and MASSIVE ART ), lecturing at the Vorarlberg University of Applied Sciences , founded and co-organizing the VlbgWebDev meetup , used to co-organize AgentConf .

Creating highly customizable HTML presentations with markdown and pandoc

Update 2021-02-28 : Instead of just having the template I have extracted a markdown-presentation package , which is used by the accordingly updated presentation-template . This allows to adjust styling just once and have it in all my presentations, after updating the package using git submodules. I also got rid of the graphviz integration and adjusted the Makefile , so that dot is only used if the files changed since the last generation, which allowed to shorten the build time by a lot if diagrams have already been generated. Read more about this extraction and the improved build step in another blog .

Warning : This is a rather long blog post explaining also some details. If you are just interested in the end result you might want to jump the the conclusion right away

I love markdown . It’s super easy to write, and also very easy to read, making it a great tool to write e.g. blogs like this one. Since markdown is written using plain text files, it has another bunch of advantages too:

  • It can be easily versioned using other tools like git
  • It is guaranteed that the content will still be accessible in many years, without worrying about file format incompatabilities
  • Tools like pandoc enable us to convert it to many different output files

I have especially fallen in love with pandoc, so that I ended up also writing my master thesis using markdown and pandoc. And of course as a daily GitHub user I am using markdown a lot. It is used when writing issues, PRs, comment on any of these things and even in repositories markdown files are parsed and shown nicely formatted. GitHub has even created its own flavour of markdown and a guide on mastering markdown , another indicator of the importance of this language to this company.

Then I stumbled upon this tweet of Max Stoiber , which sounded interesting. A NPM package that allows to write slides in markdown and afterwards serve them via a webserver using Gatsby under the hood.

How to quickly create a talk from scratch 🔥 Write outline with markdown Install mdx-deck by @jxnblk Add — and in the right places to split outline into slides Done! It does not get faster than presenting your outline 💯 — Max Stoiber ( @mxstbr ) December 1, 2019

First steps with mdx-deck and its obstacles

That sounded great, so I decided to give it a try. The setup went really smooth, and it didn’t take very long to create the first slides. There was an annoying issue that crashed the watch mode , but they seemed to be working on that, so I still decided to give it a try and used it to create the slides for a React lecture I am currently giving. It worked quite well at the start, but it always felt a little bit strange… Probably the weirdest thing for me as a minimalist was that a lot of functionality required to put some JavaScript into the markdown file, which I so desperately wanted to keep clean:

  • MDX allows to render React components in markdown
  • Using themes requires an import and export statement in markdown

The pure concept of having any kind of code in a human-readable file format — except if the code itself is what you are writing about — gave me a very bad gut feeling. It eliminated 2 out of 3 advantages I initially mentioned! However, I accepted it for quite some time, but then more issues piled up:

  • For some reason the watch task only reacted on the first change I made to a file. Subsequent changes were ignored.
  • Starting the build or watch task took almost half a minute.
  • I was not able to set a padding on code blocks in the presentation. Somehow the used syntax highlighter added some inline styling I was not able to override (not even with !important ).

All of this was very annoying, but embedding images was the final straw. I wanted to do it the markdown way:

But that does not seem to work with mdx-deck. A tool for preparing presentation slides, that did not even support embedding images? To be fair, there was a workaround suggested , but importing the image and writing the img tag on my own in my markdown file was not acceptable to me. I’ve had accepted (for some reasons I don’t understand anymore) the use of JavaScript in other places mentioned above, but using JavaScript to embed an image was just too much for me.

As a JavaScript developer it felt great to use the tools we are using every day to also deliver presentations. But at this point it just seemed way to bloated for a relatively easy task. And then it hit my mind: Why don’t I use pandoc, which I also liked when writing my thesis? So I took about 1.5 hours (right before my lecture) and decided to give it a try. And that was enough time to come up with a solution, that was almost as good as mdx-deck, but I didn’t have to pollute my markdown with JavaScript code. As a nice side effect the complete build of the same presentation takes now 300ms instead of almost 30s (sic!). Minimalism wins again!

Using plain markdown, pandoc and a few lines of code instead

I’ve first had a quick look at the pandoc documentation and found a section about producing slide shows . It supports different ways of creating slide shows, but none of them suited me for different reasons. Especially that most of them couldn’t be installed via a package manager was odd. And I certainly didn’t want to own the code and copy it into my repository. Additionally, when you think about it, producing a HTML slide show is not very hard. Basically it is styling it in some way that a slide fits exactly the size of the screen, and two event handlers to navigate to the next or previous slides. So I’ve decided to build that on my own and published it as a presentation-template on GitHub . I am still going to run through the most important points.

First of all I had to convert the file I called slides.md written using pandoc’s flavour of markdown to HTML. This is as easy as executing the following command — assuming you have pandoc already installed:

The pandoc command takes the name of the markdown file as first parameter, and will automatically recognize to which format it should be converted by checking the file extension of the -o option representing the output file. Usually pandoc would only create a document fragment, but by adding the -s flag it will also include everything a proper HTML document needs, like html , head and body tags. In order to distribute the file without much hassle I have added the --self-contained flag, which will cause to inline all styles and scripts instead of just referencing them. The --section-divs will wrap every header in markdown in a section tag along with its content. So everything until the next heading of the same level will be included in that section . This is an enormous help when trying to style the presentation! Finally the -c option refers to the file containing the CSS, which is called slides.css in my case and does not contain anything except for plain old CSS, and the -A option to inject another HTML file called slides_before_body.html right before the closing body tag. All this HTML file contains is a few lines of JavaScript, which enable the user of the presentation to go back and forth using the arrow keys. For this it will collect all section tags with an id , so that they can be used as an anchor by just setting the fragment of the URL . It will also add an empty fragment as the first available fragment, because the title slide does not get it’s own section .

So by just using three different files ( slides.md , slides.css and slides_before_body.html ) and the pandoc command we already have a pretty nice HTML presentation, which — unless for the HTML markup at which pandoc does an excellent job — we have full control over. There is no third party script adding some inline styles that causes troubles when styling the presentation, and building the presentation is a matter of a few hundreds milliseconds instead of waiting for half a minute. This even makes the watch task obsolete, especially because it is also easily possible to grasp the structure of the presentation when looking at the markdown source as well.

I could have stopped there, but there was one more thing I was really keen on including into my presentation-template, so that I digged bit deeper and invested about 2 more hours: I wanted to be able to include diagrams in my markdown file by using the dot language of graphviz . You can imagine the dot language to be the markdown of diagrams, using an easy-to-write and easy-to-read syntax to describe diagrams. Since it is so easy-to-read, it felt like the perfect candidate for being embedded in markdown. I imagined that somehow like this:

And after asking on StackOverflow if this was possible, I was redirected to the diagram-generator lua-filter . It looked very promising, but it did a little bit more than I needed, and since I like to keep things minimal I’ve copied it and adjusted it:

This code will convert all fenced code blocks with the graphviz annotation you’ve seen in my example above into a SVG string, which in turn can be embedded in the HTML element. Awesome!

All that was left to do was to include this filter in the pandoc command using the --lua-filter option:

Since this command is not that rememberable I went old school and put it into a Makefile . Writing such a Makefile is not that hard, and make is installed on almost every linux machine anyway.

So in conclusion it took me maybe 4 hours to find solution, which is probably less time I already tried to work around some issues of mdx-deck. Summarized this solution also has other advantages:

  • Performance is a lot better (build time of 300ms compared to 27s) making a watch task obsolete
  • Fully customizable by CSS, with the only conflicts being the ones you generate on your own
  • About 20 lines of JavaScript allow to navigate through the presentation using the arrow keys
  • About 30 lines of Lua allow to inline graphviz documents and include them as inlined SVG into the presentation

I have to admit that I had to include a few lines of code in the presentation-template, but it is not much. And, more importantly, it is outside of my markdown file, and that’s where it belongs.

Feel free to have a look at my presentation-template and adjust it to your needs.

IMAGES

  1. Essential CSS Libraries for Web Designers

    html presentation library

  2. Beautiful HTML Presentation Library

    html presentation library

  3. Online library landing page template 1156783 Vector Art at Vecteezy

    html presentation library

  4. Presentation slides using HTML and CSS

    html presentation library

  5. Library Responsive Website Template #48292

    html presentation library

  6. Landing page template of E-Book Library Illustration Concept. Modern

    html presentation library

VIDEO

  1. Library Management Presentation

  2. Dynamic Life Range Slider with HTML CSS and JavaScript

  3. Library PPT for NAAC Inspection

  4. Final presentation library and computer lab

  5. How To Make Slider Using Html , CSS and JavaScript (Arabic)

  6. Create An Animated Virtual Bookshelf With JavaScript And CSS3

COMMENTS

  1. The HTML presentation framework

    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 ...

  2. GitHub

    reveal.js is an open source HTML presentation framework. It enables anyone with a web browser to create beautiful presentations for free. Check out the live demo at revealjs.com.. The framework comes with a powerful feature set including nested slides, Markdown support, Auto-Animate, PDF export, speaker notes, LaTeX typesetting, syntax highlighted code and an extensive API.

  3. 10 Best HTML Presentation Frameworks In JavaScript (2024 Update)

    Best Vanilla JS HTML Presentation Frameworks Beautiful HTML Presentation Library - reveal.js. 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.

  4. How to Create Beautiful HTML & CSS Presentations with WebSlides

    Getting Started with WebSlides. To get started, first download WebSlides. Then, in the root folder, create a new folder and call it presentation. Inside the newly created presentation folder ...

  5. Top 9 JavaScript frameworks to create beautiful presentation slides

    Impress (37.3k ⭐) — Another open source HTML presentation framework that is similar to reveal.js, but with a different approach, inspired by the idea behind prezi.com. It uses CSS3 3D transforms to create dynamic and spatial presentations that can zoom, rotate, and pan across the slides. ... Spectacle (9.5k ⭐) — A React-based library ...

  6. reveal.js

    The HTML Presentation Framework. Created by Hakim El Hattab/ @hakimel. Hello There. 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 Spacekey to navigate through all slides.

  7. WebSlides: Create Beautiful HTML Presentations

    WebSlides is the easiest way to make HTML presentations. Just choose a demo and customize it in minutes. 120+ slides ready to use. Good karma. WebSlides is a beautiful solution for telling stories. ... HTML and CSS as narrative elements. Work better, faster. Designers, marketers, and journalists can now focus on the content. Simply choose a ...

  8. Demo

    The HTML Presentation Framework. Created by Hakim El Hattab and contributors. Sponsored by. Hello There. 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.

  9. reveal.js

    A framework for easily creating beautiful presentations using HTML. Reveal.js HTML Presentations Made Easy. Created by Hakim El Hattab / @hakimel. Heads Up. ... Presentations can be exported to PDF, below is an example that's been uploaded to SlideShare. Take a Moment.

  10. Create Incredible Web Presentations with Reveal.js

    Reveal.js is an open-source HTML presentation framework. Anyone with a web browser can use it to make attractive presentations for free. The program allows anyone with a web browser to create fully-featured and interactive presentations that support CSS 3D transforms, nested slides, and a variety of other capabilities.It is recommended for those interested in programmable techniques and web ...

  11. GitHub

    The presentation markup hierarchy needs to be .reveal > .slides > section where the section represents one slide and can be repeated indefinitely. If you place multiple section elements inside of another section they will be shown as vertical slides. The first of the vertical slides is the "root" of the others (at the top), and will be included in the horizontal sequence.

  12. Flowtime.js A HTML Presentation Framework

    Flowtime.js is a framework for easily building HTML presentations or websites. It's built with web standards in mind and on top of a solid full page grid layout. The animations are managed with native and accelerated CSS3 transitions. Javascript takes care of the navigation behaviour and adds advanced functionalities and configuration options.

  13. Mastering reveal.js

    HTML is the backbone of reveal.js and used extensively throughout the course. CSS and JavaScript are mostly used for advanced videos on topics such as creating custom themes, working with the reveal.js API and editing the source code. ... Configuring your presentation. 8:23 Working with vertical slides. 9:05 Creating slides using Markdown. 16: ...

  14. GitHub

    WebSlides = Create stories with Karma. Finally, everything you need to make HTML presentations, landings, and longforms in a beautiful way. Just a basic knowledge of HTML and CSS is required. Designers, marketers, and journalists can now focus on the content. — https://webslides.tv/demos.

  15. impress.js

    It's a presentation tool inspired by the idea behind prezi.com and based on the power of CSS3 transforms and transitions in modern browsers. visualize your big thoughts. and tiny ideas. by positioning, rotating and scaling them on an infinite canvas. the only limit is your imagination.

  16. How To Build A Captivating Presentation Using HTML, CSS, & JavaScript

    Making a Presentation. Copy an existing presentation folder; Change the folder name (which should be located at public/slides) with the name day[num of day] ex(day2) Making a Slide. Making a slide is pretty simple. Just add a HTML section. <section> <!--slide content--> </section> inside the span with the class of "prez-root". Also keep in mind ...

  17. How to Create Presentation Slides With HTML and CSS

    All these features will be enabled with JavaScript. Inside js/index.js, we'll begin by storing references to the presentation wrapper, the slides, and the active slide: 1. let slidesParentDiv = document.querySelector('.slides'); 2. let slides = document.querySelectorAll('.slide'); 3.

  18. Beautiful HTML Presentation Library

    reveal.js is a poweful jQuery JavaScript library for creating beautiful, touch-enable, full-features, powerpoint-like HTML5 presentation on the webpage.. See Also: 10 Best HTML Presentation Frameworks In JavaScript; Key Features: Supports unlimited levels of nested slides. Slide overview mode when you press ESC key.

  19. Latest Free Presentation Frameworks In JavaScript And CSS

    Talkie.js is a simple yet robust JavaScript librar that lets you create responsive, accessible, customization presentation slides. Demo Download. Tags: presentation. Post navigation. ← Older posts. Latest free JavaScript and CSS libraries to create professional HTML presentations on your web app.

  20. WebSlides Demos

    Beautiful HTML presentations and websites made with WebSlides. Good karma. WebSlides. WebSlides @WebSlides; WebSlides Demos. All of these presentations are free and responsive. 40+ components with a solid CSS architecture. Share your slides using #WebSlides. Why WebSlides? Jan 08, 2017; Landings Jan 07, 2017; Portfolios Jan 06, 2017;

  21. deck.js » Modern HTML Presentations

    A jQuery library for modern HTML presentations. deck.js. Getting Started; Docs; GitHub; deck.js Modern HTML Presentations. Download or ...

  22. Presentation Slides with HTML, CSS and JS

    About HTML Preprocessors. HTML preprocessors can make writing HTML more powerful or convenient. For instance, Markdown is designed to be easier to write and read for text documents and you could write a loop in Pug. ... // get elements let presentation = document.querySelector(".presentation"); let slides = document.querySelectorAll(".slide ...

  23. pptxgenjs

    Presentation compression options and more; HTML to PowerPoint. Includes powerful HTML-to-PowerPoint feature to transform HTML tables into presentations with a single line of code; Live Demos. Visit the demos page to create a simple presentation to see how easy it is to use pptxgenjs, or check out the complete demo which showcases every ...

  24. Home

    Create PowerPoint presentations with JavaScript ... Demos. HTML to PPTX. Works Everywhere. Every modern desktop and mobile browser is supported; Integrates with Node, Angular, React, and Electron; Compatible with Microsoft PowerPoint, Apple Keynote, and many others ... The absolute easiest PowerPoint library to use; Learn as you code using the ...

  25. Creating highly customizable HTML presentations with markdown and

    This is as easy as executing the following command — assuming you have pandoc already installed: pandoc\. slides.md\ -o slides.html\ -s\ --self-contained\ --section-divs\ -c slides.css\ -A slides_before_body.html. The pandoc command takes the name of the markdown file as first parameter, and will automatically recognize to which format it ...