Modern HTML Presentations

Overview

#deck.js

A JavaScript library for building modern HTML presentations. deck.js is flexible enough to let advanced CSS and JavaScript authors craft highly customized decks, but also provides templates and themes for the HTML novice to build a standard slideshow.

Quick Start

This repository includes a boilerplate.html as a starting point, with all the extensions included. Just download it, open boilerplate.html, and start editing your slides.

Documentation

Check out the documentation page for more information on the methods, events, and options available in core and all the included extensions. A sample standard slide deck is included in the package under the introduction folder. You can also view that sample deck online to play with the available style and transition themes.

Extensions, Themes, and Related Projects

Take a look at the wiki for lists of extensions, themes, and other related goodies. If you have a publicly available project of your own, feel free to add to the list.

Dependencies (included in this repository)

Tests & Support

Unit tests are written with Jasmine and jasmine-jquery. You can run them here.

deck.js has been tested with jQuery 1.6+ and works in IE7+, Chrome, FF, Safari, and Opera. The more capable browsers receive greater enhancements, but a basic cutaway slideshow will work for all browsers listed above. Please don't give your presentations in IE6.

For any questions or general discussion about deck.js please direct your attention to the mailing list (uses Google groups.) If you would like to report a bug, please see the issues page.

Printing

Core includes stripped down black and white print styles for the standard slide template that is suitable for handouts.

Awesome Contributors

If you would like to contribute a patch to deck.js please do as much as you can of the following:

  • Add or amend Jasmine tests.
  • Add inline documentation.
  • If the standard snippet of an extension changes, please change it in both the introduction deck and the snippet html in the extension folder.
  • If the API changes, it would be awesome to receive a parallel pull request to the gh-pages branch which updates the public-facing documentation.

License

Copyright (c) 2011-2014 Caleb Troughton

Licensed under the MIT license

Donations

Gittip donate button

Comments
  • A Roadmap Discussion

    A Roadmap Discussion

    I'm looking for any and all thoughts, concerns, and feedback on a number of plans for this project.

    1.0

    SemVer

    The deck.js project currently does not use semantic versioning. There is only a "stable" branch, and "master" serves as an integration branch where I can live with changes for a while before merging into stable. When I initially released it, this was just something I decided to punt on until it became necessary. When the project grew to a point that it made sense, I turned it into an experiment. How long could this thing go until versioning became an issue? I haven't fielded a complaint about it in those two years.

    But as you'll see below, going forward without a versioning scheme would be a problem. The only reason it's worked until now is relative stability of the API from Day 1. I want to make some breaking changes to the current API. Before that happens, there needs to be a version to break from. So the first order of business will be to release the 1.0.0 version of deck.js.

    Fix (Some) Open Issues

    I've created a 1.0 milestone in the issue tracker. It's bug fixes, little style tweaks, documentation improvements, @flavorjones's SCSS improvements, etc. There is only one issue that is technically an API addition, but I don't think the changes it introduces will effect any 3rd-party deck extensions.

    1.x, 2.x, beyond

    These ideas are in no particular order.

    Extensions

    I believe extensions could benefit from a little more structure in how they're integrated with deck core. My instincts say that this change can be made without breaking backwards compatability, but I'm 100% willing to break it if needed. I want to expand extend to take an object. The properties of this object would look something like this...

    • name: Required. A string to identify this extension.
    • methods: Optional. A hash containing new methods. The equivalent of using the current extend.
    • options: Optional. A hash of options to add to the deck options object. Extension options will live in their own namespace, but if there are multiple extensions with the same option the user can use an "all" option during init to pass those options to all extensions. If a user wants to disable an included extension, they can pass "false" to the namespace of that extension on init.
    • events: Optional. A hash of callbacks for deck events.
    • keys: Optional. A hash where keys are the keyboard keys (using something like keymaster and values are an object that says what method to call and a brief description of what that method does. The hope is that this will resolve key conflicts between extensions that we cannot deal with using the current each-extension-deals-with-its-own-key-binding approach. It also allows for API expansion to get a list of all the available key shortcuts. And this.

    Here is a sample of what the goto extension might look like. I believe the current extend with a method name and function arguments could be deprecated but still used, and removed in a later major release.

    Stop officially supporting integrated decks

    By integrated decks I mean embedding the deck container into any arbitrary page. The CSS in particular jumps through some hoops to avoid stepping on any styles that may exist elsewhere on the page. It will be simpler all around to expect the deck to be the only thing on the page using a standard boilerplate. If users want to embed decks into a page, they would be encouraged to create them as a separate resource and embed them as an iframe.

    Less jQuery plugin, More classes utilizing jQuery

    I want to move away from $.deck(...) towards new Deck(...). This would be the first step of a few towards framework agnosticism using the adapter pattern.

    Move some extensions into core, move other extensions to external projects

    Hash needs to become part of core. It's integral to other extensions and I can't think of a downside to including it. This is already a ticket. This ARIA ticket should also be worked into core and the default extensions. I want to move menu and goto extensions out of the main project into external extensions. I feel they're less useful to the general public.

    End support for "complex" slide configuration

    When this thing was first created I conjured up some ridiculous use case for non-traditional slide configurations. You can see an example of this in the complex.html fixture in the test suite. Slides that are out of order, nested in reverse, elements that are more than one slide, etc. Nobody utilizes this flexibility and I don't blame them. It's not very useful.

    Supporting only the typical heirarchical slide/subslide/step form of presentation may allow for simpler code and some useful API additions (getTopLevelSlides???).

    Rework CSS states

    Restricting to a normal heirarchy should allow for fewer slide state classes and applying them differently. Right now you may have a deck in the following state:

    .slide.deck-before
    .slide.deck-before.deck-child-current
      .slide.deck-before
      .slide.deck-previous
      .slide.deck-current
      .slide.deck-next
      .slide.deck-after
    .slide.deck-after
    

    I'd like to change a deck in the same state to...

    .slide.deck-previous
    .slide.deck-current
      .slide.deck-current
      .slide.deck-current
      .slide.deck-current
      .slide.deck-next
      .slide.deck-after
    .slide.deck-next
    

    This state application recognizes subslides as what they are, steps, and removes the necessity for the deck-child-current class. It would also allow this issue to be easily solved in core CSS without bolting on the deck.horizon gist/extension mentioned in the ticket.

    New Correlated Projects

    Probably more work than all of the above changes combined...

    Extension Discovery (and more)

    The wiki is cool and all, but I'd like to create a real project to track extensions/themes/related-projects and help people find them. Perhaps something in the same vein as Grunt and its plugin page? Perhaps these plugins and themes could be selected, built, and downloaded in a ready-to-go boilerplate zip for the user? If anyone has any suggestions for other useful functions this site could include, I'd love to hear them.

    Component Toolkit

    There's already a ticket open on this. I imagine this project being CSS only and containing mainly slide layout related styles. This vcenter class is the only one that exists in core so far but I'm excited to sit down and put thought into other layout patterns commonly used in presentations.

    CC @infews @mikeharris100 @iros @cykod @barraq @nemec @flavorjones @twitwi

    discussion 
    opened by imakewebthings 19
  • Chrome - Slides disappearing and strange artifacts with >= 10 slides

    Chrome - Slides disappearing and strange artifacts with >= 10 slides

    Hello,

    I'm working on a HTML presentation with DeckJS and I'm facing an issue with Chrome

    http://vjeux.github.com/jsCollaborativePresentation/#title-slide

    Chrome 13.0.782.215 m

    • If you refresh the page on a slide. The particular slide will be blank after reload.
    • Also, if you refresh on the first slide and move forward. After the slide 10 they stop appearing correctly, there are many artifacts.

    Chrome 15.0.865.0 canary

    • If you refresh the page on a slide. If you move around, you will see that many slides appear on the page, displaced ...

    However it works perfectly fine on Firefox, therefore I don't know if it's a bug you can fix.

    Those strange artifacts appear to happen when I put more than 10 slides. It does not seem to be a markup problem as they work perfectly when the slides are alone.

    opened by vjeux 12
  • Presentation and functionality are mixed in core.css

    Presentation and functionality are mixed in core.css

    Hey,

    Have just started using deck.js tonight for a preso tomorrow, and I'm impressed! I've even managed to get some event handling for some ideas I have in there, and no show-stoppers so far, which is great.

    However, I must say that having presentational rules bundled in core.css does somewhat bugger up my theming, especially because of the specificity of your rules overrides my basic headings, i.e. .deck-container h1, is always going to trounce my h1 (my slideshow isn't embedded, so why would I need this specificity?)

    Any chance you could separate presentation (formatting, padding, etc) and and functional (slide definition, positioning, movement, etc) rules into two different stylesheets?

    Thanks, Dave

    opened by davestewart 11
  • Safari 5 / Swipe (Mac Pro) & Mouse (Mac Air) - Slides Collapse together

    Safari 5 / Swipe (Mac Pro) & Mouse (Mac Air) - Slides Collapse together

    I use deck for release notes. A couple of users (Mac Pro, Mac Air) report text of multiple slides collapsing on top of each other when either the swipe action on the Mac Pro is used or the Mouse is used to navigate between slides on the Mac Air. Both users running Safari 5.1.4.

    Both users also report that keyboard navigation works fine.

    Mouse navigation on a PC running Safari 5.1.4 does not appear to be enabled ( I neither set it up, nor exclude it in the files).

    Thanks.

    opened by carywreams 10
  • Another print version

    Another print version

    I would like to have a feature, where i can press a key and get a version of the presentation, which I can print. Or at least a CSS-File, which can be used, if I want to print the slides. For example, print 6 slides per page (2 columns and 3 rows).

    extension-request theme-request 
    opened by Strubbl 10
  • removing horizontal-only padding from the deck-container (themes)

    removing horizontal-only padding from the deck-container (themes)

    There was a padding (horziontal only) for the .deck-container in the reset css. I feel container should have have this padding by default. It also "breaks" the fit extension.

    NB: the "make" changes more (e.g. #ccc -> #cccccc) so I commited only the relevant changes.

    opened by twitwi 9
  • Issue with menu when using scale extension

    Issue with menu when using scale extension

    When I use the scale extension I can no longer scroll in the menu screen (it acts like overflow:hidden). If I don't include the scale extension, then menu works as desired--menu behaves like overflow:auto

    opened by djthorne 9
  • adding header and footer

    adding header and footer

    Hello! I am trying to understand deck.js and how to design my own theme. I'd like to design a page with header and footer (like http://imakewebthings.com/deck.js/). To do that, i need to include all the <section> tags inside an <article> or a generic div. But when I do that, the page doesn't work anymore (the arrows disappear and the slide movement too!) Anyone can help me?

    Thanks a lot Mari

    opened by marianghela 9
  • Added support for stepNext and stepPrev for in-slide

    Added support for stepNext and stepPrev for in-slide "animations": enables for custom animations, SVG animations, video play/pause, etc...

    Hi,

    As quickly mentioned on the mailing list, I extended deck.js to allow for interesting animation-like extensions.

    An demo of such extension (SVG animations) can be found there: http://home.heeere.com/data/deck-js-demo/examples/svg-animations.html

    This pull-request offers the cleaned version of my changes. Feel free to pull it (or not) or to discuss it.

    Thanks, Rémi

    opened by twitwi 9
  • Slides do not resize to fit display/browser

    Slides do not resize to fit display/browser

    One nice feature of PowerPoint and Keynote is that the slides are displayed as designed, and do not change depending on the screen size. This can be an issue when connecting to a projector which changes the resolution of the display.

    opened by marcusps 9
  • Large font size for full screen use creates reloading problem

    Large font size for full screen use creates reloading problem

    Hi, I am using deck.js for presentations and the default font size is way to small in full screen mode. So I modified the theme as described here (I tried both approaches): https://groups.google.com/forum/#!topic/deckjs/4wo115wdJKo

    This creates a problem, however. When I set the default font size for .deck-container to 2em instead of 1.25em, pages are only properly reloaded when I am at the beginning of a section slide. When I slide in a li or div element with some text and then reload, this element is at the top of the screen and h2 heading is not visible.

    Does that make sense? I can provide a concrete example if it doesn't.

    Thanks!

    opened by jlegewie 8
  • <dl> tag not supported?

    tag not supported?

    Hi folks, this is a great lightweight project! Could someone help me figure out why

    <dl>
    <dt>description term</dt>
    <dd>description definition</dd>
    </dl>
    

    is not shown as expected: https://www.w3schools.com/tags/tag_dl.asp

    opened by kugelpunk 0
  • Include the deck.js in the main index.pug file ..is it possible

    Include the deck.js in the main index.pug file ..is it possible

    Hi, I am trying to include the deck.js (boilerplate.html) in the main web page. So basically include the slides at the bottom of the existing web page how do i do that with the deck.js.... Regards Ranga

    opened by rangapv 0
  • Incorrect syntax for aria roles

    Incorrect syntax for aria roles

    Thanks for the clean slide deck.

    I noticed on code validation that you use aria-role="navigation" and aria-role="status". The correct syntax for this is actually just:

    • role="navigation", or better yest just style a nav element
    • role="status"
    opened by terracoda 0
  • menu extension : cannot scroll

    menu extension : cannot scroll

    If you've got more than 16 slides, the menu will not show them all and not leave the possibility to scroll up or down. Tested on up to date FF, Chrome and IE (Win10).

    opened by Arnache 0
The JavaScript library for modern SVG graphics.

Snap.svg · A JavaScript SVG library for the modern web. Learn more at snapsvg.io. Follow us on Twitter. Install Bower - bower install snap.svg npm - n

Adobe Web Platform 13.6k Dec 30, 2022
Simple, responsive, modern SVG Charts with zero dependencies

Frappe Charts GitHub-inspired modern, intuitive and responsive charts with zero dependencies Explore Demos » Edit at CodePen » Contents Installation U

Frappe 14.6k Jan 4, 2023
Bring data to life with SVG, Canvas and HTML. :bar_chart::chart_with_upwards_trend::tada:

D3: Data-Driven Documents D3 (or D3.js) is a JavaScript library for visualizing data using web standards. D3 helps you bring data to life using SVG, C

D3 103.8k Jan 3, 2023
Interactive visualizations of time series using JavaScript and the HTML canvas tag

dygraphs JavaScript charting library The dygraphs JavaScript library produces interactive, zoomable charts of time series: Learn more about it at dygr

Dan Vanderkam 3k Jan 3, 2023
JAVASCRIPT library with which you can easily draw CANVAS HTML

easycanvas Quick start Documentation: gaidadei.ru/easycanvas Download: gaidadei.ru/easycanvas/easyc.zip Buy premium: gaidadei.ru/easycanvas/premium (A

null 18 Nov 12, 2022
Lightweight, interactive planning tool that visualizes a series of tasks using an HTML canvas

Planner Lightweight, interactive planning tool that visualizes a series of tasks using an HTML canvas. Try it yourself at plannerjs.dev Plans created

Brian Vaughn 512 Jan 2, 2023
HTML Canvas game for Vivatech Gamejam of March 2022.

Viva Tech Gamejam A HTML Canvas game made in 2 days for the Vivatech Gamejam of March 22. Requirements Nodejs and Yarn. If you're on MacOS and have Ho

Antoine Oddoz 3 Mar 29, 2022
Renders HTML into the browser's canvas

rasterizeHTML.js Renders HTML into the browser's canvas. See the API. Install $ npm install rasterizehtml Then include a script tag with node_modules

Christoph Burgmer 2.3k Dec 30, 2022
Demonstration of liquid effect on HTML Canvas using Matter.js and SVG Filters (Blur + Contrast)

Canvas Liquid Effect Demonstration of liquid (or gooey) effect on HTML Canvas using Matter.js and SVG Filters (feGaussianBlur and feColorMatrix). DEMO

Utkarsh Verma 78 Dec 24, 2022
The responsive CSS animation framework for creating unique sliders, presentations, banners, and other step-based applications.

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

Ian Lunn 3.4k Dec 20, 2022
Create PowerPoint presentations with a powerful, concise JavaScript API.

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

Brent Ely 1.8k Dec 30, 2022
Dynamic web app 'presentations', driven by user scrolling, inspired by the NYT

Museé A small Typescript-based web app, inspired by the NYT Close Reading of Auden's Museé des Beaux Arts. Introduction I loved the NYT Close Reading

Timothy Danford 3 Mar 13, 2022
An indexed compendium of graphics programming papers, articles, blog posts, presentations, and more

Paper Bug CONTRIBUTIONS WANTED What is this? The idea is to have an annotated and easily searchable repository of papers, presentations, articles, etc

Jeremy Ong 64 Dec 16, 2022
A classless CSS framework to write modern websites using only HTML.

new.css new.css A classless CSS framework to write modern websites using only HTML. It weighs 4.8kb. All it does is set some sensible defaults and sty

null 3.6k Jan 3, 2023
Create HTML from CSS! A modern javascript library you'd expect Facebook to invent.

Create HTML from CSS! A modern javascript library you'd expect Facebook to invent. Slowly build modern websites without ever leaving your CSS, with HeadwindHTML

Gökhan Mete ERTÜRK 282 Dec 30, 2022
Simple modern JavaScript ES6 library that fetches JSON data into an HTML table which displays nicely within a Bootstrap 4 Card.

Simple modern JavaScript ES6 library that fetches JSON data into an HTML table which displays nicely within a Bootstrap 4 Card. Uses simplenotsimpler/modern-table library.

SimpleNotSimpler 6 Feb 17, 2022
The perfect library for adding search, sort, filters and flexibility to tables, lists and various HTML elements. Built to be invisible and work on existing HTML.

List.js Perfect library for adding search, sort, filters and flexibility to tables, lists and various HTML elements. Built to be invisible and work on

Jonny Strömberg 10.9k Jan 1, 2023
Quickly create an interactive HTML mock-up by auto sourcing lorem ipsum/images generators, with minimal html markup, and no server side code

RoughDraft.js v0.1.5 Quickly mockup / prototype HTML pages with auto-generated content, without additional JavaScript or server side code. <section>

Nick Dreckshage 464 Dec 21, 2022
Gofiber with NextJS Static HTML is a small Go program to showcase for bundling a static HTML export of a Next.js app

Gofiber and NextJS Static HTML Gofiber with NextJS Static HTML is a small Go program to showcase for bundling a static HTML export of a Next.js app. R

Mai 1 Jan 22, 2022
Practice Task of HTML - Mache Free Template (PSD to HTML) - Home Task (CTG)

Practice Task of HTML - Mache Free Template (PSD to HTML) - Home Task (CTG) This Assignment is mainly on PSD TO HTML along with HTML,CSS As a Basic HT

Yasir Monon 1 Jan 29, 2022