diff --git a/build.js b/build.js index 43d8afd..8b43a96 100644 --- a/build.js +++ b/build.js @@ -32,3 +32,25 @@ buildify() .uglify() .save('js/impress.min.js'); */ + + +/* Auto generate an index.html that lists all the directories under examples/ + * This is useful for gh-pages, so you can link to http://impress.github.io/impress.js/examples + */ +var ls = require('ls'); +var fs = require('fs'); +var path = require('path'); + +var html_list = '\n' + +var html = '\n\nExample presentations\n\n' +html += '

Example presentations

\n' + html_list +html += '\n' + +var filename = path.resolve(__dirname, 'examples', 'index.html'); +fs.writeFileSync(filename, html); +console.log(filename); diff --git a/examples/classic-slides/css/classic-slides.css b/examples/classic-slides/css/classic-slides.css new file mode 100644 index 0000000..b491cf0 --- /dev/null +++ b/examples/classic-slides/css/classic-slides.css @@ -0,0 +1,464 @@ +/* + A common approach is to use googleapis.com to generate css for the webfonts you want to use. + The downside of this approach is that you have to be online. So below I have simply saved + the output of the googleapis url into a file. Then you of course also have to make sure + the webfonts are locally installed to make offline usage work. For Ubuntu (or Debian) I + successfully used the script from here to do that: + http://www.webupd8.org/2011/01/automatically-install-all-google-web.html +*/ + +/* @import url(http://fonts.googleapis.com/css?family=Open+Sans:regular,semibold,italic,italicsemibold|PT+Sans:400,700,400italic,700italic|PT+Serif:400,700,400italic,700italic|Cutive+Mono); */ +@import url(fonts.css); + + + +/* + We display a fallback message for users with browsers that don't support + all the features required by it. All of the content will be still fully + accessible for them, but some more advanced effects would be missing. + When impress.js detects that browser supports all necessary CSS3 features, + the fallback-message style is hidden. +*/ + +.fallback-message { + font-family: sans-serif; + line-height: 1.3; + + width: 780px; + padding: 10px 10px 0; + margin: 20px auto; + + border: 1px solid #E4C652; + border-radius: 10px; + background: #EEDC94; +} + +.fallback-message p { + margin-bottom: 10px; +} + +.impress-supported .fallback-message { + display: none; +} + + +/* + The body background is the bacgkround of "everything". Many + impress.js tools call it the "surface". It could also be a + picture or pattern, but we leave it as light gray. +*/ + +body { + font-family: 'PT Sans', sans-serif; + min-height: 740px; + + background: rgb(215, 215, 215); + color: rgb(102, 102, 102); +} + +/* + Now let's style the presentation steps. +*/ + +.step { + position: relative; + width: 900px; + padding: 40px; + margin: 20px auto; + + box-sizing: border-box; + + font-family: 'PT Serif', georgia, serif; + font-size: 48px; + line-height: 1.5; +} +/* + Make inactive steps a little bit transparent. +*/ +.impress-enabled .step { + margin: 0; + opacity: 0.3; + transition: opacity 1s; +} + +.impress-enabled .step.active { opacity: 1 } + +/* + Speaker notes allow you to write comments within the steps, that will not + be displayed as part of the presentation. However, they will be picked up + and displayed by impressConsole.js when integrated. +*/ + +.notes { + display: none; +} + +/* + These 'slide' step styles were heavily inspired by HTML5 Slides: + http://html5slides.googlecode.com/svn/trunk/styles.css + + Note that we also use a background image, again just to facilitate a common + feature from PowerPoint and LibreOffice worlds. In this case the background + image is just the impress.js favicon - as if it were a company logo or something. + +*/ +.slide { + display: block; + + width: 900px; + height: 700px; + padding: 40px 60px; + + background-image: url(../images/background.png); + background-color: white; + border: 1px solid rgba(0, 0, 0, .3); + border-radius: 10px; + box-shadow: 0 2px 6px rgba(0, 0, 0, .1); + + text-shadow: 0 2px 2px rgba(0, 0, 0, .1); + + font-family: 'Open Sans', Arial, sans-serif; + font-size: 30px; + letter-spacing: -1px; +} + + +.slide h1, +.slide h2, +.slide h3 { + margin-bottom: 0.5em; + margin-top: 0.5em; + text-align: center; +} + +.slide p { + text-align: center; + margin: 0.7em; +} + +.slide li { + margin: 0.2em; +} + +/* Highlight.js used for coloring pre > code blocks. */ +.slide pre > code { + font-size: 14px; + text-shadow: 0 0 0 rgba(0, 0, 0, 0); +} + +/* Inline code, no Highlight.js */ +code { + font-family: "Cutive mono","Courier New", monospace; +} + + +a { + color: inherit; + text-decoration: none; + padding: 0 0.1em; + background: rgba(200,200,200,0.2); + text-shadow: -1px 1px 2px rgba(100,100,100,0.9); + border-radius: 0.2em; + border-bottom: 1px solid rgba(100,100,100,0.2); + border-left: 1px solid rgba(100,100,100,0.2); + + transition: 0.5s; +} +a:hover, +a:focus { + background: rgba(200,200,200,1); + text-shadow: -1px 1px 2px rgba(100,100,100,0.5); +} + +blockquote { + font-family: 'PT Serif'; + font-style: italic; + font-weight: 400; +} + +em { + text-shadow: 0 2px 2px rgba(0, 0, 0, .3); +} + +strong { + text-shadow: -1px 1px 2px rgba(100,100,100,0.5); +} + +q { + font-family: 'PT Serif'; + font-style: italic; + font-weight: 400; + text-shadow: 0 2px 2px rgba(0, 0, 0, .3); +} + +strike { + opacity: 0.7; +} + +small { + font-size: 0.4em; +} + +img { + width: 300px +} + +.slide .right { + float: right; + margin-left: 40px; + margin-right: 0px; + margin-top: 20px; + margin-bottom: 20px; +} +.slide .left { + float: left; + margin-right: 40px; + margin-left: 0px; + margin-top: 20px; + margin-bottom: 20px; +} +.slide .top { + position: absolute; + top: 20px; + margin-bottom: 20px; + margin-top: 0px; +} +.slide .bottom { + position: absolute; + bottom: 20px; + margin-bottom: 0px; + margin-top: 20px; +} + +/* + Specific styles for: .title slides +*/ + +.title { + background-image: url(../images/background-title.png); +} + +.title h1, +.title h2, +.title h3 { + position: absolute; + left: 45px; /* slide width is 900px, so this is like a 5% margin on both sides */ + width: 90%; + text-align: center; +} +.title h1 { top: 50px; } +.title h2 { top: 400px; } +.title h3 { top: 500px; } + + + +/* Styles for animating the contents of a slide, such as a img, p, li or span element. ********/ + +/* + fly-in class starts from a position outside the slide, then flies into it's correct position. +*/ +.future .fly-in { + transform: translateY(-700px); + opacity: 0.0; /* Make it invisible, just so it doesn't clutter some other slide that might be in the position where we moved it */ +} +.present .fly-in { + transform: translateY(0px); + opacity: 1.0; + transition: 2s; +} +.past .fly-out { + transform: translateY(700px); + opacity: 0.0; + transition: 2s; +} + +/* + Fade-in/out is a straightforward fade. Give it enough seconds that all browsers render it clearly. +*/ +.future .fade-in { + opacity: 0.0; +} +.present .fade-in { + opacity: 1.0; + transition: 3s; +} +.past .fade-out { + opacity: 0.0; + transition: 3s; +} +/* + Zoom-in. +*/ +.future .zoom-in { + transform: scale(10); + opacity: 0.0; +} +.present .zoom-in { + transform: scale(1); + opacity: 1.0; + transition: 3s; +} +.past .zoom-out { + transform: scale(10); + opacity: 0.0; +} + +/* + This version of impress.js supports plugins, and in particular, a UI toolbar + plugin that allows easy navigation between steps and autoplay. +*/ +.impress-enabled div#impress-toolbar { + position: fixed; + right: 1px; + bottom: 1px; + opacity: 0.6; + z-index: 10; +} +.impress-enabled div#impress-toolbar > span { + margin-right: 10px; +} + +/* + With help from the mouse-timeout plugin, we can hide the toolbar and + have it show only when you move/click/touch the mouse. +*/ +body.impress-mouse-timeout div#impress-toolbar { + display: none; +} + +/* + In fact, we can hide the mouse cursor itself too, when mouse isn't used. +*/ +body.impress-mouse-timeout { + cursor: none; +} + + + +/* Progress bar */ +.impress-progressbar { + position: absolute; + right: 118px; + bottom: 1px; + left: 118px; + border-radius: 7px; + border: 2px solid rgba(100, 100, 100, 0.2); +} +.impress-progressbar DIV { + width: 0; + height: 2px; + border-radius: 5px; + background: rgba(75, 75, 75, 0.4); + transition: width 1s linear; +} +.impress-progress { + position: absolute; + left: 59px; + bottom: 1px; + text-align: left; + font-size: 10pt; + opacity: 0.6; +} + +/* Help popup plugin */ +.impress-enabled #impress-help { + background: none repeat scroll 0 0 rgba(0, 0, 0, 0.5); + color: #EEEEEE; + font-size: 80%; + position: fixed; + left: 2em; + bottom: 2em; + width: 24em; + border-radius: 1em; + padding: 1em; + text-align: center; + z-index: 100; + font-family: Verdana, Arial, Sans; +} +.impress-enabled #impress-help td { + padding-left: 1em; + padding-right: 1em; +} + +/* Substep plugin */ + +#impress .step .substep { + opacity: 0; +} + +#impress .step .substep.substep-visible { + opacity: 1; + transition: opacity 1s; +} + +/* + Styles for specific slides. +*/ + +/* The bar graph for Acme Inc profits */ + +#acme-graph-bottom { + position: absolute; + bottom: 100px; + left: 440px; + background-color: black; + width: 410px; + height: 2px; +} + +/* height: is set from javascript */ +#acme-graph-q1, +#acme-graph-q2, +#acme-graph-q3, +#acme-graph-q4 { + border: solid 1px black; + width: 70px; + margin-left: 10px; + position: absolute; + bottom: 100px; +} + +#acme-graph-q1 { + background-color: red; + left: 450px; +} + +#acme-graph-q2 { + background-color: blue; + left: 550px; +} + +#acme-graph-q3 { + background-color: green; + left: 650px; +} + +#acme-graph-q4 { + background-color: purple; + left: 750px; +} + +/* + And as the last thing there is a workaround for quite strange bug. + It happens a lot in Chrome. I don't remember if I've seen it in Firefox. + + Sometimes the element positioned in 3D (especially when it's moved back + along Z axis) is not clickable, because it falls 'behind' the + element. + + To prevent this, I decided to make non clickable by setting + pointer-events property to `none` value. + Value if this property is inherited, so to make everything else clickable + I bring it back on the #impress element. + + If you want to know more about `pointer-events` here are some docs: + https://developer.mozilla.org/en/CSS/pointer-events + + There is one very important thing to notice about this workaround - it makes + everything 'unclickable' except what's in #impress element. + + So use it wisely ... or don't use at all. +*/ +.impress-enabled { pointer-events: none } +.impress-enabled #impress { pointer-events: auto } +.impress-enabled #impress-toolbar { pointer-events: auto } diff --git a/examples/classic-slides/css/fonts.css b/examples/classic-slides/css/fonts.css new file mode 100644 index 0000000..8e9d8f7 --- /dev/null +++ b/examples/classic-slides/css/fonts.css @@ -0,0 +1,497 @@ +/* latin-ext */ +@font-face { + font-family: 'Cutive Mono'; + font-style: normal; + font-weight: 400; + src: local('Cutive Mono'), local('CutiveMono-Regular'), url(http://fonts.gstatic.com/s/cutivemono/v4/N5odNRruTwjvCM8y77PhQSYE0-AqJ3nfInTTiDXDjU4.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Cutive Mono'; + font-style: normal; + font-weight: 400; + src: local('Cutive Mono'), local('CutiveMono-Regular'), url(http://fonts.gstatic.com/s/cutivemono/v4/N5odNRruTwjvCM8y77PhQY4P5ICox8Kq3LLUNMylGO4.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/s/opensans/v13/K88pR3goAWT7BTt32Z01mxJtnKITppOI_IvcXXDNrsc.woff2) format('woff2'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} +/* cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/s/opensans/v13/RjgO7rYTmqiVp7vzi-Q5URJtnKITppOI_IvcXXDNrsc.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/s/opensans/v13/LWCjsQkB6EMdfHrEVqA1KRJtnKITppOI_IvcXXDNrsc.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/s/opensans/v13/xozscpT2726on7jbcb_pAhJtnKITppOI_IvcXXDNrsc.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/s/opensans/v13/59ZRklaO5bWGqF5A9baEERJtnKITppOI_IvcXXDNrsc.woff2) format('woff2'); + unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/s/opensans/v13/u-WUoqrET9fUeobQW7jkRRJtnKITppOI_IvcXXDNrsc.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/s/opensans/v13/cJZKeOuBrn4kERxqtaUH3VtXRa8TVwTICgirnJhmVJw.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(http://fonts.gstatic.com/s/opensans/v13/MTP_ySUJH_bn48VBG8sNSq-j2U0lmluP9RWlSytm3ho.woff2) format('woff2'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} +/* cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(http://fonts.gstatic.com/s/opensans/v13/MTP_ySUJH_bn48VBG8sNSpX5f-9o1vgP2EXwfjgl7AY.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(http://fonts.gstatic.com/s/opensans/v13/MTP_ySUJH_bn48VBG8sNShWV49_lSm1NYrwo-zkhivY.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(http://fonts.gstatic.com/s/opensans/v13/MTP_ySUJH_bn48VBG8sNSqaRobkAwv3vxw3jMhVENGA.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(http://fonts.gstatic.com/s/opensans/v13/MTP_ySUJH_bn48VBG8sNSv8zf_FOSsgRmwsS7Aa9k2w.woff2) format('woff2'); + unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(http://fonts.gstatic.com/s/opensans/v13/MTP_ySUJH_bn48VBG8sNSj0LW-43aMEzIO6XUTLjad8.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(http://fonts.gstatic.com/s/opensans/v13/MTP_ySUJH_bn48VBG8sNSugdm0LZdjqr5-oayXSOefg.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(http://fonts.gstatic.com/s/opensans/v13/xjAJXh38I15wypJXxuGMBjTOQ_MqJVwkKsUn0wKzc2I.woff2) format('woff2'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} +/* cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(http://fonts.gstatic.com/s/opensans/v13/xjAJXh38I15wypJXxuGMBjUj_cnvWIuuBMVgbX098Mw.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(http://fonts.gstatic.com/s/opensans/v13/xjAJXh38I15wypJXxuGMBkbcKLIaa1LC45dFaAfauRA.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(http://fonts.gstatic.com/s/opensans/v13/xjAJXh38I15wypJXxuGMBmo_sUJ8uO4YLWRInS22T3Y.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(http://fonts.gstatic.com/s/opensans/v13/xjAJXh38I15wypJXxuGMBr6up8jxqWt8HVA3mDhkV_0.woff2) format('woff2'); + unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(http://fonts.gstatic.com/s/opensans/v13/xjAJXh38I15wypJXxuGMBiYE0-AqJ3nfInTTiDXDjU4.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(http://fonts.gstatic.com/s/opensans/v13/xjAJXh38I15wypJXxuGMBo4P5ICox8Kq3LLUNMylGO4.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: local('Open Sans Semibold Italic'), local('OpenSans-SemiboldItalic'), url(http://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxmgpAmOCqD37_tyH_8Ri5MM.woff2) format('woff2'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} +/* cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: local('Open Sans Semibold Italic'), local('OpenSans-SemiboldItalic'), url(http://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxsPNMTLbnS9uQzHQlYieHUU.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: local('Open Sans Semibold Italic'), local('OpenSans-SemiboldItalic'), url(http://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxgyhumQnPMBCoGYhRaNxyyY.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: local('Open Sans Semibold Italic'), local('OpenSans-SemiboldItalic'), url(http://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxhUVAXEdVvYDDqrz3aeR0Yc.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: local('Open Sans Semibold Italic'), local('OpenSans-SemiboldItalic'), url(http://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxlf4y_3s5bcYyyLIFUSWYUU.woff2) format('woff2'); + unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: local('Open Sans Semibold Italic'), local('OpenSans-SemiboldItalic'), url(http://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxnywqdtBbUHn3VPgzuFrCy8.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: local('Open Sans Semibold Italic'), local('OpenSans-SemiboldItalic'), url(http://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxl2umOyRU7PgRiv8DXcgJjk.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} +/* cyrillic-ext */ +@font-face { + font-family: 'PT Sans'; + font-style: normal; + font-weight: 400; + src: local('PT Sans'), local('PTSans-Regular'), url(http://fonts.gstatic.com/s/ptsans/v8/JX7MlXqjSJNjQvI4heMMGvY6323mHUZFJMgTvxaG2iE.woff2) format('woff2'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} +/* cyrillic */ +@font-face { + font-family: 'PT Sans'; + font-style: normal; + font-weight: 400; + src: local('PT Sans'), local('PTSans-Regular'), url(http://fonts.gstatic.com/s/ptsans/v8/vtwNVMP8y9C17vLvIBNZI_Y6323mHUZFJMgTvxaG2iE.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* latin-ext */ +@font-face { + font-family: 'PT Sans'; + font-style: normal; + font-weight: 400; + src: local('PT Sans'), local('PTSans-Regular'), url(http://fonts.gstatic.com/s/ptsans/v8/9kaD4V2pNPMMeUVBHayd7vY6323mHUZFJMgTvxaG2iE.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'PT Sans'; + font-style: normal; + font-weight: 400; + src: local('PT Sans'), local('PTSans-Regular'), url(http://fonts.gstatic.com/s/ptsans/v8/ATKpv8nLYAKUYexo8iqqrg.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} +/* cyrillic-ext */ +@font-face { + font-family: 'PT Sans'; + font-style: normal; + font-weight: 700; + src: local('PT Sans Bold'), local('PTSans-Bold'), url(http://fonts.gstatic.com/s/ptsans/v8/kTYfCWJhlldPf5LnG4ZnHCEAvth_LlrfE80CYdSH47w.woff2) format('woff2'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} +/* cyrillic */ +@font-face { + font-family: 'PT Sans'; + font-style: normal; + font-weight: 700; + src: local('PT Sans Bold'), local('PTSans-Bold'), url(http://fonts.gstatic.com/s/ptsans/v8/g46X4VH_KHOWAAa-HpnGPiEAvth_LlrfE80CYdSH47w.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* latin-ext */ +@font-face { + font-family: 'PT Sans'; + font-style: normal; + font-weight: 700; + src: local('PT Sans Bold'), local('PTSans-Bold'), url(http://fonts.gstatic.com/s/ptsans/v8/hpORcvLZtemlH8gI-1S-7iEAvth_LlrfE80CYdSH47w.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'PT Sans'; + font-style: normal; + font-weight: 700; + src: local('PT Sans Bold'), local('PTSans-Bold'), url(http://fonts.gstatic.com/s/ptsans/v8/0XxGQsSc1g4rdRdjJKZrNPk_vArhqVIZ0nv9q090hN8.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} +/* cyrillic-ext */ +@font-face { + font-family: 'PT Sans'; + font-style: italic; + font-weight: 400; + src: local('PT Sans Italic'), local('PTSans-Italic'), url(http://fonts.gstatic.com/s/ptsans/v8/GpWpM_6S4VQLPNAQ3iWvVRJtnKITppOI_IvcXXDNrsc.woff2) format('woff2'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} +/* cyrillic */ +@font-face { + font-family: 'PT Sans'; + font-style: italic; + font-weight: 400; + src: local('PT Sans Italic'), local('PTSans-Italic'), url(http://fonts.gstatic.com/s/ptsans/v8/7dSh6BcuqDLzS2qAASIeuhJtnKITppOI_IvcXXDNrsc.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* latin-ext */ +@font-face { + font-family: 'PT Sans'; + font-style: italic; + font-weight: 400; + src: local('PT Sans Italic'), local('PTSans-Italic'), url(http://fonts.gstatic.com/s/ptsans/v8/DVKQJxMmC9WF_oplMzlQqRJtnKITppOI_IvcXXDNrsc.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'PT Sans'; + font-style: italic; + font-weight: 400; + src: local('PT Sans Italic'), local('PTSans-Italic'), url(http://fonts.gstatic.com/s/ptsans/v8/PIPMHY90P7jtyjpXuZ2cLFtXRa8TVwTICgirnJhmVJw.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} +/* cyrillic-ext */ +@font-face { + font-family: 'PT Sans'; + font-style: italic; + font-weight: 700; + src: local('PT Sans Bold Italic'), local('PTSans-BoldItalic'), url(http://fonts.gstatic.com/s/ptsans/v8/lILlYDvubYemzYzN7GbLkK-j2U0lmluP9RWlSytm3ho.woff2) format('woff2'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} +/* cyrillic */ +@font-face { + font-family: 'PT Sans'; + font-style: italic; + font-weight: 700; + src: local('PT Sans Bold Italic'), local('PTSans-BoldItalic'), url(http://fonts.gstatic.com/s/ptsans/v8/lILlYDvubYemzYzN7GbLkJX5f-9o1vgP2EXwfjgl7AY.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* latin-ext */ +@font-face { + font-family: 'PT Sans'; + font-style: italic; + font-weight: 700; + src: local('PT Sans Bold Italic'), local('PTSans-BoldItalic'), url(http://fonts.gstatic.com/s/ptsans/v8/lILlYDvubYemzYzN7GbLkD0LW-43aMEzIO6XUTLjad8.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'PT Sans'; + font-style: italic; + font-weight: 700; + src: local('PT Sans Bold Italic'), local('PTSans-BoldItalic'), url(http://fonts.gstatic.com/s/ptsans/v8/lILlYDvubYemzYzN7GbLkOgdm0LZdjqr5-oayXSOefg.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} +/* cyrillic-ext */ +@font-face { + font-family: 'PT Serif'; + font-style: normal; + font-weight: 400; + src: local('PT Serif'), local('PTSerif-Regular'), url(http://fonts.gstatic.com/s/ptserif/v8/5hX15RUpPERmeybVlLQEWBTbgVql8nDJpwnrE27mub0.woff2) format('woff2'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} +/* cyrillic */ +@font-face { + font-family: 'PT Serif'; + font-style: normal; + font-weight: 400; + src: local('PT Serif'), local('PTSerif-Regular'), url(http://fonts.gstatic.com/s/ptserif/v8/fU0HAfLiPHGlZhZpY6M7dBTbgVql8nDJpwnrE27mub0.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* latin-ext */ +@font-face { + font-family: 'PT Serif'; + font-style: normal; + font-weight: 400; + src: local('PT Serif'), local('PTSerif-Regular'), url(http://fonts.gstatic.com/s/ptserif/v8/CPRt--GVMETgA6YEaoGitxTbgVql8nDJpwnrE27mub0.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'PT Serif'; + font-style: normal; + font-weight: 400; + src: local('PT Serif'), local('PTSerif-Regular'), url(http://fonts.gstatic.com/s/ptserif/v8/I-OtoJZa3TeyH6D9oli3ifesZW2xOQ-xsNqO47m55DA.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} +/* cyrillic-ext */ +@font-face { + font-family: 'PT Serif'; + font-style: normal; + font-weight: 700; + src: local('PT Serif Bold'), local('PTSerif-Bold'), url(http://fonts.gstatic.com/s/ptserif/v8/QABk9IxT-LFTJ_dQzv7xpDTOQ_MqJVwkKsUn0wKzc2I.woff2) format('woff2'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} +/* cyrillic */ +@font-face { + font-family: 'PT Serif'; + font-style: normal; + font-weight: 700; + src: local('PT Serif Bold'), local('PTSerif-Bold'), url(http://fonts.gstatic.com/s/ptserif/v8/QABk9IxT-LFTJ_dQzv7xpDUj_cnvWIuuBMVgbX098Mw.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* latin-ext */ +@font-face { + font-family: 'PT Serif'; + font-style: normal; + font-weight: 700; + src: local('PT Serif Bold'), local('PTSerif-Bold'), url(http://fonts.gstatic.com/s/ptserif/v8/QABk9IxT-LFTJ_dQzv7xpCYE0-AqJ3nfInTTiDXDjU4.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'PT Serif'; + font-style: normal; + font-weight: 700; + src: local('PT Serif Bold'), local('PTSerif-Bold'), url(http://fonts.gstatic.com/s/ptserif/v8/QABk9IxT-LFTJ_dQzv7xpI4P5ICox8Kq3LLUNMylGO4.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} +/* cyrillic-ext */ +@font-face { + font-family: 'PT Serif'; + font-style: italic; + font-weight: 400; + src: local('PT Serif Italic'), local('PTSerif-Italic'), url(http://fonts.gstatic.com/s/ptserif/v8/O_WhD9hODL16N4KLHLX7xSEAvth_LlrfE80CYdSH47w.woff2) format('woff2'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} +/* cyrillic */ +@font-face { + font-family: 'PT Serif'; + font-style: italic; + font-weight: 400; + src: local('PT Serif Italic'), local('PTSerif-Italic'), url(http://fonts.gstatic.com/s/ptserif/v8/3Nwg9VzlwLXPq3fNKwVRMCEAvth_LlrfE80CYdSH47w.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* latin-ext */ +@font-face { + font-family: 'PT Serif'; + font-style: italic; + font-weight: 400; + src: local('PT Serif Italic'), local('PTSerif-Italic'), url(http://fonts.gstatic.com/s/ptserif/v8/b31S45a_TNgaBApZhTgE6CEAvth_LlrfE80CYdSH47w.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'PT Serif'; + font-style: italic; + font-weight: 400; + src: local('PT Serif Italic'), local('PTSerif-Italic'), url(http://fonts.gstatic.com/s/ptserif/v8/03aPdn7fFF3H6ngCgAlQzPk_vArhqVIZ0nv9q090hN8.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} +/* cyrillic-ext */ +@font-face { + font-family: 'PT Serif'; + font-style: italic; + font-weight: 700; + src: local('PT Serif Bold Italic'), local('PTSerif-BoldItalic'), url(http://fonts.gstatic.com/s/ptserif/v8/Foydq9xJp--nfYIx2TBz9ede9INZm0R8ZMJUtfOsxrw.woff2) format('woff2'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} +/* cyrillic */ +@font-face { + font-family: 'PT Serif'; + font-style: italic; + font-weight: 700; + src: local('PT Serif Bold Italic'), local('PTSerif-BoldItalic'), url(http://fonts.gstatic.com/s/ptserif/v8/Foydq9xJp--nfYIx2TBz9bpHcMS0zZe4mIYvDKG2oeM.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* latin-ext */ +@font-face { + font-family: 'PT Serif'; + font-style: italic; + font-weight: 700; + src: local('PT Serif Bold Italic'), local('PTSerif-BoldItalic'), url(http://fonts.gstatic.com/s/ptserif/v8/Foydq9xJp--nfYIx2TBz9RHJTnCUrjaAm2S9z52xC3Y.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'PT Serif'; + font-style: italic; + font-weight: 700; + src: local('PT Serif Bold Italic'), local('PTSerif-BoldItalic'), url(http://fonts.gstatic.com/s/ptserif/v8/Foydq9xJp--nfYIx2TBz9YWiMMZ7xLd792ULpGE4W_Y.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} + diff --git a/examples/classic-slides/images/3476636111_c551295ca4_b.jpg b/examples/classic-slides/images/3476636111_c551295ca4_b.jpg new file mode 100644 index 0000000..0488bf2 Binary files /dev/null and b/examples/classic-slides/images/3476636111_c551295ca4_b.jpg differ diff --git a/examples/classic-slides/images/background-title.png b/examples/classic-slides/images/background-title.png new file mode 100644 index 0000000..4a3ec21 Binary files /dev/null and b/examples/classic-slides/images/background-title.png differ diff --git a/examples/classic-slides/images/background-title.svg b/examples/classic-slides/images/background-title.svg new file mode 100644 index 0000000..1672a2a --- /dev/null +++ b/examples/classic-slides/images/background-title.svg @@ -0,0 +1,337 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + impress.js + + diff --git a/examples/classic-slides/images/background.png b/examples/classic-slides/images/background.png new file mode 100644 index 0000000..d109c0c Binary files /dev/null and b/examples/classic-slides/images/background.png differ diff --git a/examples/classic-slides/images/background.svg b/examples/classic-slides/images/background.svg new file mode 100644 index 0000000..653e5a7 --- /dev/null +++ b/examples/classic-slides/images/background.svg @@ -0,0 +1,323 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/classic-slides/index.html b/examples/classic-slides/index.html new file mode 100644 index 0000000..e2fe79e --- /dev/null +++ b/examples/classic-slides/index.html @@ -0,0 +1,463 @@ + + + + + + + + Classic Slides with impress.js | Simple example impress.js slide show | by Henrik Ingo @henrikingo + + + + + + + + + + + + + + + + +
+

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.

+
+ + +
+ + +
+

Example Presentation:
+ Classic Slides

+

Henrik Ingo

+

2015

+ +
+ Any element with the class="notes" will not be displayed. This can + be used for speaker notes. In fact, the impressConsole plugin will + show it in the speaker console! +
+
+ +
+

Table of Contents

+ + +
+

Table of Contents, with links to other slides of this same presentation.

+ +

Note that instead of absolute positioning we use relative positioning, + with the data-rel-x and data-rel-y attributes. This means the step is + positioned relative to the foregoing step. In other words, this is + equivalent to data-x="0" data-y="-1500".

+
+
+ +
+

A slide with text

+

This slide has a few paragraphs
(p element) of normal text.

+

Personally I like centered or even justified text, as it looks less boring. This can of course be set in the css file.

+

I really like the style on links in these presentations. I modified the border to be beveled, but it's mostly from @bartaz' original demo. @bartaz is the creator of impress.js.

+ +
+ In this slide, we don't even specify the relative position, rather + that too is inherited. So this slide will again be 1000px to the + right of the previous one. +
+
+ +
+

Bullet points

+ + +
+
+
+ + +
+

A blockquote & image

+ Mother Teresa holding a newborn baby +
+ Spread love everywhere you go.
Let no one ever come to you without leaving happier. +

Mother Teresa

+

Image credit: Peta_de_Aztlan@Flickr. CC-BY 2.0

+
+ +
+
+
+ +
+

More text styles

+

As usual, use em to emphasize,
+ strong for strong, u for underline,
+ strike for strikethrough and q for inline quotations.

+ +

If you're a software engineer like me, you will often use the + <code> tag for monospaced inline text.

+ +
+
+
+ +
+

Motion effects 101

+

Items on the slide can

+

Fly in

+

Fade in

+

And zoom in

+ +

...just like in PowerPoint. Yeah, I know I'm being lame, but it was fun to learn to do this in CSS3.

+ +
+

This step here doesn't introduce anything new when it comes to data attributes, but you + should notice in the demo that some words of this text are being animated. + It's a very basic CSS transition that is applied to the elements when this step element is + reached. +

+ At the very beginning of the presentation all step elements are given the class of `future`. + It means that they haven't been visited yet. +

+ When the presentation moves to given step `future` is changed to `present` class name. + That's how animation on this step works - text moves when the step has `present` class. +

+ Finally when the step is left the `present` class is removed from the element and `past` + class is added. +

+ So basically every step element has one of three classes: `future`, `present` and `past`. + Only one current step has the `present` class. +

+
+
+ +
+

Add-ons

+
+

This version of impress.js includes several add-ons, striving to make this a + full featured presentation app.

+
+
+ +
+

Impress.js plugins

+ +
+

This presentation also uses speaker notes. They are not visible in the presentation, but shown in the impress console.

+ +

If you pressed P only now, this is the first time you see these notes. In fact, there has been notes on preceding slides as well. + You can use the navigation controls at the bottom of the impress console to browse back to them.

+ +

And did you notice how those bullet points appear one by one as you press space/arrow? That's another plugin, called substeps.

+
+
+ +
+

Highlight.js

+

+        // `init` API function that initializes (and runs) the presentation.
+        var init = function () {
+            if (initialized) { return; }
+            execPreInitPlugins();
+            
+            // First we set up the viewport for mobile devices.
+            // For some reason iPad goes nuts when it is not done properly.
+            var meta = $("meta[name='viewport']") || document.createElement("meta");
+            meta.content = "width=device-width, minimum-scale=1, maximum-scale=1, user-scalable=no";
+            if (meta.parentNode !== document.head) {
+                meta.name = 'viewport';
+                document.head.appendChild(meta);
+            }        
+        
+
+

The Highlight.js library provides really nice color coding of source code. + It automatically applies to any code inside a <pre><code> element.

+

Highlight.js is found under the extras/ + directory, since it is an independent third party plugin, not really an impress.js plugin. You have + to include it via it's own <link> and <script> tags.

+
+
+ +
+

Mermaid.js

+
+ %% This is a comment in mermaid markup + graph LR + A(Support for
diagrams) + B[Provided by
mermaid.js] + C{Already
know
mermaid?} + D(Tutorial) + E(Great, hope you enjoy!) + A-->B + B-->C + C--No-->D + C--Yes-->E + classDef startEnd fill:#fcc,stroke:#353,stroke-width:2px; + class A,D,E startEnd; +
+ +

MathJax.js

+

Use \(\LaTeX\), MathML or AsciiMath to properly show mathematical formula.

+
+ Mermaid.js, likewise in a href="https://github.com/henrikingo/impress.js/tree/myfork/extras">extras/ + directory, draws SVG diagrams from a MarkDown-like syntax. To learn + more about it read the fine manual. +
+
+ +
+# Markdown.js + +* [Markdown.js](https://github.com/evilstreak/markdown-js) integration: for authors in a hurry! + * ...or lazy ;-) +* Jot down bullet points in *Markdown* + * ...have it automatically converted to HTML + * Markdown is converted into a presentation client side, in the browser. This is unlike + existing tools like [Hovercraft](https://github.com/regebro/hovercraft) and + [markdown-impress](http://binbinliao.com/markdown-impress/) where you generate a new + html file on the command line. +* [A more advanced Markdown presentation is here.](../markdown/) +
+ +
+ +

Acme Inc Quarterly Profits

+ + +
+
+
+
+
+
+
+
+
+ + + + + + +
Q1234€
Q2255€
Q3(insert here)
Q4
+
+
+
+ + + +
+

More info

+ + +
+
+
+ + +
+
+
+ + +
+ +
+
+ +
+ + + + + + + + + + + + diff --git a/examples/index.html b/examples/index.html new file mode 100644 index 0000000..1e5924b --- /dev/null +++ b/examples/index.html @@ -0,0 +1,14 @@ + + +Example presentations + +

Example presentations

+ + + \ No newline at end of file diff --git a/package.json b/package.json index 60be279..23515bd 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "karma-firefox-launcher": "~0.1", "karma-qunit": "1.0.0", "karma-sauce-launcher": "1.0.0", + "ls": "0.2.1", "qunitjs": "2.0.0-rc1", "syn": "0.10.0" }