1
0
mirror of https://github.com/hakimel/reveal.js.git synced 2025-09-14 00:22:06 +02:00

Compare commits

...

459 Commits
3.0.0 ... 3.4.1

Author SHA1 Message Date
Hakim El Hattab
9f8e4d5742 3.4.1 2017-01-25 10:51:25 +01:00
Hakim El Hattab
953d302f8b adjust pdf margins instead of heights to fix #1804 2017-01-25 10:46:03 +01:00
Hakim El Hattab
d9dcff1503 additional fix for empty pages in pdf exports #1804 2017-01-24 15:29:34 +01:00
Hakim El Hattab
286b69b61f fix empty pages in pdf exports (closes #1804) 2017-01-24 15:29:27 +01:00
Hakim El Hattab
568c7516f7 fix unclosed code block 2017-01-10 14:43:47 +01:00
Hakim El Hattab
fb8414f4cb 3.4.0 2017-01-10 13:47:33 +01:00
Hakim El Hattab
a144134b42 Merge branch 'dev' of github.com:hakimel/reveal.js 2017-01-10 13:45:52 +01:00
Hakim El Hattab
97bb6e9b58 fragments inherit visibility to avoid conflicts with parent slide visibility 2016-12-15 14:06:17 +01:00
Hakim El Hattab
f2bd9d2970 don't show error message while iframe fades in #1577 2016-12-13 16:16:51 +01:00
Hakim El Hattab
001d4d94d3 Merge branch 'add-refused-to-display-tips-to-link-preview' of https://github.com/Huxpro/reveal.js into dev 2016-12-13 15:57:43 +01:00
Hakim El Hattab
40c4db1e04 always use lowercase reveal.js 2016-12-13 15:52:34 +01:00
Hakim El Hattab
63d3b59ab2 Merge pull request #1767 from demoneaux/readme
Add note about head.js to readme.
2016-12-13 15:50:30 +01:00
Benjamin Tan
4d0f1adc40 Add note about head.js to readme.
Closes #1569.
2016-12-11 16:29:07 +08:00
Benjamin Tan
90b301d0a0 Enable passing options for parsing Markdown.
Closes #1163, #1495.
2016-12-08 17:41:55 +08:00
Benjamin Tan
713702a0ab Reduce required Node.js version to 4.0.0.
The development workflow can be used with Node 4+, not just Node 6. We
should avoid showing warnings and errors when users are installing this
package via npm/yarn.

Ref. #1729, #1743.
Closes #1725.
2016-12-06 11:38:17 +01:00
Hakim El Hattab
2bd6b563be Merge pull request #1760 from demoneaux/package-json
Reduce required Node.js version to 4.0.0.
2016-12-06 11:37:31 +01:00
Benjamin Tan
03ac4a2e8e Reduce required Node.js version to 4.0.0.
The development workflow can be used with Node 4+, not just Node 6. We
should avoid showing warnings and errors when users are installing this
package via npm/yarn.

Ref. #1729, #1743.
Closes #1725.
2016-12-06 18:12:41 +08:00
Hakim El Hattab
e4e5cc1083 Merge pull request #1740 from christinakayastha/feature/printing-remove-slide-number
Hide slide number when in paper or pdf print view
2016-12-01 10:36:03 +01:00
Hakim El Hattab
f0dfb5b5e3 merge package version conflicts 2016-12-01 10:34:02 +01:00
Hakim El Hattab
b4d46d2b7c update dependencies to work with latest node #1743 2016-12-01 10:32:44 +01:00
Hakim El Hattab
3de1521a39 Merge pull request #1743 from haf/patch-1
Bump node engine in packages.json
2016-12-01 10:31:44 +01:00
Hakim El Hattab
e460b2bd4b Merge pull request #1747 from spencermathews/feature/readme-defaults-fix
Defaults in README are not current
2016-12-01 10:23:44 +01:00
Hakim El Hattab
67ac871397 Merge pull request #1757 from daanmichiels/correct-copyright
include contributors in (c)
2016-12-01 10:22:44 +01:00
Hakim El Hattab
775d510c2f Merge pull request #1756 from jmpp/better-data-trim
Implementing a better data-trim
2016-12-01 10:18:50 +01:00
Daan Michiels
785dbddd28 correct copyright message to include contributors 2016-11-25 12:36:57 -06:00
J.M. Cléry
35162c1f5e Better version of data-trim on code snippets 2016-11-22 23:42:21 +01:00
Spencer Mathews
21c1fafa52 Update README.md to reflect current defaults in js/reveal.js 2016-11-15 13:14:56 -08:00
Hakim El Hattab
19188205de add pdf-ready event; dispatched when the presentation is laid out and ready to print 2016-11-09 11:56:55 +01:00
Henrik Feldt
a8586b3ab3 Bump node engine in packages.json 2016-11-09 11:11:34 +01:00
Christi Kaes
80e28774dd Don't remove slide-number in pdf view 2016-10-30 14:11:10 -04:00
christikaes
659822a8b5 Hide slide number when in paper or pdf print view 2016-10-30 11:31:20 -04:00
Hakim El Hattab
ca37d4e5b9 remove debug code 2016-10-12 13:21:22 +02:00
Hakim El Hattab
7547b893d4 fixes ff overview rendering bug #1649 2016-10-10 12:11:35 +02:00
Hakim El Hattab
e76855e257 remove unused dom lookup 2016-10-06 11:01:44 +02:00
Hakim El Hattab
0b9233cf4a attempt at fixing ff transition bug #1627 2016-10-05 14:00:40 +02:00
Hakim El Hattab
ce55d1a179 fix merge conflict for #1634 2016-10-05 12:21:21 +02:00
Hakim El Hattab
02f95f4de6 code format tweaks 2016-10-05 12:00:21 +02:00
Maarten Schroeven
7e99626b14 only use nodeType 1 and 3 (only relevant types) 2016-10-05 11:54:46 +02:00
Maarten Schroeven
ab33b31f0a limit text written to the status div 2016-10-05 11:54:46 +02:00
CH
2cf00254a1 renamed grunt 'base' option to 'root' (#1660)
* Allow slides to be served away from revealjs server location

The previous 'base' option conflicts with Grunt's 'base' option.
Changing it to 'root' avoids this. Further, updating to a newer Grunt
allows multiple parameters to be used. therefore `grunt serve --root="."
--root="pathtomyslides"` allows you to keep your slide content separate
from JS/CSS and such

* Live reload for relocated base

* Updated packages to match origin/dev

* Updated packages to match origin/dev

* Ensure root is an array
2016-10-05 11:45:37 +02:00
Hakim El Hattab
693a370f06 remove issue comment 2016-10-05 11:36:56 +02:00
Gerald
969885a7dc ignore delta=0 mousewheel event
fix #1607
2016-10-05 11:29:47 +02:00
Hakim El Hattab
0b6585bd44 prevent exception when initializing with no slides #1678 #1679 2016-10-05 11:23:41 +02:00
Jaiden Mispy
3c36ee6cff Add note to README about how to disable scaling 2016-10-05 11:16:41 +02:00
chadmorrow
ea8964ddbf autoSlide duration with playbackRate
The autoSlide duration of media elements with data-autoplay now takes the playbackRate of said media element into account when setting the duration so that autoSlide and the media element stay in sync.
2016-10-05 11:12:27 +02:00
Hakim El Hattab
255bde174c Merge branch 'r400-linux' of https://github.com/jroper/reveal.js into dev 2016-10-05 11:07:10 +02:00
James Roper
1301de9e39 Logitech R400 on Ubuntu blackout button support
On Ubuntu 16.04, the Logitech R400's blackout button gets mapped to 'v'
(keyCode 86). I don't know why this is, but since nothing else is
currently using 'v', this allows it to be supported out of the box.
2016-10-01 22:00:00 +10:00
Hakim El Hattab
ec76f4790c speaker layouts in server side notes plugin 2016-09-21 14:10:45 +02:00
Hakim El Hattab
da5709919b layout selector for speaker view; includes four options 2016-09-21 13:54:42 +02:00
Hakim El Hattab
79728e25cd autoplay support for content inside of fragments 2016-09-20 13:41:38 +02:00
Hakim El Hattab
bc4fc65da4 none/fade/slide transitions use flat transform style, prevents blurred content #1002 2016-08-01 09:15:34 +02:00
Hakim El Hattab
304b0292be null computed style to avoid npe 2016-07-04 14:46:46 +02:00
Hakim El Hattab
ab2bb869a3 null check to avoid occasional npe 2016-07-04 13:32:03 +02:00
Hakim El Hattab
6447b59ac5 ready flag on .reveal container 2016-07-01 08:44:27 +02:00
Charles Grigg
59f3395c7f Update JSDocs and fix typos 2016-06-29 23:10:55 -04:00
Hakim El Hattab
541bcf2123 update dependencies based on retire.js info #1473 2016-06-28 15:48:09 +02:00
Hakim El Hattab
e7de1bd8b0 merge retire.js #1473 2016-06-28 15:43:11 +02:00
Hakim El Hattab
9639b53ff4 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-06-28 15:36:08 +02:00
Hakim El Hattab
8f47b17230 Merge pull request #1628 from davidjb/markdown-doc-fix
Detail markdown plugin attributes & defaults
2016-06-28 14:46:05 +02:00
Hakim El Hattab
1da1ff0d6d use first fragment's data-autoslide value when there is no current fragment 2016-06-27 11:13:09 +02:00
Hakim El Hattab
65a90cc75d remove unused dom reference 2016-06-22 09:31:05 +02:00
Hakim El Hattab
e4634f20e8 revise simple.md so that slide 1.1 and 1.2 correctly break into separate slides 2016-06-22 09:24:09 +02:00
Hakim El Hattab
8d7ff10ce3 Merge branch 'bug/markdownSetOptions' of https://github.com/snowyu/reveal.js into dev 2016-06-22 09:20:24 +02:00
David Beitey
1fe20cb42a Detail markdown plugin attributes & defaults
Expands the details already given by highlighting the defaults for all attributes and clarifying what's required.
2016-06-22 15:10:31 +10:00
Hakim El Hattab
8d4cb810d6 move speaker notes into page container when printing pdf 2016-06-21 14:21:42 +02:00
Hakim El Hattab
bac187f3a0 request fullscreen on documentElement instead of body (#1621 #1624) 2016-06-21 11:33:07 +02:00
Hakim El Hattab
a12a17b2d7 request fullscreen on documentElement instead of body (#1621 #1624) 2016-06-21 11:30:12 +02:00
Hakim El Hattab
ce777e4c4b Revert "fix theme backgrounds in firefox fullscreen mode #1386"
This reverts commit b7e0d9b1c7.
2016-06-21 11:27:24 +02:00
Hakim El Hattab
b7e0d9b1c7 fix theme backgrounds in firefox fullscreen mode #1386 2016-06-20 10:27:04 +02:00
Hakim El Hattab
8162855d23 increase default font sizes, adjust config defaults for less margings and larger max scale #1605 2016-06-10 10:58:40 +02:00
Hakim El Hattab
6bfa48a667 prevent repeated initialization #1616 2016-06-10 10:41:16 +02:00
Hakim El Hattab
d78a8046dc Merge branch 'Timothep-master' into dev 2016-06-10 10:13:06 +02:00
Timothep
ad86772f20 Horizontal 2-1 View for the speaker notes instead of a vertical 1-2 2016-06-10 10:12:54 +02:00
Timothep
02123205a0 Added a description of the undocumented timer-reset feature 2016-06-10 10:12:54 +02:00
Hakim El Hattab
64aa3b2647 Merge branch 'master' of https://github.com/dhyegofernando/reveal.js into dev 2016-06-10 10:09:21 +02:00
Hakim El Hattab
ca92d22adc add showHelp to api #1611 2016-06-10 10:04:54 +02:00
Hakim El Hattab
7d6cc9f3ec Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-06-03 13:57:09 +02:00
Hakim El Hattab
c2997c605d text alignment 2016-06-03 13:56:52 +02:00
Hakim El Hattab
6b4bdd2c90 hdpi slides banner 2016-06-03 13:54:42 +02:00
Hakim El Hattab
f9ae4122f7 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-06-03 10:15:34 +02:00
Hakim El Hattab
904f9878d3 slides banner 2016-06-03 10:15:26 +02:00
Hakim El Hattab
4321266276 include layout for notes outside of pdf exports 2016-05-26 10:09:09 +02:00
Hakim El Hattab
3111d3b1ae support for 'separate-page' layout for notes in PDF exports #1518 2016-05-26 09:57:27 +02:00
Hakim El Hattab
e93afb7289 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-05-23 12:03:39 +02:00
Hakim El Hattab
a8c4109244 Update README.md
more in-depth documentation of slide backgrounds #1542
2016-05-23 11:59:29 +02:00
Hakim El Hattab
fd97d56894 Merge pull request #1537 from vincentbernat/fix/dark-background-simple-theme
make theme "simple" use white titles on dark backgrounds
2016-05-23 10:57:47 +02:00
Hakim El Hattab
9cd7f3f37b code format 2016-05-23 10:54:40 +02:00
Hakim El Hattab
884d3cd177 Merge pull request #1585 from jasonkiss/feature/disabled-buttons
set/remove @disabled on navigation buttons
2016-05-23 10:52:14 +02:00
Hakim El Hattab
e2fa1d966c ocd 2016-05-23 10:50:39 +02:00
Hakim El Hattab
2418a12cb9 Merge pull request #1586 from jasonkiss/feature/accessible-speaker-notes
make speaker notes keyboard accessible
2016-05-23 10:48:39 +02:00
Hakim El Hattab
6593ac3d5f moz selection color in theme template #1575 2016-05-23 10:38:46 +02:00
Hakim El Hattab
3483aacfa7 Merge pull request #1575 from aniqah/firefox-selection-colour
Add selection colour for Mozilla Firefox
2016-05-23 10:36:54 +02:00
Hakim El Hattab
2503b1a2e8 merge readme conflict #1595 2016-05-23 10:34:58 +02:00
Hakim El Hattab
c5c0290cca Merge branch 'patch-1' of https://github.com/tiagorg/reveal.js into dev 2016-05-23 10:28:32 +02:00
Tiago Garcia
187114f472 Removing duplicated "position" property at pdf.css
Found that by running css-lint on the code
2016-05-21 11:36:49 -07:00
Tristan Sokol
b79f1fac13 Add minor imporovements to the PDF export instructions 2016-05-19 16:47:25 -07:00
Jason Kiss
dec6d1745b make speaker notes keyboard accessible
Places div.speaker-notes in default kbd Tab order, and when focused,
prevent slide navigation with up/down arrows, allowing up/down arrow
keys to scroll div.speaker-notes.
2016-05-10 11:02:45 +12:00
Jason Kiss
fb8bbaac00 set/remove @disabled on navigation buttons
Keeps disabled buttons out of kbd tab order and indicates to assistive
tech like screen readers that button is disabled. Otherwise buttons
that aren’t enabled remain in kbd Tab order and screen readers announce
them as buttons, but they don’t work.
2016-05-10 10:03:05 +12:00
黄玄
e2a8634057 add refused-to-display tips in link-preview-overlay 2016-05-02 01:42:11 +08:00
Hakim El Hattab
2a79d054d4 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-04-29 09:26:41 +02:00
Hakim El Hattab
3d49b1dea3 Merge pull request #1571 from adius/patch-1
Simplify full setup
2016-04-29 09:26:28 +02:00
Hakim El Hattab
ce7d494ae9 tweak formatting to match rest of slide 2016-04-29 09:25:05 +02:00
Hakim El Hattab
2d54bc6823 Merge pull request #1572 from jesstelford/zoom-content-size
More natural zooming on block level elements
2016-04-29 09:24:25 +02:00
Hakim El Hattab
9b11915c3a fix pdf bg layering, simplify code 2016-04-28 17:07:26 +02:00
Hakim El Hattab
5558103522 make max pages per slide limit configurable 2016-04-28 11:31:11 +02:00
Hakim El Hattab
fcb6ea8385 prevent pages from overflowing when printing to pdf 2016-04-28 11:16:36 +02:00
Aniqah Mair
d1a3656108 Add selection colour for Mozilla Firefox
Defines the highlight colour when selecting slide content using Mozilla
Firefox to match other browsers, instead of being the default colour.
2016-04-27 14:50:03 -04:00
Hakim El Hattab
66c4e6a77f use scrollHeight instead of custom measurement 2016-04-27 11:12:16 +02:00
Jess Telford
a0e6da6a9c More natural zooming on block level elements
Switching a `display: block` element to `display: inline-block` allows calculating the bounds based on the contents of the div rather than the entire container (which is often `width: 100%`).

This provides a much more natural zoom, especially for paragraphs and code examples.
2016-04-26 07:27:59 +10:00
Adrian Sieber
87b082340f Simplify full setup 2016-04-24 09:39:23 +00:00
Hakim El Hattab
539e774d31 3.3.0 2016-04-18 15:29:51 +02:00
Hakim El Hattab
fc3e4d7f23 change introduction 2016-04-18 14:50:36 +02:00
Hakim El Hattab
1efa52486c readme tweak for #1535 2016-04-13 15:37:04 +02:00
Hakim El Hattab
f0ee41a22d Merge branch '1549' of https://github.com/RopoMen/reveal.js into dev 2016-04-13 15:26:06 +02:00
Hakim El Hattab
5dd9067150 overview now works with percentage based width/height #1247 2016-04-13 15:21:30 +02:00
Hakim El Hattab
cb092e60bf Merge branch 'dev' of github.com:hakimel/reveal.js into dev 2016-04-10 12:09:02 +02:00
Hakim El Hattab
a6507afcb4 widen watch for html files, required for updates to demo.html 2016-04-10 12:07:49 +02:00
Hakim El Hattab
87b24dd457 merge conflict 2016-04-10 12:07:10 +02:00
Hakim El Hattab
5a7ac78d4b lazy load iframe in demo 2016-04-10 11:57:38 +02:00
Hakim El Hattab
0fedfbe4c8 Merge branch 'update-headjs' of https://github.com/booi/reveal.js into dev 2016-04-10 11:56:32 +02:00
Ruben Oostinga
2dc546f5ba Fix watching for markdown files
`./*.md` didn't work `*.md` does work
2016-04-09 12:33:46 +02:00
Markku Roponen
a63c8cab92 Fixes #1549, now UA match is limiting out MS Edge and Chrome detection is improved. Also improved UserAgent access by storing it in to a local variable, it was accessed so many times in different places. 2016-04-08 15:47:27 +03:00
Hakim El Hattab
e83e275a4c Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-04-07 10:31:56 +02:00
Hakim El Hattab
d6406e433e new multiplex server courtesy of now.sh (closes #1377) 2016-04-07 10:31:41 +02:00
Hakim El Hattab
492e2e2e62 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-04-07 10:25:31 +02:00
Hakim El Hattab
f85a1e9f1a remove test content 2016-04-07 10:25:10 +02:00
Hakim El Hattab
07c2355604 support for standalone multiplexing 2016-04-07 10:24:44 +02:00
Hakim El Hattab
eca7113f59 Update README.md 2016-04-07 09:55:44 +02:00
Hakim El Hattab
f98b5ccdca Update README.md
readme tweaks
2016-04-07 09:55:04 +02:00
Hakim El Hattab
8789baae29 Merge pull request #1545 from ducin/master
Table of contents added in README.md
2016-04-07 09:51:51 +02:00
Hakim El Hattab
520fa4986e generalize scroll offset prevention 2016-04-07 09:07:19 +02:00
Tomasz Ducin
37ac67dba5 Table of contents added in README.md 2016-04-02 19:43:15 +02:00
Vincent Bernat
a9566dfbd4 make theme "simple" use white titles on dark backgrounds
This is similar to what is done in the "white" theme.
2016-03-24 16:25:01 +01:00
Hakim El Hattab
00b9c2b929 minor tweaks 2016-03-20 18:57:30 +01:00
Hakim El Hattab
4e416fdc58 remove unintentionally added file 2016-03-20 18:52:12 +01:00
Hakim El Hattab
3d0969166f new empty template at index.html, move old index to demo.html #1526 2016-03-20 18:50:23 +01:00
Hakim El Hattab
2625a9292e add 'shuffle' config value and API method #1506 #1089 2016-03-20 17:57:52 +01:00
Brandon Ooi
1a5f299599 update headjs to v1.0.3 2016-03-16 13:57:15 -07:00
Dhyego Fernando
587d16ceef fix(PDF Export): Mark as important width, height and add zoom properties to fix CSS rules which were overrided by inline styles 2016-03-10 13:50:35 -04:00
Hakim El Hattab
0dbdd8a366 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-03-10 16:03:09 +01:00
Hakim El Hattab
de2ab07334 slides link 2016-03-10 16:02:36 +01:00
Hakim El Hattab
0c5ce1e731 Merge pull request #1523 from demoneaux/readme-fix
Make PDF export section less OS X specific.
2016-03-09 10:05:11 +01:00
Hakim El Hattab
ef137fd01f server notes plugin no longer syncs overview mode #1446 2016-03-09 10:02:25 +01:00
Hakim El Hattab
8e3a7f03d1 notes plugin no longer syncs overview mode #1446 2016-03-09 09:57:58 +01:00
Hakim El Hattab
922677ac66 fix notes regex #1522 #1392 2016-03-09 09:37:19 +01:00
Benjamin Tan
ac2a3fff75 Make PDF export section less OS X specific.
Closes #1073.
2016-03-07 19:15:59 +08:00
Hakim El Hattab
7cee887815 Merge branch 'patch-1' of https://github.com/LaurentTreguier/reveal.js into dev 2016-03-07 08:58:58 +01:00
Hakim El Hattab
db46896613 Merge pull request #1522 from demoneaux/notes-fix
Fix query parameter issue in notes plugin.
2016-03-07 08:53:27 +01:00
Hakim El Hattab
e3d681e7c6 Merge pull request #1521 from demoneaux/unused-dependencies
Remove unused dependencies.
2016-03-07 08:52:25 +01:00
Benjamin Tan
6d0b52026a Fix query parameter issue in notes plugin.
Closes #1392.
2016-03-06 18:28:08 +08:00
Benjamin Tan
9eb56f8146 Remove unused dependencies. 2016-03-06 16:52:02 +08:00
Hakim El Hattab
0eb2d81f35 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-03-04 14:47:01 +01:00
Hakim El Hattab
c6b6ae4397 Merge pull request #1484 from omer727/patch-1
Fixing spelling typo and GitHub proper camelcase for brand name
2016-03-04 14:46:33 +01:00
Hakim El Hattab
acc40095d5 use css to scale slides up in safari 2016-02-29 11:31:00 +01:00
LaurentTreguier
219a60053a Change ".video" to ".reveal .video"
I don't know if this is supposed to be this way ?
2016-02-17 20:07:53 +01:00
Hakim El Hattab
191dbe68d5 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-01-22 11:09:39 +01:00
Hakim El Hattab
c93fbf1ddc readme tweak 2016-01-22 11:02:05 +01:00
Hakim El Hattab
fc1c239743 add barebones example to readme 2016-01-22 10:59:02 +01:00
omer727
6af739f81c Fixing spelling typo and GitHub proper camelcase for brand name 2016-01-17 14:42:56 +02:00
Hakim El Hattab
d0bb69d427 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-01-11 10:34:01 +01:00
Hakim El Hattab
8a40bb481e note about showNotes in PDF exports 2016-01-11 10:33:40 +01:00
Hakim El Hattab
fdb75176e7 merge #1220 2016-01-11 10:17:02 +01:00
Hakim El Hattab
12acf08ca5 Merge branch 'jetzhliu-patch-1' of https://github.com/jetzhliu/reveal.js into dev 2016-01-11 10:05:42 +01:00
Hakim El Hattab
fba12abd6a Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-01-11 10:05:25 +01:00
Hakim El Hattab
3c46733a54 Merge pull request #1476 from prtksxna/patch-1
Remove rebase conflict in README.md
2016-01-11 10:02:40 +01:00
Prateek Saxena
7eca84254e Remove rebase conflict in README.md 2016-01-11 05:19:28 +05:30
Hakim El Hattab
19a69b2c89 code format 2016-01-08 14:33:34 +01:00
Hakim El Hattab
3df2129bd6 Merge branch 'patch-1' of https://github.com/danieltdt/reveal.js into dev 2016-01-08 14:32:03 +01:00
Hakim El Hattab
993526ff67 fix broken iframe in backgrounds example 2016-01-08 14:18:53 +01:00
Hakim El Hattab
3d33d27b86 tweak implementation of #1376 2016-01-08 14:16:42 +01:00
Hakim El Hattab
c0ea2cd980 same code format 2016-01-08 14:02:16 +01:00
Hakim El Hattab
daa5f031bf Merge branch 'patch-2' of https://github.com/teawithfruit/reveal.js into dev 2016-01-08 14:00:50 +01:00
Hakim El Hattab
8ec529d767 rebuild css 2016-01-08 13:59:12 +01:00
Hakim El Hattab
a5750f03c0 merge conflict 2016-01-08 13:58:35 +01:00
Hakim El Hattab
06cdd9b7cd include speaker view keyboard shortcut when applicable #1466 2016-01-08 13:49:06 +01:00
Hakim El Hattab
4ee6769e0f tweaked fragment examples 2016-01-08 11:05:59 +01:00
Hakim El Hattab
52aec94800 center help overlay with flexbox 2016-01-08 10:58:13 +01:00
Bjoern Kimminich
7621e1085d added retire.js to build process
-allows security vulnerability check in used npm-dependencies and own scripts
-execute with ```grunt retire```
2016-01-08 10:51:35 +01:00
Hakim El Hattab
ddd0e85f41 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-01-08 10:49:40 +01:00
Hakim El Hattab
c3919756f1 resolve conflict 2016-01-08 10:48:10 +01:00
Hakim El Hattab
ee877845d8 add new fragment styles to readme #1445 2016-01-08 10:41:20 +01:00
Hakim El Hattab
76faeccd3e Merge branch 'fragments' of https://github.com/kewitz/reveal.js into dev 2016-01-08 10:39:02 +01:00
Hakim El Hattab
3bb7cf528c Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-01-08 10:37:51 +01:00
Hakim El Hattab
2a86465434 tweak to pdf print isntructions 2016-01-08 10:35:25 +01:00
Hakim El Hattab
1450d21595 Merge pull request #1450 from Quintasan/fix-printing-readme
Chromium users need to check Background graphics option when printing.
2016-01-08 10:29:45 +01:00
Hakim El Hattab
b7644a3bf7 expose version number through #1451 2016-01-08 10:26:53 +01:00
Hakim El Hattab
fb00a5d613 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-01-08 10:25:44 +01:00
Hakim El Hattab
1d6848a782 merge conflict 2016-01-08 10:21:35 +01:00
Hakim El Hattab
19a801799a Merge pull request #1472 from vicapow/master
Add the grunt-cli as a dependency instead of assuming global grunt.
2016-01-08 10:14:34 +01:00
Victor Powell
4881281ea1 Add the grunt-cli as a dependency instead of assuming global grunt. 2016-01-06 13:01:58 -08:00
Hakim El Hattab
fcb4b05de7 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-01-04 09:31:46 +01:00
Hakim El Hattab
e448cf8cd1 Merge pull request #1459 from appleboy/patch-1
remove redundant spaces.
2016-01-04 09:31:12 +01:00
Hakim El Hattab
c2298865cb Merge pull request #1467 from ismith/spelling_fix
Fix spelling error in print-pdf plugin
2016-01-04 09:30:36 +01:00
Hakim El Hattab
18b644cf8f ©️ ©️ ©️ ©️ ©️ closes #1469 2016-01-04 09:29:55 +01:00
Ian Smith
5da75aef01 Fix spelling error in print-pdf plugin 2015-12-27 12:35:13 -06:00
Bjoern Kimminich
de4efa5d19 updated to mustache 2.2.1
prevents XSS vulnerability (see https://github.com/janl/mustache.js/pull/388)
2015-12-21 23:17:53 +01:00
Bjoern Kimminich
5abf5001a8 ignoring IntelliJ IDEA files 2015-12-21 23:02:57 +01:00
Hakim El Hattab
91c6db71ca update to highlight.js 9.0.0 2015-12-14 09:49:05 +01:00
Bo-Yi Wu
07affa2750 remove redundant spaces. 2015-12-08 14:14:42 +08:00
Razvan Caliman
d06981c60c Merge branch 'muted-video' of github.com:oslego/reveal.js into muted-video 2015-12-03 09:47:23 +00:00
Razvan Caliman
b49664621f add option to mute background videos (updated) 2015-12-03 09:43:32 +00:00
Michał Zając
de4406f26c Chromium users need to check Background graphics option when printing. 2015-11-30 10:46:21 +01:00
Leonardo Kewitz
2909440fde Clean version of the new transitions. 2015-11-22 18:52:42 -02:00
Leonardo Kewitz
d457b9270a Added 4 fragment transitions effect. 2015-11-22 18:34:25 -02:00
Hakim El Hattab
6949ebc762 tweak 2015-11-19 15:44:50 +01:00
Hakim El Hattab
0e763c7171 2x playback controls for retina displays 2015-11-19 15:39:29 +01:00
Hakim El Hattab
c8319b9b1a add autoSlideMethod to default config 2015-11-19 15:35:12 +01:00
Hakim El Hattab
0cd4e2c84f Merge branch 'dev' of github.com:hakimel/reveal.js into dev 2015-11-19 15:30:43 +01:00
Hakim El Hattab
bbe38ad263 Merge pull request #1437 from der-michik/autoslide-direction
Add an option to auto-slide right only
2015-11-19 15:30:35 +01:00
MichiK
a398a02edb Fix build error 2015-11-19 13:51:22 +01:00
MichiK
4a45557b57 Add a more flexible autoSlideMethod option
Auto-sliding will now use the method specified in the config if it is
a function or default to navigateNext.
2015-11-19 13:00:01 +01:00
Hakim El Hattab
bef2722eed simplify condition #1434 2015-11-19 10:38:52 +01:00
Hakim El Hattab
31550d09e4 Merge pull request #1434 from mikemellor11/master
stops parallax failing if only the single horizontal slide and multiple vertical
2015-11-19 09:51:37 +01:00
MichiK
c0afa01e6a Add autoSlideRight option
When the autoSlideRight config option is active, the auto-sliding
will always navigate to the right and never down even if slides are
present there. This allows hidden "bonus slides" in presentations
which can be displayed as needed but won't show up automatically.
2015-11-18 22:00:35 +01:00
Hakim El Hattab
833622edcd update parallax background docs #1436 2015-11-18 10:36:48 +01:00
Mike Mellor
3e42929f90 check for 0 division, stops parallax failing if only the single horizontal slide and multiple vertical 2015-11-13 15:13:30 +00:00
Riceball LEE
16ebf2a783 * [bug] the markdown plugin can not render highlight codes for marked.setOptions(highlight) 2015-11-11 07:37:08 +00:00
Riceball LEE
6952931451 * update marked.js version to 0.3.5 2015-11-10 21:40:46 +00:00
Hakim El Hattab
822a9c937c 3.2.0 2015-11-09 17:07:06 +01:00
Hakim El Hattab
d022113eea Merge pull request #1362 from GuGuss/patch-1
Update the theme README.md
2015-11-09 16:54:32 +01:00
Hakim El Hattab
bb7ab5f94e Merge pull request #1381 from lordsutch/master
Fix text being cut off in Chrome when printing.
2015-11-09 16:51:05 +01:00
Hakim El Hattab
a5181e4372 Merge pull request #1391 from rohithpr/notes-key-binding
Fixed #1379 - config keyboard now disables 's' key
2015-11-09 16:47:21 +01:00
Hakim El Hattab
50f9896362 update highlight.js 8.6 -> 8.9.1 #1385 2015-11-09 16:46:08 +01:00
Hakim El Hattab
215617740d server notes sync slide changes both ways, fixes #1425 2015-11-09 16:24:09 +01:00
Hakim El Hattab
4be55f860e update highlight.js url 2015-11-07 14:39:26 +01:00
Hakim El Hattab
21d02eed32 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2015-11-07 14:20:38 +01:00
Hakim El Hattab
e74c3c6b76 Merge pull request #1422 from gre/patch-1
Fixes #1225
2015-11-07 14:19:35 +01:00
Gaëtan Renaudeau
d44bcdb3ff Fixes #1225
always enable highlight.js to fix markdown-only usage
2015-11-07 09:21:07 +01:00
teawithfruit
43f0d08155 fixed loading 2015-11-02 10:37:16 +01:00
Hakim El Hattab
fcfcf9e784 more slide number tweaking 2015-10-30 09:27:32 +01:00
Hakim El Hattab
edfa131c9c tweak how speaker notes look in pdf exports 2015-10-29 16:44:47 +01:00
Hakim El Hattab
f87f3e60f3 style tweak 2015-10-29 14:40:49 +01:00
Hakim El Hattab
9b5e16055a hide slide number element when disabled 2015-10-29 14:29:51 +01:00
Hakim El Hattab
d66cba6efa remove out of sync comments from pdf css 2015-10-29 13:24:47 +01:00
Hakim El Hattab
42babeb4ef one more slide number format 2015-10-29 12:39:51 +01:00
Hakim El Hattab
0e779edb20 slide numbers work in pdf exports, update slide number style 2015-10-29 11:59:26 +01:00
Hakim El Hattab
0198d74391 change slide number formats 2015-10-29 10:58:06 +01:00
Hakim El Hattab
35462a424c remove mention of deprecated transitions #1390 2015-10-26 16:34:43 +01:00
Hakim El Hattab
596f3d3c5a fix mixed indentation 2015-10-26 14:42:12 +01:00
Hakim El Hattab
2a757794fb Merge pull request #1399 from sloan-848/markdown-packaging
Add more support for external markdown.
2015-10-26 14:40:56 +01:00
Hakim El Hattab
5949e43524 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2015-10-26 14:40:41 +01:00
Hakim El Hattab
15414ce5bb Merge pull request #1400 from adunning/patch-1
Use en dash in title; <meta> is a void element.
2015-10-26 14:34:25 +01:00
Hakim El Hattab
103f01287b Merge pull request #1401 from adunning/patch-2
move up presentation size section
2015-10-26 14:32:49 +01:00
Hakim El Hattab
fc792e704c remove remotes.io plugin, service no longer exists #1411 2015-10-26 09:22:46 +01:00
Hakim El Hattab
1cb52120ff syntax error in postmessage example 2015-10-26 08:47:37 +01:00
Liu Zhanhong
625831b993 format note content when creating slide
In html content, marked allow `Inline-Level Grammar` but not `Block-Level Grammar`, so when I write following:
```
note:
* a
* b
* c
```
it become:
```html
<p><em> a
</em> b</p>
<ul>
<li>c</li>
</ul>
```
unbelievable!
2015-10-19 19:50:43 +08:00
Andrew Dunning
2b9d1871c9 Move up Presentation Size section.
This brings together all configuration options.
2015-10-14 18:14:33 -04:00
Andrew Dunning
015870ca8a Use en dash in title; <meta> is a void element. 2015-10-14 17:06:16 -04:00
Will Sloan
3d53766e51 Add more support for external markdown.
The 'grunt watch' command now also watches for changes to external
markdown.
The 'grunt package' command now packages all external markdown files for
rapid deployment in static enviroments.
2015-10-14 00:59:42 -04:00
rohithpr
dd8f95d9a9 Fixed #1379 - config keyboard now disables 's' key 2015-10-09 00:14:02 +05:30
Hakim El Hattab
34b82baa67 run autoprefixer 2015-10-06 20:17:22 +02:00
Hakim El Hattab
5e763bc67d fix black background in fullscreen mode #668 #1386 2015-10-06 20:16:46 +02:00
Hakim El Hattab
6d93ce5748 rebuild css 2015-10-06 19:40:06 +02:00
Chris Lawrence
e0d723be28 Fix slides being cut off in Chrome. 2015-10-02 20:48:13 -04:00
Chris Lawrence
69104e8e04 Merge remote-tracking branch 'upstream/master' 2015-10-02 20:47:19 -04:00
Hakim El Hattab
01c55d4cf6 fix bower dependency #1375 2015-10-02 12:27:51 +02:00
Alex Batista
ec119e79a7 UPDATED - Improvement on spaces and indentation 2015-09-29 21:09:41 -03:00
Alex Batista
c1cb328e19 UPDATED - Improvement on spaces and indentation 2015-09-29 21:07:02 -03:00
Alex Batista
e258db0994 UPDATED - Improvement of code. Now none flag is used, but the readyState property from video element 2015-09-29 21:01:50 -03:00
Alex Batista
28e01908c4 Merge branch 'master' of https://github.com/alexbatista/reveal.js
Conflicts:
	js/reveal.js
2015-09-29 20:56:04 -03:00
Alex Batista
92a6996754 Improvement of code. Now none flag is used, but the readyState property from video element 2015-09-29 20:49:25 -03:00
Alex Batista
b0d6e5578f improvement on spaces and indentation 2015-09-29 15:18:17 -03:00
Hakim El Hattab
329bfbe032 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2015-09-29 11:12:10 +02:00
Hakim El Hattab
ddc9e2b5e7 Merge pull request #1357 from davidbanham/master
Update location of multiplex demo server
2015-09-29 10:11:54 +01:00
Hakim El Hattab
9b70e65d32 update travis node.js version 2015-09-29 11:10:40 +02:00
Hakim El Hattab
771843ccde Merge branch 'master' of https://github.com/davidbanham/reveal.js into dev 2015-09-29 11:10:02 +02:00
Hakim El Hattab
8373d5ec68 Merge pull request #1281 from fghaas/dev
Update README to include socket.io 1.3.5 examples
2015-09-29 09:43:34 +01:00
Hakim El Hattab
c1a7e83d75 multiplexing work with socket.io 1.0+ #1281 #1276 2015-09-29 10:38:34 +02:00
Hakim El Hattab
b16bc6fc2e speaker notes work with socket.io 1.0 #1375 2015-09-29 10:07:21 +02:00
Hakim El Hattab
5117048a5b Merge branch 'deps-update' of https://github.com/verdurin/reveal.js into dev 2015-09-29 09:16:47 +02:00
Alex Batista
bcfd0aae3c bug fix - when the first section has a background-video, the vido do not execute. Now, it's work 2015-09-28 23:04:47 -03:00
Adam Huffman
ef1402e645 Update dependencies to fix installation 2015-09-28 16:39:09 +01:00
Hakim El Hattab
8a1603f4d9 Merge branch 'dev' of github.com:hakimel/reveal.js into dev 2015-09-25 09:41:14 +02:00
Hakim El Hattab
9bcd1484bc notes defined in data-notes attributes retain preformatted whitespace 2015-09-25 09:41:05 +02:00
Augustin Delaporte
55a69fc68d Update the theme README.md
The `grunt css-themes` command now loops through all Sass files. There is no need to add the newly created file to the task list.
2015-09-20 09:05:28 +02:00
Razvan Caliman
8bbc2971ac add option to mute background videos 2015-09-19 15:55:48 +01:00
David Banham
076aee5ae6 Update location of multiplex demo server 2015-09-17 15:39:21 +10:00
Wendy Smoak
d6d4c68013 Add the data-noescape attribute and example 2015-09-13 09:14:12 -04:00
Hakim El Hattab
a151df54be document data-prevent-swipe #951 2015-09-10 14:37:25 +02:00
Hakim El Hattab
1116d99e87 prevent swipes on speaker notes 2015-09-10 11:26:05 +02:00
Hakim El Hattab
0d37757f3f modifications to #951 2015-09-10 11:25:19 +02:00
Hakim El Hattab
be7545da1a Merge branch 'feature_prevent_swipe' of https://github.com/Calyhre/reveal.js into dev 2015-09-10 11:10:08 +02:00
Hakim El Hattab
bd6a592b8b notes style changes 2015-09-10 11:09:03 +02:00
Hakim El Hattab
ca4098145e bump up z-index of notes in pdf 2015-09-10 10:35:25 +02:00
Hakim El Hattab
1c6990d20f fix pdf print when showNotes is disabled 2015-09-10 09:30:57 +02:00
Hakim El Hattab
5d39e8b8ce reorder css 2015-09-10 09:16:58 +02:00
Hakim El Hattab
b0b2ce1fe3 print notes to pdf when is enabled #304 2015-09-10 08:51:04 +02:00
Hakim El Hattab
0338f280d3 add getSlideNotes API method and tests 2015-09-10 08:28:52 +02:00
Hakim El Hattab
5a40b4486f dont show notes container when printing pdf 2015-09-09 14:31:27 +02:00
Hakim El Hattab
a14a298d30 document showNotes config value #304 2015-09-09 14:28:42 +02:00
Hakim El Hattab
2ad4065500 ability to share presentation with speaker notes #304 2015-09-09 14:09:37 +02:00
Hakim El Hattab
0c971b06e4 Merge pull request #1309 from cben/patch-1
README example: load MathJax over https
2015-09-02 12:00:17 +01:00
Hakim El Hattab
5e3bbdeecf formatting 2015-09-02 12:58:08 +02:00
Hakim El Hattab
75d38379b7 Merge pull request #1310 from teawithfruit/patch-1
solves early access error with video element
2015-09-02 11:57:37 +01:00
Hakim El Hattab
de6def8cdc Merge branch 'master' of https://github.com/gruber76/reveal.js into dev 2015-09-02 12:53:53 +02:00
Hakim El Hattab
983bd51838 fix initial visibility of strike fragments #737 2015-09-02 12:46:32 +02:00
Hakim El Hattab
044e87017d fix issue where 'none' transition did not apply to vertical stacks 2015-08-31 10:55:02 +02:00
Hakim El Hattab
b3b8738238 avoid duplicate var 2015-08-14 23:34:19 +02:00
Hakim El Hattab
b9d9632531 simplify 2015-08-14 23:25:30 +02:00
Hakim El Hattab
1bf236a079 fix object.keys call on non-object 2015-08-14 23:16:59 +02:00
gruber76
0c2898d29f Update reveal.js
Removed toLowerCase call
2015-08-03 15:03:10 -06:00
Hakim El Hattab
de3e1daab4 only use zoom to scale presentations up, fixes shifts in text layout 2015-08-03 12:24:38 +02:00
teawithfruit
b7470fa323 solves early access error with video element
This will maybe solve the "InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable" error in firefox.
2015-07-21 15:59:19 +02:00
Beni Cherniavsky-Paskin
b098b56c50 README example: load MathJax over https
tiny followup to #1103
2015-07-21 12:33:17 +03:00
Hakim El Hattab
25da01ce41 Merge pull request #1132 from kendaleiv/plain-images
Add plain class for plain images
2015-07-07 12:18:33 +02:00
Hakim El Hattab
d44125d789 tweaks for #1200 2015-07-07 12:15:43 +02:00
Hakim El Hattab
399d4f652d Merge branch 'master' of https://github.com/bfritscher/reveal.js into dev 2015-07-07 12:06:22 +02:00
Hakim El Hattab
852fea4133 Merge pull request #1205 from gothma/mathjax-md
Allow tex parsing in <code> tags
2015-07-07 11:50:08 +02:00
Hakim El Hattab
c96a5d6ae3 fix theme control arrow selectors #1257 2015-07-07 11:37:36 +02:00
Hakim El Hattab
d3b2ed9462 Merge branch 'controls-buttons-a11y' of https://github.com/marcysutton/reveal.js into dev 2015-07-07 11:33:56 +02:00
Hakim El Hattab
d88f59cbaf Merge branch 'master' of github.com:hakimel/reveal.js into dev 2015-07-02 16:00:56 +02:00
Hakim El Hattab
b390e66c27 add bower json #1067 2015-07-02 15:51:01 +02:00
Hakim El Hattab
96bef35535 Merge pull request #1287 from obilodeau/patch-1
README: suggest decktape as an alternative for PDF rendering
2015-07-02 15:21:02 +02:00
Hakim El Hattab
523f78eda7 remove harcoded syntax highlight colors #1290 2015-07-02 14:58:47 +02:00
jzgdev
cee64858dd Gruntfile.js: watch tasks restructured 2015-07-01 22:51:01 -07:00
Hakim El Hattab
2de01e3219 update highlight.js theme 2015-06-30 09:27:11 +02:00
Olivier Bilodeau
98bdeae7cb README: suggest decktape as an alternative for PDF rendering
It works around the current PDF rendering bugs like #1261
2015-06-28 20:40:24 -04:00
Hakim El Hattab
adf1a24f0a Merge branch 'master' of github.com:hakimel/reveal.js into dev 2015-06-25 10:02:21 +02:00
Hakim El Hattab
6ec6ac2cb4 Merge pull request #1250 from kfuglsang/highlightjs-86
Updated to Highlightjs 8.6 with all languages supported.
2015-06-25 09:57:03 +02:00
Hakim El Hattab
7225d84248 Merge pull request #1260 from pierreozoux/master
Allows to specify PORT from env on multiplex plugin
2015-06-25 09:53:51 +02:00
Hakim El Hattab
5020014bc2 Merge pull request #1270 from jasonkarns/patch-1
enabling launching presentation with npm-start
2015-06-25 09:51:13 +02:00
Hakim El Hattab
95296b9ea4 Merge pull request #1274 from jasonkarns/patch-3
broken <table> html in demo deck
2015-06-25 09:50:36 +02:00
Hakim El Hattab
e1a3cf4476 Merge pull request #1271 from jasonkarns/patch-2
`licenses` field is deprecated
2015-06-25 09:49:45 +02:00
Florian Haas
3aec26cdc9 Update README to include socket.io 1.3.5 examples
The socket.io server at reveal.jit.su has been updated with socket.io
1.x, which means the examples referring to 0.9.x client libraries
no longer work. Update them with URLs for 1.3.5.

Fixes #1276.
2015-06-24 14:09:36 +02:00
Jason Karns
be91cc6118 broken <table> html in demo deck 2015-06-20 10:04:39 -04:00
Jason Karns
071a523f42 licenses field is deprecated
the `licenses` field in package.json is deprecated. https://docs.npmjs.com/files/package.json#license

The `license` field is the recommended field and expects an SPDX expression.
2015-06-16 10:43:20 -04:00
Jason Karns
018ca77406 enabling launching presentation with npm-start 2015-06-16 10:39:58 -04:00
Hakim El Hattab
9ef5915974 Merge pull request #1268 from gneatgeek/migrate-leap-plugin
Removed leap motion plugin from main project
2015-06-16 08:29:21 +02:00
RC028552
50e1463a57 Removed leap motion plugin from main project 2015-06-15 19:42:24 -05:00
pierreozoux
5dd2dd9f0b Allows to specify PORT from env on multiplex plugin 2015-06-10 18:23:20 +01:00
marcysutton
242f2d6c96 accessibility: controls as buttons, not divs 2015-06-05 14:02:46 -04:00
Hakim El Hattab
562d3b0238 Merge branch 'davidbanham-master' into dev 2015-06-03 12:00:35 +02:00
Hakim El Hattab
db359519ae merge #959 with minor tweaks 2015-06-03 11:59:00 +02:00
Hakim El Hattab
f0cf1f54d0 add base option for grunt serve task #1102 2015-06-03 11:42:38 +02:00
Hakim El Hattab
434cd3b8ae Merge pull request #1202 from alexandreleroux/patch-1
PDF exporting also works with Chromium
2015-06-03 11:30:29 +02:00
Hakim El Hattab
c99f138fbb Merge pull request #1234 from lememora/master
Added missing comma on the configuration example
2015-06-03 11:29:59 +02:00
Hakim El Hattab
1ca92a4f29 Merge pull request #1201 from MA3STR0/master
Correct Readme.md -> Theming -> sky
2015-06-03 11:29:42 +02:00
Hakim El Hattab
0055b7b763 Merge pull request #1207 from danielePala/patch-1
Update index.html
2015-06-03 11:29:11 +02:00
Kenneth Fuglsang
0563835fc0 Updated to Highlightjs 8.6 with all languages supported. 2015-06-02 22:18:36 +02:00
Rafael Moraes
7c7776a942 added missing comma on the configuration example 2015-05-19 14:56:24 -04:00
Hakim El Hattab
eff2265bbd 3.1.0 2015-05-18 08:36:47 +02:00
Hakim El Hattab
5f90a449cf consider lazy loaded iframes when formatting src 2015-05-08 08:55:33 +02:00
Hakim El Hattab
e16a220a62 fix iframe unload in firefox 2015-05-07 16:36:57 +02:00
Hakim El Hattab
af270a909c iframe postmesssage api works with lazy loaded iframes 2015-05-07 10:09:50 +02:00
Hakim El Hattab
bf6a426cf2 sync starts playing new embedded content 2015-05-06 17:30:08 +02:00
Hakim El Hattab
d14727b407 type check to ensure we don't call media api before media has loaded 2015-05-06 11:28:21 +02:00
Hakim El Hattab
207b0c71ed fix lazy load selector error 2015-05-06 11:25:58 +02:00
Hakim El Hattab
e67dc9251a tweak to iframe lazy load test 2015-05-06 11:02:41 +02:00
Hakim El Hattab
3cd871eac0 typo 2015-05-04 21:08:41 -04:00
Hakim El Hattab
7dd33f188f lazy-load iframes only for current slide, unload when hidden 2015-05-04 20:58:58 -04:00
Hakim El Hattab
152271efb2 lazy loading fallback also considers iframes 2015-05-04 20:22:32 -04:00
Hakim El Hattab
80e52c08e9 add test presentation for per-slide transitions, compile css #1106 2015-05-03 19:53:37 -04:00
Hakim El Hattab
0f7b0dc22c Merge branch 'master' of https://github.com/jammon/reveal.js into dev 2015-05-03 19:16:27 -04:00
Philipp A.
a96cabaf70 Fixed last header having a border-bottom
`<tbody/>` is automatically inserted, so we can guarantee that this affects all ths and tds in the last row of the table *body* and the head is left untouched
2015-05-03 17:40:11 +02:00
Daniele Pala
76230e7485 Update index.html
Added https prefix to slideshare iframe link, without this I got a 'not found' error when opening the demo locally.
2015-04-20 22:21:38 +02:00
Martin Goth
0cb4d10504 Allow tex parsing in <code> tags
Just using $ as delimiter in markdown document fails since the markdown
parser unknown to the dollar syntax will try to interpret underscores.
Putting the $ delimented formula in backticks will cause the markdown
parser to put the tex-code with the $ delimiters into a code block.
The texcode will then be unchanged. This patch allows for mathJax to
interpret and automagically display the tex-formulas.
2015-04-16 13:24:23 +02:00
Alexandre Leroux
d659575ff3 PDF exporting also works with Chromium
For those who can't install Google Chrome (e.g. work network policies) but can use Chromium, Chromium does work for creating the pdf. I updated the readme accordingly. Thanks!
2015-04-14 17:54:45 +00:00
Hakim El Hattab
bae8d968a2 change iframe example 2015-04-13 21:38:03 +02:00
Anton
33923b3004 Correct Readme.md#theming
Theming/sky.css has dark gray text on light blue background; not white text
2015-04-13 17:54:38 +02:00
Hakim El Hattab
334cd3e52b Merge branch 'master' of github.com:hakimel/reveal.js into dev 2015-04-12 19:19:52 +02:00
Hakim El Hattab
07197b1eae Merge pull request #1162 from bobylito/master
Make npm dependency usable by Browserify through npm
2015-04-12 19:19:12 +02:00
Hakim El Hattab
7f55e07f85 fix markdown test 2015-04-12 18:22:39 +02:00
Hakim El Hattab
4e3b91ae03 remove 'roll-in' fragment style due to Chrome crash #1150 2015-04-12 18:12:48 +02:00
Hakim El Hattab
ce798c4bac update cssmin to 0.12.2 #1179 2015-04-12 17:20:14 +02:00
Hakim El Hattab
404dd4e477 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2015-04-12 17:18:52 +02:00
Hakim El Hattab
69bc0be226 Merge pull request #1180 from kayakr/patch-1
typo
2015-04-12 17:11:12 +02:00
Hakim El Hattab
a0cc104a0c Merge branch 'query-params' of https://github.com/FND/reveal.js into dev 2015-04-12 17:07:59 +02:00
Hakim El Hattab
f24cbf8ad2 Merge pull request #1193 from danielquinn/Firefox-friendly
Added support for standard transforms
2015-04-12 17:05:06 +02:00
Boris Fritscher
9645a763c3 handle the </script> end bug inside code markdown
by changing the tag before html is parsed and restoring it before markdown parsing
2015-04-12 15:15:57 +02:00
Daniel Quinn
ee1ecef0e4 Added support for standard transforms
-webkit- stuff only works on webkit browsers.  I'm pretty sure that using the standard `transform:` here works in most modern browsers.
2015-04-03 12:26:40 +02:00
FND
4052389c58 support query parameters within notes plugin 2015-04-02 07:06:03 +02:00
kayakr
3ec15e35b2 Fix typo /s/configure/configured 2015-03-26 16:56:45 +13:00
Hakim El Hattab
ecc6222e7e fix for #1150? 2015-03-25 19:18:16 +01:00
Hakim El Hattab
bbfdb3b66e reset fragment transforms using 'none' 2015-03-25 19:17:15 +01:00
Hakim El Hattab
e19931abab fix #1170 2015-03-25 15:48:14 +01:00
Hakim El Hattab
70ab0ae80b remove variable definitions #1158 2015-03-25 14:51:54 +01:00
Hakim El Hattab
2999b628cf Merge branch 'dev' of https://github.com/bchretien/reveal.js into dev 2015-03-25 14:39:24 +01:00
Hakim El Hattab
0428365041 Merge branch 'patch-1' of https://github.com/drzax/reveal.js into dev 2015-03-25 14:16:12 +01:00
Hakim El Hattab
e38b1d38f8 Merge pull request #1166 from callahad/update-marked
update marked to 0.3.3
2015-03-25 14:02:22 +01:00
Hakim El Hattab
868d3b1a9f Merge branch 'patch-1' of https://github.com/borrown/reveal.js into dev 2015-03-25 14:00:26 +01:00
Hakim El Hattab
60457d21b4 alt+zoom only works on slide content #1151 2015-03-25 13:57:00 +01:00
Alexander
41cf154a60 Update reveal.js 2015-03-19 11:49:19 +08:00
Simon Elvery
7a03e238f0 Attribute values should be quoted 2015-03-16 20:44:23 +10:00
Dan Callahan
dfb39b4c96 Bumped Marked to v0.3.3
Compressed with `uglifyjs lib/marked.js --comments="/Copyright/" --mangle --compress`

Used Marked v0.3.3 as of chjj/marked@2b5802f258
2015-03-16 03:13:50 -05:00
Hakim El Hattab
7baa8ec1fe updated md slide separator regex #929
see https://github.com/hakimel/reveal.js/issues/929#issuecomment-80738837
2015-03-16 08:54:58 +01:00
Alexandre Stanislawski
e02f0488bb Make npm dependency usable by Browserify through NPM
Right now the package is not recognized as usable library by Browserify.
Adding the main attribute in the package.json solves that, and now gives
others the possibility to use reveal as a library in more complex
systems.
2015-03-14 20:05:05 +01:00
Hakim El Hattab
381adb0d1d Merge branch 'master' of github.com:hakimel/reveal.js into dev 2015-03-13 10:06:06 +01:00
Hakim El Hattab
8858ee75a5 note about plugins 2015-03-13 10:05:41 +01:00
Hakim El Hattab
bcec81efbb Merge branch 'master' of github.com:hakimel/reveal.js into dev 2015-03-13 08:21:07 +01:00
Hakim El Hattab
23ec0d083b link to plugins 2015-03-13 08:19:15 +01:00
Benjamin Chrétien
25c46ccc37 Fix slide numbering for custom slide number formatting.
Numbering was off when dealing with fragments.
2015-03-08 18:15:16 +01:00
Daniel Teixeira
f79210c6c1 Add support for custom notes.html file
It would be nice if we could define a custom notes.html file.

Actually, I'm used to compile my js files before releasing my app and, using selectors like `script[src$="notes.js"]`, doesn't work :(

So, what do you think about it?
2015-03-05 18:54:34 -03:00
Hakim El Hattab
4677741568 remove selection color from core css 2015-03-05 10:49:27 +01:00
Hakim El Hattab
c200fbedd1 add blood theme to demo slides #928 2015-03-02 12:28:47 +01:00
Hakim El Hattab
ecc8c78584 tweaks to blood theme 2015-03-02 12:27:15 +01:00
Hakim El Hattab
364a3f9845 code format 2015-03-02 12:11:05 +01:00
Hakim El Hattab
fc568b5524 Merge branch 'patch-1' of https://github.com/jhofker/reveal.js into dev 2015-03-02 12:10:26 +01:00
Hakim El Hattab
b4574791e0 fix mixed spaces/tabs 2015-03-02 12:08:21 +01:00
Christian Fehmer
3ead7d4eb5 Markdown table column alignment #1050
The alignment information were already in the generated html.
The css was the only thing missing, so I added it.
2015-02-28 19:15:14 +01:00
Hakim El Hattab
04e38c8c07 Merge pull request #1113 from brndnb/patch-1
grammar
2015-02-25 15:53:39 +01:00
Hakim El Hattab
53b9dbc654 code format 2015-02-25 15:52:10 +01:00
Hakim El Hattab
a245a87e38 Merge pull request #1138 from denehyg/background-video-loop
background video loop
2015-02-25 15:48:48 +01:00
Hakim El Hattab
22a5ec5e3b merge conflict 2015-02-25 15:42:47 +01:00
Hakim El Hattab
bf8a6271d4 fix mixed indentation 2015-02-25 15:35:30 +01:00
Hakim El Hattab
f772c7eb50 fix progress bar clicks in rtl mode #1131 2015-02-25 13:31:41 +01:00
Hakim El Hattab
ea735f0a2f ensure postmessage data is a string #1143 2015-02-25 13:26:53 +01:00
Hakim El Hattab
4c0a033dfa merge options for parallax step size #733 2015-02-25 12:10:00 +01:00
Jordan Hofker
76c5726c04 Check before calling blur on activeElement.
It's possible for slides to be in a situation where the last clicked thing was an SVG before the tab/window loses focus. When returning, `.blur()` is called on the previously-active element, but can result in an exception.

This protects against that and will only call `.blur()` when `document.activeElement` supports it.
2015-02-19 16:09:08 -06:00
Greg Denehy
00fa1c818d Added option to loop background videos 2015-02-19 17:04:41 +10:30
Ken Dale
67140f2369 Add plain class for plain images 2015-02-13 19:43:47 -05:00
Hakim El Hattab
2ed1d6fb5d fix looped view distance calculation 2015-02-09 09:35:12 +01:00
Hakim El Hattab
a4852c7cb2 prevent iframes from offsetting presentation 2015-02-03 11:56:54 +01:00
Hakim El Hattab
1c8a6e47a6 only preload last slides if presentation is looped 2015-02-02 09:14:09 +01:00
Hakim El Hattab
49f462e6ce gifs now restart when their slide container is shown 2015-01-30 10:52:28 +01:00
Hakim El Hattab
621e8d7176 only transition slides container in overview mode 2015-01-29 17:08:28 +01:00
Hakim El Hattab
03400478bd Merge pull request #1119 from hakimel/feature/new-overview
Refactored overview mode
2015-01-29 14:53:06 +01:00
Hakim El Hattab
8e66876c4e fix error when exiting overview 2015-01-29 12:21:05 +01:00
Hakim El Hattab
c8d7451142 comments 2015-01-29 12:03:02 +01:00
Hakim El Hattab
18e29a898a cleaner approach to applying transforms to slides container 2015-01-29 11:59:47 +01:00
Hakim El Hattab
3b45b618b8 dynamic file mapping to avoid themes hardcoded in gruntfile 2015-01-28 08:52:15 +01:00
Hakim El Hattab
df38524874 theme readme update 2015-01-28 08:45:38 +01:00
Hakim El Hattab
64e72781b4 ensure overview indices are up to date if a slide moves 2015-01-28 08:33:50 +01:00
Hakim El Hattab
c8569e2d9f cross browser adjustments for overview mode 2015-01-27 19:27:55 +01:00
Hakim El Hattab
e29c706533 further overview refactoring 2015-01-27 09:21:49 +01:00
Hakim El Hattab
11293d7c94 refactoring and optimization of overview mode 2015-01-26 20:38:21 +01:00
Hakim El Hattab
ce8ea84393 Merge pull request #1115 from raboof/patch-1
themes grunt task was renamed
2015-01-26 19:22:44 +01:00
Arnout Engelen
e296b39657 Grunt target was renamed 2015-01-26 18:56:03 +01:00
Branden Byers
2dccc25031 Fix small typo 2015-01-22 08:05:20 -06:00
Hakim El Hattab
44548ba357 add global flag back in for whitespace removal, without it most of the content in example.html does not work #682 2015-01-22 08:46:14 +01:00
Hakim El Hattab
f032df8f13 default to https mathjax #1103 2015-01-20 09:11:09 +01:00
Hakim El Hattab
9e14b261ea fix for #1088 when presentation is not scaled 2015-01-19 08:41:26 +01:00
Johannes Ammon
420b6912d7 Adding one-sided transitions
Now the transition isn’t any more „per slide“ but „per movement of a
slide“. So the slide can disappear in another way than it appeared.
2015-01-18 18:12:36 +01:00
Johannes Ammon
95bba5179f Mixins for readability of transitions added
To honor the DRY principle repeating patterns have been factored out.
In addition there was an anchor missing in README.md.
2015-01-18 10:55:05 +01:00
Hakim El Hattab
e0aba9f5ae apply z position to slide container, rather than individual slides 2015-01-17 10:33:18 +01:00
Hakim El Hattab
66d7b6bfae firefox support for #1088 2015-01-16 16:46:34 +01:00
Hakim El Hattab
99d92362c8 no longer set o-transforms 2015-01-16 16:15:28 +01:00
Hakim El Hattab
b71705c76f background images now work in overview mode #1088 2015-01-16 16:12:54 +01:00
Hakim El Hattab
5fb81b1b3c support for custom slide number formatting #965 2015-01-16 13:48:13 +01:00
Hakim El Hattab
817bb3bf43 use getElementByID when looking up linked slides #1086 2015-01-15 11:25:20 +01:00
Hakim El Hattab
9a89e39367 only read textContent for aria callout #1100 2015-01-14 17:01:28 +01:00
Hakim El Hattab
5359da0b06 documentation for getState/setState 2015-01-12 17:50:12 +01:00
Hakim El Hattab
04b71f577c documentation for postMessage API 2015-01-12 12:33:39 +01:00
Chris Lawrence
54082a8d76 Merge remote-tracking branch 'upstream/master' 2014-11-30 21:26:17 -05:00
David Banham
a078c87f10 Listen to custom mapped togglePause keys
This resolves issue #941
2014-06-25 23:22:13 +10:00
Chris Lawrence
09de278be0 Merge remote-tracking branch 'upstream/master' 2014-06-22 22:35:53 -04:00
Calyhre
ed8d90bc58 Fix tests 2014-06-18 14:23:42 +02:00
Calyhre
4e70cf8126 Add ability to prevent swipe for specific elements 2014-06-18 14:18:41 +02:00
Chris Lawrence
ac76644456 Merge remote-tracking branch 'upstream/master' 2014-04-13 14:05:51 -04:00
Chris Lawrence
d1d6cca272 Merge branch 'master' of github.com:lordsutch/reveal.js 2014-01-07 22:30:43 -05:00
Luke Karrys
0605ab13df add parallax horizontal and vertical properties to enable non-calculated parallax offsets 2013-11-29 11:17:18 -07:00
Chris Lawrence
97d4eb1056 Merge remote-tracking branch 'upstream/master' 2013-10-30 22:32:43 -04:00
Chris Lawrence
55f220109c Merge remote-tracking branch 'upstream/master' 2013-09-15 20:19:47 -04:00
Chris Lawrence
d8fb09fb64 Merge remote-tracking branch 'upstream/master' 2013-08-26 02:25:38 -04:00
Chris Lawrence
f84e025d38 Merge remote-tracking branch 'upstream/master' 2013-08-19 01:04:34 -04:00
Chris Lawrence
4874b13f91 Merge remote-tracking branch 'upstream/master' 2013-07-22 05:39:20 -04:00
Chris Lawrence
ad086b897e Merge remote-tracking branch 'upstream/master' 2013-06-26 21:21:19 -04:00
Chris Lawrence
173b4e7f25 Merge remote-tracking branch 'upstream/master' 2013-06-22 01:47:40 -04:00
Chris Lawrence
7b119763f8 Merge remote-tracking branch 'upstream/master' 2013-06-21 17:57:09 -04:00
Chris Lawrence
636a666197 Merge remote-tracking branch 'upstream/master' 2013-06-17 22:55:52 -04:00
66 changed files with 4558 additions and 2345 deletions

7
.gitignore vendored
View File

@@ -1,3 +1,8 @@
.idea/
*.iml
*.iws
*.eml
out/
.DS_Store
.svn
log/*.log
@@ -5,4 +10,4 @@ tmp/**
node_modules/
.sass-cache
css/reveal.min.css
js/reveal.min.js
js/reveal.min.js

View File

@@ -1,5 +1,5 @@
language: node_js
node_js:
- 0.10
- 4.1.1
before_script:
- npm install -g grunt-cli

View File

@@ -17,3 +17,7 @@ When reporting a bug make sure to include information about which browser and op
- Single-quoted strings
- Should be made towards the **dev branch**
- Should be submitted from a feature/topic branch (not your master)
### Plugins
Please do not submit plugins as pull requests. They should be maintained in their own separate repository. More information here: https://github.com/hakimel/reveal.js/wiki/Plugin-Guidelines

View File

@@ -1,6 +1,10 @@
/* global module:false */
module.exports = function(grunt) {
var port = grunt.option('port') || 8000;
var root = grunt.option('root') || '.';
if (!Array.isArray(root)) root = [root];
// Project configuration
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
@@ -11,7 +15,7 @@ module.exports = function(grunt) {
' * http://lab.hakim.se/reveal-js\n' +
' * MIT licensed\n' +
' *\n' +
' * Copyright (C) 2015 Hakim El Hattab, http://hakim.se\n' +
' * Copyright (C) 2016 Hakim El Hattab, http://hakim.se\n' +
' */'
},
@@ -36,19 +40,15 @@ module.exports = function(grunt) {
}
},
themes: {
files: {
'css/theme/black.css': 'css/theme/source/black.scss',
'css/theme/white.css': 'css/theme/source/white.scss',
'css/theme/league.css': 'css/theme/source/league.scss',
'css/theme/beige.css': 'css/theme/source/beige.scss',
'css/theme/night.css': 'css/theme/source/night.scss',
'css/theme/serif.css': 'css/theme/source/serif.scss',
'css/theme/simple.css': 'css/theme/source/simple.scss',
'css/theme/sky.css': 'css/theme/source/sky.scss',
'css/theme/moon.css': 'css/theme/source/moon.scss',
'css/theme/solarized.css': 'css/theme/source/solarized.scss',
'css/theme/blood.css': 'css/theme/source/blood.scss'
}
files: [
{
expand: true,
cwd: 'css/theme/source',
src: ['*.scss'],
dest: 'css/theme',
ext: '.css'
}
]
}
},
@@ -71,6 +71,7 @@ module.exports = function(grunt) {
curly: false,
eqeqeq: true,
immed: true,
esnext: true,
latedef: true,
newcap: true,
noarg: true,
@@ -95,11 +96,12 @@ module.exports = function(grunt) {
server: {
options: {
port: port,
base: '.',
livereload: true,
open: true
base: root,
livereload: true,
open: true
}
}
},
},
zip: {
@@ -109,14 +111,12 @@ module.exports = function(grunt) {
'js/**',
'lib/**',
'images/**',
'plugin/**'
'plugin/**',
'**.md'
]
},
watch: {
options: {
livereload: true
},
js: {
files: [ 'Gruntfile.js', 'js/reveal.js' ],
tasks: 'js'
@@ -129,9 +129,21 @@ module.exports = function(grunt) {
files: [ 'css/reveal.scss' ],
tasks: 'css-core'
},
html: {
files: [ 'index.html']
}
html: {
files: root.map(path => path + '/*.html')
},
markdown: {
files: root.map(path => path + '/*.md')
},
options: {
livereload: true
}
},
retire: {
js: ['js/reveal.js', 'lib/js/*.js', 'plugin/**/*.js'],
node: ['.'],
options: {}
}
});
@@ -146,6 +158,7 @@ module.exports = function(grunt) {
grunt.loadNpmTasks( 'grunt-contrib-connect' );
grunt.loadNpmTasks( 'grunt-autoprefixer' );
grunt.loadNpmTasks( 'grunt-zip' );
grunt.loadNpmTasks( 'grunt-retire' );
// Default task
grunt.registerTask( 'default', [ 'css', 'js' ] );

View File

@@ -1,4 +1,4 @@
Copyright (C) 2015 Hakim El Hattab, http://hakim.se
Copyright (C) 2016 Hakim El Hattab, http://hakim.se, and reveal.js contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

562
README.md
View File

@@ -1,26 +1,95 @@
# reveal.js [![Build Status](https://travis-ci.org/hakimel/reveal.js.svg?branch=master)](https://travis-ci.org/hakimel/reveal.js)
# reveal.js [![Build Status](https://travis-ci.org/hakimel/reveal.js.svg?branch=master)](https://travis-ci.org/hakimel/reveal.js) <a href="https://slides.com?ref=github"><img src="https://s3.amazonaws.com/static.slid.es/images/slides-github-banner-320x40.png?1" alt="Slides" width="160" height="20"></a>
A framework for easily creating beautiful presentations using HTML. [Check out the live demo](http://lab.hakim.se/reveal-js/).
reveal.js comes with a broad range of features including [nested slides](https://github.com/hakimel/reveal.js#markup), [Markdown contents](https://github.com/hakimel/reveal.js#markdown), [PDF export](https://github.com/hakimel/reveal.js#pdf-export), [speaker notes](https://github.com/hakimel/reveal.js#speaker-notes) and a [JavaScript API](https://github.com/hakimel/reveal.js#api). It's best viewed in a modern browser but [fallbacks](https://github.com/hakimel/reveal.js/wiki/Browser-Support) are available to make sure your presentation can still be viewed elsewhere.
reveal.js comes with a broad range of features including [nested slides](https://github.com/hakimel/reveal.js#markup), [Markdown contents](https://github.com/hakimel/reveal.js#markdown), [PDF export](https://github.com/hakimel/reveal.js#pdf-export), [speaker notes](https://github.com/hakimel/reveal.js#speaker-notes) and a [JavaScript API](https://github.com/hakimel/reveal.js#api). There's also a fully featured visual editor and platform for sharing reveal.js presentations at [slides.com](https://slides.com?ref=github).
## Table of contents
- [Online Editor](#online-editor)
- [Instructions](#instructions)
- [Markup](#markup)
- [Markdown](#markdown)
- [Element Attributes](#element-attributes)
- [Slide Attributes](#slide-attributes)
- [Configuration](#configuration)
- [Presentation Size](#presentation-size)
- [Dependencies](#dependencies)
- [Ready Event](#ready-event)
- [Auto-sliding](#auto-sliding)
- [Keyboard Bindings](#keyboard-bindings)
- [Touch Navigation](#touch-navigation)
- [Lazy Loading](#lazy-loading)
- [API](#api)
- [Slide Changed Event](#slide-changed-event)
- [Presentation State](#presentation-state)
- [Slide States](#slide-states)
- [Slide Backgrounds](#slide-backgrounds)
- [Parallax Background](#parallax-background)
- [Slide Transitions](#slide-transitions)
- [Internal links](#internal-links)
- [Fragments](#fragments)
- [Fragment events](#fragment-events)
- [Code syntax highlighting](#code-syntax-highlighting)
- [Slide number](#slide-number)
- [Overview mode](#overview-mode)
- [Fullscreen mode](#fullscreen-mode)
- [Embedded media](#embedded-media)
- [Stretching elements](#stretching-elements)
- [postMessage API](#postmessage-api)
- [PDF Export](#pdf-export)
- [Theming](#theming)
- [Speaker Notes](#speaker-notes)
- [Share and Print Speaker Notes](#share-and-print-speaker-notes)
- [Server Side Speaker Notes](#server-side-speaker-notes)
- [Multiplexing](#multiplexing)
- [Master presentation](#master-presentation)
- [Client presentation](#client-presentation)
- [Socket.io server](#socketio-server)
- [MathJax](#mathjax)
- [Installation](#installation)
- [Basic setup](#basic-setup)
- [Full setup](#full-setup)
- [Folder Structure](#folder-structure)
- [License](#license)
#### More reading:
- [Installation](#installation): Step-by-step instructions for getting reveal.js running on your computer.
#### More reading
- [Changelog](https://github.com/hakimel/reveal.js/releases): Up-to-date version history.
- [Examples](https://github.com/hakimel/reveal.js/wiki/Example-Presentations): Presentations created with reveal.js, add your own!
- [Browser Support](https://github.com/hakimel/reveal.js/wiki/Browser-Support): Explanation of browser support and fallbacks.
- [Plugins](https://github.com/hakimel/reveal.js/wiki/Plugins,-Tools-and-Hardware): A list of plugins that can be used to extend reveal.js.
## Online Editor
Presentations are written using HTML or Markdown but there's also an online editor for those of you who prefer a graphical interface. Give it a try at [http://slides.com](http://slides.com).
Presentations are written using HTML or Markdown but there's also an online editor for those of you who prefer a graphical interface. Give it a try at [https://slides.com](https://slides.com?ref=github).
## Instructions
### Markup
Markup hierarchy needs to be ``<div class="reveal"> <div class="slides"> <section>`` where the ``<section>`` represents one slide and can be repeated indefinitely. If you place multiple ``<section>``'s 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 it will be included in the horizontal sequence. For example:
Here's a barebones example of a fully working reveal.js presentation:
```html
<html>
<head>
<link rel="stylesheet" href="css/reveal.css">
<link rel="stylesheet" href="css/theme/white.css">
</head>
<body>
<div class="reveal">
<div class="slides">
<section>Slide 1</section>
<section>Slide 2</section>
</div>
</div>
<script src="js/reveal.js"></script>
<script>
Reveal.initialize();
</script>
</body>
</html>
```
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. For example:
```html
<div class="reveal">
@@ -36,9 +105,9 @@ Markup hierarchy needs to be ``<div class="reveal"> <div class="slides"> <sectio
### Markdown
It's possible to write your slides using Markdown. To enable Markdown, add the ```data-markdown``` attribute to your ```<section>``` elements and wrap the contents in a ```<script type="text/template">``` like the example below.
It's possible to write your slides using Markdown. To enable Markdown, add the `data-markdown` attribute to your `<section>` elements and wrap the contents in a `<script type="text/template">` like the example below.
This is based on [data-markdown](https://gist.github.com/1343518) from [Paul Irish](https://github.com/paulirish) modified to use [marked](https://github.com/chjj/marked) to support [Github Flavoured Markdown](https://help.github.com/articles/github-flavored-markdown). Sensitive to indentation (avoid mixing tabs and spaces) and line breaks (avoid consecutive breaks).
This is based on [data-markdown](https://gist.github.com/1343518) from [Paul Irish](https://github.com/paulirish) modified to use [marked](https://github.com/chjj/marked) to support [GitHub Flavored Markdown](https://help.github.com/articles/github-flavored-markdown). Sensitive to indentation (avoid mixing tabs and spaces) and line breaks (avoid consecutive breaks).
```html
<section data-markdown>
@@ -52,9 +121,9 @@ This is based on [data-markdown](https://gist.github.com/1343518) from [Paul Iri
#### External Markdown
You can write your content as a separate file and have reveal.js load it at runtime. Note the separator arguments which determine how slides are delimited in the external file. The ```data-charset``` attribute is optional and specifies which charset to use when loading the external file.
You can write your content as a separate file and have reveal.js load it at runtime. Note the separator arguments which determine how slides are delimited in the external file: the `data-separator` attribute defines a regular expression for horizontal slides (defaults to `^\r?\n---\r?\n$`, a newline-bounded horizontal rule) and `data-separator-vertical` defines vertical slides (disabled by default). The `data-separator-notes` attribute is a regular expression for specifying the beginning of the current slide's speaker notes (defaults to `note:`). The `data-charset` attribute is optional and specifies which charset to use when loading the external file.
When used locally, this feature requires that reveal.js [runs from a local web server](#full-setup).
When used locally, this feature requires that reveal.js [runs from a local web server](#full-setup). The following example customises all available options:
```html
<section data-markdown="example.md"
@@ -91,6 +160,19 @@ Special syntax (in html comment) is available for adding attributes to the slide
</section>
```
#### Configuring *marked*
We use [marked](https://github.com/chjj/marked) to parse Markdown. To customise marked's rendering, you can pass in options when [configuring Reveal](#configuration):
```javascript
Reveal.initialize({
// Options which are passed into marked
// See https://github.com/chjj/marked#options-1
markdown: {
smartypants: true
}
});
```
### Configuration
@@ -129,6 +211,9 @@ Reveal.initialize({
// Change the presentation direction to be RTL
rtl: false,
// Randomizes the order of slides each time the presentation loads
shuffle: false,
// Turns fragments on and off globally
fragments: true,
@@ -140,6 +225,9 @@ Reveal.initialize({
// key is pressed
help: true,
// Flags if speaker notes should be visible to all viewers
showNotes: false,
// Number of milliseconds between automatically proceeding to the
// next slide, disabled when set to 0, this value can be overwritten
// by using a data-autoslide attribute on your slides
@@ -148,6 +236,9 @@ Reveal.initialize({
// Stop auto-sliding after user input
autoSlideStoppable: true,
// Use this method for navigation when auto-sliding
autoSlideMethod: Reveal.navigateNext,
// Enable slide navigation via mouse wheel
mouseWheel: false,
@@ -158,13 +249,13 @@ Reveal.initialize({
previewLinks: false,
// Transition style
transition: 'default', // none/fade/slide/convex/concave/zoom
transition: 'slide', // none/fade/slide/convex/concave/zoom
// Transition speed
transitionSpeed: 'default', // default/fast/slow
// Transition style for full page slide backgrounds
backgroundTransition: 'default', // none/fade/slide/convex/concave/zoom
backgroundTransition: 'fade', // none/fade/slide/convex/concave/zoom
// Number of slides away from the current that are visible
viewDistance: 3,
@@ -173,8 +264,13 @@ Reveal.initialize({
parallaxBackgroundImage: '', // e.g. "'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg'"
// Parallax background size
parallaxBackgroundSize: '' // CSS syntax, e.g. "2100px 900px"
parallaxBackgroundSize: '', // CSS syntax, e.g. "2100px 900px"
// Number of pixels to move the parallax background per slide
// - Calculated automatically unless specified
// - Set to 0 to disable movement along an axis
parallaxBackgroundHorizontal: null,
parallaxBackgroundVertical: null
});
```
@@ -191,45 +287,6 @@ Reveal.configure({ autoSlide: 5000 });
```
### Dependencies
Reveal.js doesn't _rely_ on any third party scripts to work but a few optional libraries are included by default. These libraries are loaded as dependencies in the order they appear, for example:
```javascript
Reveal.initialize({
dependencies: [
// Cross-browser shim that fully implements classList - https://github.com/eligrey/classList.js/
{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
// Interpret Markdown in <section> elements
{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
// Syntax highlight for <code> elements
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
// Zoom in and out with Alt+click
{ src: 'plugin/zoom-js/zoom.js', async: true },
// Speaker notes
{ src: 'plugin/notes/notes.js', async: true },
// Remote control your reveal.js presentation using a touch device
{ src: 'plugin/remotes/remotes.js', async: true },
// MathJax
{ src: 'plugin/math/math.js', async: true }
]
});
```
You can add your own extensions using the same syntax. The following properties are available for each dependency object:
- **src**: Path to the script to load
- **async**: [optional] Flags if the script should load after reveal.js has started, defaults to false
- **callback**: [optional] Function to execute when the script has loaded
- **condition**: [optional] Function which must return true for the script to be loaded
### Presentation Size
All presentations have a normal size, that is the resolution at which they are authored. The framework will automatically scale presentations uniformly based on this size to ensure that everything fits on any given display or viewport.
@@ -252,15 +309,78 @@ Reveal.initialize({
// Bounds for smallest/largest possible scale to apply to content
minScale: 0.2,
maxScale: 1.0
maxScale: 1.5
});
```
If you wish to disable this behavior and do your own scaling (e.g. using media queries), try these settings:
```javascript
Reveal.initialize({
...
width: "100%",
height: "100%",
margin: 0,
minScale: 1,
maxScale: 1
});
```
### Dependencies
Reveal.js doesn't _rely_ on any third party scripts to work but a few optional libraries are included by default. These libraries are loaded as dependencies in the order they appear, for example:
```javascript
Reveal.initialize({
dependencies: [
// Cross-browser shim that fully implements classList - https://github.com/eligrey/classList.js/
{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
// Interpret Markdown in <section> elements
{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
// Syntax highlight for <code> elements
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
// Zoom in and out with Alt+click
{ src: 'plugin/zoom-js/zoom.js', async: true },
// Speaker notes
{ src: 'plugin/notes/notes.js', async: true },
// MathJax
{ src: 'plugin/math/math.js', async: true }
]
});
```
You can add your own extensions using the same syntax. The following properties are available for each dependency object:
- **src**: Path to the script to load
- **async**: [optional] Flags if the script should load after reveal.js has started, defaults to false
- **callback**: [optional] Function to execute when the script has loaded
- **condition**: [optional] Function which must return true for the script to be loaded
To load these dependencies, reveal.js requires [head.js](http://headjs.com/) *(a script loading library)* to be loaded before reveal.js.
### Ready Event
A 'ready' event is fired when reveal.js has loaded all non-async dependencies and is ready to start navigating. To check if reveal.js is already 'ready' you can call `Reveal.isReady()`.
```javascript
Reveal.addEventListener( 'ready', function( event ) {
// event.currentSlide, event.indexh, event.indexv
} );
```
Note that we also add a `.ready` class to the `.reveal` element so that you can hook into this with CSS.
### Auto-sliding
Presentations can be configure to progress through slides automatically, without any user input. To enable this you will need to tell the framework how many milliseconds it should wait between slides:
Presentations can be configured to progress through slides automatically, without any user input. To enable this you will need to tell the framework how many milliseconds it should wait between slides:
```javascript
// Slide every five seconds
@@ -280,6 +400,8 @@ You can also override the slide duration for individual slides and fragments by
</section>
```
To override the method used for navigation when auto-sliding, you can specify the ```autoSlideMethod``` setting. To only navigate along the top layer and ignore vertical slides, set this to ```Reveal.navigateRight```.
Whenever the auto-slide mode is resumed or paused the ```autoslideresumed``` and ```autoslidepaused``` events are fired.
@@ -297,16 +419,23 @@ Reveal.configure({
});
```
### Touch Navigation
You can swipe to navigate through a presentation on any touch-enabled device. Horizontal swipes change between horizontal slides, vertical swipes change between vertical slides. If you wish to disable this you can set the `touch` config option to false when initializing reveal.js.
If there's some part of your content that needs to remain accessible to touch events you'll need to highlight this by adding a `data-prevent-swipe` attribute to the element. One common example where this is useful is elements that need to be scrolled.
### Lazy Loading
When working on presentation with a lot of media or iframe content it's important to load lazily. Lazy loading means that reveal.js will only load content for the few slides nearest to the current slide. The number of slides that are preloaded is determined by the `viewDistance` configuration option.
To enable lazy loading all you need to do is change your "src" attributes to "data-src" as shown below. This is supported for image, video, audio and iframe elements.
To enable lazy loading all you need to do is change your "src" attributes to "data-src" as shown below. This is supported for image, video, audio and iframe elements. Lazy loaded iframes will also unload when the containing slide is no longer visible.
```html
<section>
<img data-src="image.png">
<iframe data-src="http://slides.com">
<iframe data-src="http://hakim.se"></iframe>
<video>
<source data-src="video.webm" type="video/webm" />
<source data-src="video.mp4" type="video/mp4" />
@@ -317,7 +446,7 @@ To enable lazy loading all you need to do is change your "src" attributes to "da
### API
The ``Reveal`` class provides a JavaScript API for controlling navigation and reading state:
The ``Reveal`` object exposes a JavaScript API for controlling navigation and reading state:
```javascript
// Navigation
@@ -330,15 +459,37 @@ Reveal.prev();
Reveal.next();
Reveal.prevFragment();
Reveal.nextFragment();
// Randomize the order of slides
Reveal.shuffle();
// Shows a help overlay with keyboard shortcuts
Reveal.showHelp();
// Toggle presentation states, optionally pass true/false to force on/off
Reveal.toggleOverview();
Reveal.togglePause();
Reveal.toggleAutoSlide();
// Change a config value at runtime
Reveal.configure({ controls: true });
// Returns the present configuration options
Reveal.getConfig();
// Fetch the current scale of the presentation
Reveal.getScale();
// Retrieves the previous and current slide elements
Reveal.getPreviousSlide();
Reveal.getCurrentSlide();
Reveal.getIndices(); // { h: 0, v: 0 } }
Reveal.getProgress(); // 0-1
Reveal.getTotalSlides();
// Returns the speaker notes for the current slide
Reveal.getSlideNotes();
// State checks
Reveal.isFirstSlide();
@@ -348,19 +499,9 @@ Reveal.isPaused();
Reveal.isAutoSliding();
```
### Ready Event
The 'ready' event is fired when reveal.js has loaded all (synchronous) dependencies and is ready to start navigating.
```javascript
Reveal.addEventListener( 'ready', function( event ) {
// event.currentSlide, event.indexh, event.indexv
} );
```
### Slide Changed Event
An 'slidechanged' event is fired each time the slide is changed (regardless of state). The event object holds the index values of the current slide as well as a reference to the previous and current slide HTML nodes.
A 'slidechanged' event is fired each time the slide is changed (regardless of state). The event object holds the index values of the current slide as well as a reference to the previous and current slide HTML nodes.
Some libraries, like MathJax (see [#226](https://github.com/hakimel/reveal.js/issues/226#issuecomment-10261609)), get confused by the transforms and display states of slides. Often times, this can be fixed by calling their update or render function from this callback.
@@ -370,8 +511,24 @@ Reveal.addEventListener( 'slidechanged', function( event ) {
} );
```
### Presentation State
### States
The presentation's current state can be fetched by using the `getState` method. A state object contains all of the information required to put the presentation back as it was when `getState` was first called. Sort of like a snapshot. It's a simple object that can easily be stringified and persisted or sent over the wire.
```javascript
Reveal.slide( 1 );
// we're on slide 1
var state = Reveal.getState();
Reveal.slide( 3 );
// we're on slide 3
Reveal.setState( state );
// we're back on slide 1
```
### Slide States
If you set ``data-state="somestate"`` on a slide ``<section>``, "somestate" will be applied as a class on the document element when that slide is opened. This allows you to apply broad style changes to the page based on the active slide.
@@ -385,32 +542,64 @@ Reveal.addEventListener( 'somestate', function() {
### Slide Backgrounds
Slides are contained within a limited portion of the screen by default to allow them to fit any display and scale uniformly. You can apply full page backgrounds outside of the slide area by adding a ```data-background``` attribute to your ```<section>``` elements. Four different types of backgrounds are supported: color, image, video and iframe. Below are a few examples.
Slides are contained within a limited portion of the screen by default to allow them to fit any display and scale uniformly. You can apply full page backgrounds outside of the slide area by adding a ```data-background``` attribute to your ```<section>``` elements. Four different types of backgrounds are supported: color, image, video and iframe.
##### Color Backgrounds
All CSS color formats are supported, like rgba() or hsl().
```html
<section data-background="#ff0000">
<h2>All CSS color formats are supported, like rgba() or hsl().</h2>
</section>
<section data-background="http://example.com/image.png">
<h2>This slide will have a full-size background image.</h2>
</section>
<section data-background="http://example.com/image.png" data-background-size="100px" data-background-repeat="repeat">
<h2>This background image will be sized to 100px and repeated.</h2>
</section>
<section data-background-video="https://s3.amazonaws.com/static.slid.es/site/homepage/v1/homepage-video-editor.mp4,https://s3.amazonaws.com/static.slid.es/site/homepage/v1/homepage-video-editor.webm">
<h2>Video. Multiple sources can be defined using a comma separated list.</h2>
</section>
<section data-background-iframe="https://slides.com">
<h2>Embeds a web page as a background. Note that the page won't be interactive.</h2>
<section data-background-color="#ff0000">
<h2>Color</h2>
</section>
```
##### Image Backgrounds
By default, background images are resized to cover the full page. Available options:
| Attribute | Default | Description |
| :--------------------------- | :--------- | :---------- |
| data-background-image | | URL of the image to show. GIFs restart when the slide opens. |
| data-background-size | cover | See [background-size](https://developer.mozilla.org/docs/Web/CSS/background-size) on MDN. |
| data-background-position | center | See [background-position](https://developer.mozilla.org/docs/Web/CSS/background-position) on MDN. |
| data-background-repeat | no-repeat | See [background-repeat](https://developer.mozilla.org/docs/Web/CSS/background-repeat) on MDN. |
```html
<section data-background-image="http://example.com/image.png">
<h2>Image</h2>
</section>
<section data-background-image="http://example.com/image.png" data-background-size="100px" data-background-repeat="repeat">
<h2>This background image will be sized to 100px and repeated</h2>
</section>
```
##### Video Backgrounds
Automatically plays a full size video behind the slide.
| Attribute | Default | Description |
| :--------------------------- | :------ | :---------- |
| data-background-video | | A single video source, or a comma separated list of video sources. |
| data-background-video-loop | false | Flags if the video should play repeatedly. |
| data-background-video-muted | false | Flags if the audio should be muted. |
```html
<section data-background-video="https://s3.amazonaws.com/static.slid.es/site/homepage/v1/homepage-video-editor.mp4,https://s3.amazonaws.com/static.slid.es/site/homepage/v1/homepage-video-editor.webm" data-background-video-loop data-background-video-muted>
<h2>Video</h2>
</section>
```
##### Iframe Backgrounds
Embeds a web page as a background. Note that since the iframe is in the background layer, behind your slides, it is not possible to interact with the embedded page.
```html
<section data-background-iframe="https://slides.com">
<h2>Iframe</h2>
</section>
```
##### Background Transitions
Backgrounds transition using a fade animation by default. This can be changed to a linear sliding transition by passing ```backgroundTransition: 'slide'``` to the ```Reveal.initialize()``` call. Alternatively you can set ```data-background-transition``` on any section with a background to override that specific transition.
### Parallax Background
If you want to use a parallax scrolling background, set the two following config properties when initializing reveal.js (the third one is optional).
If you want to use a parallax scrolling background, set the first two config properties below when initializing reveal.js (the other two are optional).
```javascript
Reveal.initialize({
@@ -421,8 +610,11 @@ Reveal.initialize({
// Parallax background size
parallaxBackgroundSize: '', // CSS syntax, e.g. "2100px 900px" - currently only pixels are supported (don't use % or auto)
// This slide transition gives best results:
transition: 'slide'
// Number of pixels to move the parallax background per slide
// - Calculated automatically unless specified
// - Set to 0 to disable movement along an axis
parallaxBackgroundHorizontal: 200,
parallaxBackgroundVertical: 50
});
```
@@ -444,7 +636,25 @@ The global presentation transition is set using the ```transition``` config valu
</section>
```
Note that this does not work with the page and cube transitions.
You can also use different in and out transitions for the same slide:
```html
<section data-transition="slide">
The train goes on …
</section>
<section data-transition="slide">
and on …
</section>
<section data-transition="slide-in fade-out">
and stops.
</section>
<section data-transition="fade-in slide-out">
(Passengers entering and leaving)
</section>
<section data-transition="slide">
And it starts again.
</section>
```
### Internal links
@@ -477,8 +687,8 @@ The default fragment style is to start out invisible and fade in. This style can
<section>
<p class="fragment grow">grow</p>
<p class="fragment shrink">shrink</p>
<p class="fragment roll-in">roll-in</p>
<p class="fragment fade-out">fade-out</p>
<p class="fragment fade-up">fade-up (also down, left and right!)</p>
<p class="fragment current-visible">visible only once</p>
<p class="fragment highlight-current-blue">blue only once</p>
<p class="fragment highlight-red">highlight-red</p>
@@ -524,15 +734,15 @@ Reveal.addEventListener( 'fragmenthidden', function( event ) {
### Code syntax highlighting
By default, Reveal is configured with [highlight.js](http://softwaremaniacs.org/soft/highlight/en/) for code syntax highlighting. Below is an example with clojure code that will be syntax highlighted. When the `data-trim` attribute is present surrounding whitespace is automatically removed.
By default, Reveal is configured with [highlight.js](https://highlightjs.org/) for code syntax highlighting. Below is an example with clojure code that will be syntax highlighted. When the `data-trim` attribute is present, surrounding whitespace is automatically removed. HTML will be escaped by default. To avoid this, for example if you are using `<mark>` to call out a line of code, add the `data-noescape` attribute to the `<code>` element.
```html
<section>
<pre><code data-trim>
<pre><code data-trim data-noescape>
(def lazy-fib
(concat
[0 1]
((fn rfib [a b]
<mark>((fn rfib [a b]</mark>
(lazy-cons (+ a b) (rfib b (+ a b)))) 0 1)))
</code></pre>
</section>
@@ -542,7 +752,16 @@ By default, Reveal is configured with [highlight.js](http://softwaremaniacs.org/
If you would like to display the page number of the current slide you can do so using the ```slideNumber``` configuration value.
```javascript
// Shows the slide number using default formatting
Reveal.configure({ slideNumber: true });
// Slide number formatting can be configured using these variables:
// "h.v": horizontal . vertical slide number (default)
// "h/v": horizontal / vertical slide number
// "c": flattened slide number
// "c/t": flattened slide number / total slides
Reveal.configure({ slideNumber: 'c/t' });
```
@@ -590,19 +809,57 @@ Limitations:
- Only one descendant per slide section can be stretched
### postMessage API
The framework has a built-in postMessage API that can be used when communicating with a presentation inside of another window. Here's an example showing how you'd make a reveal.js instance in the given window proceed to slide 2:
```javascript
<window>.postMessage( JSON.stringify({ method: 'slide', args: [ 2 ] }), '*' );
```
When reveal.js runs inside of an iframe it can optionally bubble all of its events to the parent. Bubbled events are stringified JSON with three fields: namespace, eventName and state. Here's how you subscribe to them from the parent window:
```javascript
window.addEventListener( 'message', function( event ) {
var data = JSON.parse( event.data );
if( data.namespace === 'reveal' && data.eventName ==='slidechanged' ) {
// Slide changed, see data.state for slide number
}
} );
```
This cross-window messaging can be toggled on or off using configuration flags.
```javascript
Reveal.initialize({
...,
// Exposes the reveal.js API through window.postMessage
postMessage: true,
// Dispatches all reveal.js events to the parent window through postMessage
postMessageEvents: false
});
```
## PDF Export
Presentations can be exported to PDF via a special print stylesheet. This feature requires that you use [Google Chrome](http://google.com/chrome).
Presentations can be exported to PDF via a special print stylesheet. This feature requires that you use [Google Chrome](http://google.com/chrome) or [Chromium](https://www.chromium.org/Home) and to be serving the presention from a webserver.
Here's an example of an exported presentation that's been uploaded to SlideShare: http://www.slideshare.net/hakimel/revealjs-300.
1. Open your presentation with `print-pdf` included anywhere in the query string. This triggers the default index HTML to load the PDF print stylesheet ([css/print/pdf.css](https://github.com/hakimel/reveal.js/blob/master/css/print/pdf.css)). You can test this with [lab.hakim.se/reveal-js?print-pdf](http://lab.hakim.se/reveal-js?print-pdf).
2. Open the in-browser print dialog (CMD+P).
Export dimensions are inferred from the configured [presentation size](#presentation-size). Slides that are too tall to fit within a single page will expand onto multiple pages. You can limit how many pages a slide may expand onto using the `pdfMaxPagesPerSlide` config option, for example `Reveal.configure({ pdfMaxPagesPerSlide: 1 })` ensures that no slide ever grows to more than one printed page.
1. Open your presentation with `print-pdf` included in the query string i.e. http://localhost:8000/?print-pdf#/. This triggers the default index HTML to load the PDF print stylesheet ([css/print/pdf.css](https://github.com/hakimel/reveal.js/blob/master/css/print/pdf.css)). You can test this with [lab.hakim.se/reveal-js?print-pdf](http://lab.hakim.se/reveal-js?print-pdf).
2. Open the in-browser print dialog (CTRL/CMD+P).
3. Change the **Destination** setting to **Save as PDF**.
4. Change the **Layout** to **Landscape**.
5. Change the **Margins** to **None**.
6. Click **Save**.
6. Enable the **Background graphics** option.
7. Click **Save**.
![Chrome Print Settings](https://s3.amazonaws.com/hakim-static/reveal-js/pdf-print-settings.png)
![Chrome Print Settings](https://s3.amazonaws.com/hakim-static/reveal-js/pdf-print-settings-2.png)
Alternatively you can use the [decktape](https://github.com/astefanutti/decktape) project.
## Theming
@@ -612,7 +869,7 @@ The framework comes with a few different themes included:
- white: White background, black text, blue links
- league: Gray background, white text, blue links (default theme for reveal.js < 3.0.0)
- beige: Beige background, dark text, brown links
- sky: Blue background, thin white text, blue links
- sky: Blue background, thin dark text, blue links
- night: Black background, thick white text, orange links
- serif: Cappuccino background, gray text, brown links
- simple: White background, black text, blue links
@@ -631,8 +888,12 @@ If you want to add a theme of your own see the instructions here: [/css/theme/RE
reveal.js comes with a speaker notes plugin which can be used to present per-slide notes in a separate browser window. The notes window also gives you a preview of the next upcoming slide so it may be helpful even if you haven't written any notes. Press the 's' key on your keyboard to open the notes window.
A speaker timer starts as soon as the speaker view is opened. You can reset it to 00:00:00 at any time by simply clicking/tapping on it.
Notes are defined by appending an ```<aside>``` element to a slide as seen below. You can add the ```data-markdown``` attribute to the aside element if you prefer writing notes using Markdown.
Alternatively you can add your notes in a `data-notes` attribute on the slide. Like `<section data-notes="Something important"></section>`.
When used locally, this feature requires that reveal.js [runs from a local web server](#full-setup).
```html
@@ -659,6 +920,12 @@ Note:
This will only display in the notes window.
```
#### Share and Print Speaker Notes
Notes are only visible to the speaker inside of the speaker view. If you wish to share your notes with others you can initialize reveal.js with the `showNotes` config value set to `true`. Notes will appear along the bottom of the presentations.
When `showNotes` is enabled notes are also included when you [export to PDF](https://github.com/hakimel/reveal.js#pdf-export). By default, notes are printed in a semi-transparent box on top of slide. If you'd rather print them on a separate page after the slide, set `showNotes: "separate-page"`.
## Server Side Speaker Notes
In some cases it can be desirable to run notes on a separate device from the one you're presenting on. The Node.js-based notes plugin lets you do this using the same note definitions as its client side counterpart. Include the required scripts by adding the following dependencies:
@@ -676,14 +943,14 @@ Reveal.initialize({
Then:
1. Install [Node.js](http://nodejs.org/)
1. Install [Node.js](http://nodejs.org/) (4.0.0 or later)
2. Run ```npm install```
3. Run ```node plugin/notes-server```
## Multiplexing
The multiplex plugin allows your audience to view the slides of the presentation you are controlling on their own phone, tablet or laptop. As the master presentation navigates the slides, all client presentations will update in real time. See a demo at [http://revealjs.jit.su/](http://revealjs.jit.su).
The multiplex plugin allows your audience to view the slides of the presentation you are controlling on their own phone, tablet or laptop. As the master presentation navigates the slides, all client presentations will update in real time. See a demo at [https://reveal-js-multiplex-ccjbegmaii.now.sh/](https://reveal-js-multiplex-ccjbegmaii.now.sh/).
The multiplex plugin needs the following 3 things to operate:
@@ -694,7 +961,7 @@ The multiplex plugin needs the following 3 things to operate:
More details:
#### Master presentation
Served from a static file server accessible (preferably) only to the presenter. This need only be on your (the presenter's) computer. (It's safer to run the master presentation from your own computer, so if the venue's Internet goes down it doesn't stop the show.) An example would be to execute the following commands in the directory of your master presentation:
Served from a static file server accessible (preferably) only to the presenter. This need only be on your (the presenter's) computer. (It's safer to run the master presentation from your own computer, so if the venue's Internet goes down it doesn't stop the show.) An example would be to execute the following commands in the directory of your master presentation:
1. ```npm install node-static```
2. ```static```
@@ -712,12 +979,12 @@ Reveal.initialize({
// Example values. To generate your own, see the socket.io server instructions.
secret: '13652805320794272084', // Obtained from the socket.io server. Gives this (the master) control of the presentation
id: '1ea875674b17ca76', // Obtained from socket.io server
url: 'revealjs.jit.su:80' // Location of socket.io server
url: 'https://reveal-js-multiplex-ccjbegmaii.now.sh' // Location of socket.io server
},
// Don't forget to add the dependencies
dependencies: [
{ src: '//cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js', async: true },
{ src: '//cdn.socket.io/socket.io-1.3.5.js', async: true },
{ src: 'plugin/multiplex/master.js', async: true },
// and if you want speaker notes
@@ -740,12 +1007,12 @@ Reveal.initialize({
// Example values. To generate your own, see the socket.io server instructions.
secret: null, // null so the clients do not have control of the master presentation
id: '1ea875674b17ca76', // id, obtained from socket.io server
url: 'revealjs.jit.su:80' // Location of socket.io server
url: 'https://reveal-js-multiplex-ccjbegmaii.now.sh' // Location of socket.io server
},
// Don't forget to add the dependencies
dependencies: [
{ src: '//cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js', async: true },
{ src: '//cdn.socket.io/socket.io-1.3.5.js', async: true },
{ src: 'plugin/multiplex/client.js', async: true }
// other dependencies...
@@ -759,15 +1026,15 @@ Server that receives the slideChanged events from the master presentation and br
1. ```npm install```
2. ```node plugin/multiplex```
Or you use the socket.io server at [http://revealjs.jit.su](http://revealjs.jit.su).
Or you use the socket.io server at [https://reveal-js-multiplex-ccjbegmaii.now.sh/](https://reveal-js-multiplex-ccjbegmaii.now.sh/).
You'll need to generate a unique secret and token pair for your master and client presentations. To do so, visit ```http://example.com/token```, where ```http://example.com``` is the location of your socket.io server. Or if you're going to use the socket.io server at [http://revealjs.jit.su](http://revealjs.jit.su), visit [http://revealjs.jit.su/token](http://revealjs.jit.su/token).
You'll need to generate a unique secret and token pair for your master and client presentations. To do so, visit ```http://example.com/token```, where ```http://example.com``` is the location of your socket.io server. Or if you're going to use the socket.io server at [https://reveal-js-multiplex-ccjbegmaii.now.sh/](https://reveal-js-multiplex-ccjbegmaii.now.sh/), visit [https://reveal-js-multiplex-ccjbegmaii.now.sh/token](https://reveal-js-multiplex-ccjbegmaii.now.sh/token).
You are very welcome to point your presentations at the Socket.io server running at [http://revealjs.jit.su](http://revealjs.jit.su), but availability and stability are not guaranteed. For anything mission critical I recommend you run your own server. It is simple to deploy to nodejitsu, heroku, your own environment, etc.
You are very welcome to point your presentations at the Socket.io server running at [https://reveal-js-multiplex-ccjbegmaii.now.sh/](https://reveal-js-multiplex-ccjbegmaii.now.sh/), but availability and stability are not guaranteed. For anything mission critical I recommend you run your own server. It is simple to deploy to nodejitsu, heroku, your own environment, etc.
##### socket.io server as file static server
The socket.io server can play the role of static file server for your client presentation, as in the example at [http://revealjs.jit.su](http://revealjs.jit.su). (Open [http://revealjs.jit.su](http://revealjs.jit.su) in two browsers. Navigate through the slides on one, and the other will update to match.)
The socket.io server can play the role of static file server for your client presentation, as in the example at [https://reveal-js-multiplex-ccjbegmaii.now.sh/](https://reveal-js-multiplex-ccjbegmaii.now.sh/). (Open [https://reveal-js-multiplex-ccjbegmaii.now.sh/](https://reveal-js-multiplex-ccjbegmaii.now.sh/) in two browsers. Navigate through the slides on one, and the other will update to match.)
Example configuration:
```javascript
@@ -783,14 +1050,14 @@ Reveal.initialize({
// Don't forget to add the dependencies
dependencies: [
{ src: '//cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js', async: true },
{ src: '//cdn.socket.io/socket.io-1.3.5.js', async: true },
{ src: 'plugin/multiplex/client.js', async: true }
// other dependencies...
]
```
It can also play the role of static file server for your master presentation and client presentations at the same time (as long as you don't want to use speaker notes). (Open [http://revealjs.jit.su](http://revealjs.jit.su) in two browsers. Navigate through the slides on one, and the other will update to match. Navigate through the slides on the second, and the first will update to match.) This is probably not desirable, because you don't want your audience to mess with your slides while you're presenting. ;)
It can also play the role of static file server for your master presentation and client presentations at the same time (as long as you don't want to use speaker notes). (Open [https://reveal-js-multiplex-ccjbegmaii.now.sh/](https://reveal-js-multiplex-ccjbegmaii.now.sh/) in two browsers. Navigate through the slides on one, and the other will update to match. Navigate through the slides on the second, and the first will update to match.) This is probably not desirable, because you don't want your audience to mess with your slides while you're presenting. ;)
Example configuration:
```javascript
@@ -806,7 +1073,7 @@ Reveal.initialize({
// Don't forget to add the dependencies
dependencies: [
{ src: '//cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js', async: true },
{ src: '//cdn.socket.io/socket.io-1.3.5.js', async: true },
{ src: 'plugin/multiplex/master.js', async: true },
{ src: 'plugin/multiplex/client.js', async: true }
@@ -815,56 +1082,11 @@ Reveal.initialize({
});
```
## Leap Motion
The Leap Motion plugin lets you utilize your [Leap Motion](https://www.leapmotion.com/) device to control basic navigation of your presentation. The gestures currently supported are:
##### 1 to 2 fingers
Pointer &mdash; Point to anything on screen. Move your finger past the device to expand the pointer.
##### 1 hand + 3 or more fingers (left/right/up/down)
Navigate through your slides. See config options to invert movements.
##### 2 hands upwards
Toggle the overview mode. Do it a second time to exit the overview.
#### Config Options
You can edit the following options:
| Property | Default | Description
| ----------------- |:-----------------:| :-------------
| autoCenter | true | Center the pointer based on where you put your finger into the leap motions detection field.
| gestureDelay | 500 | How long to delay between gestures in milliseconds.
| naturalSwipe | true | Swipe as though you were touching a touch screen. Set to false to invert.
| pointerColor | #00aaff | The color of the pointer.
| pointerOpacity | 0.7 | The opacity of the pointer.
| pointerSize | 15 | The minimum height and width of the pointer.
| pointerTolerance | 120 | Bigger = slower pointer.
Example configuration:
```js
Reveal.initialize({
// other options...
leap: {
naturalSwipe : false, // Invert swipe gestures
pointerOpacity : 0.5, // Set pointer opacity to 0.5
pointerColor : '#d80000' // Red pointer
},
dependencies: [
{ src: 'plugin/leap/leap.js', async: true }
]
});
```
## MathJax
If you want to display math equations in your presentation you can easily do so by including this plugin. The plugin is a very thin wrapper around the [MathJax](http://www.mathjax.org/) library. To use it you'll need to include it as a reveal.js dependency, [find our more about dependencies here](#dependencies).
The plugin defaults to using [LaTeX](http://en.wikipedia.org/wiki/LaTeX) but that can be adjusted through the ```math``` configuration object. Note that MathJax is loaded from a remote server. If you want to use it offline you'll need to download a copy of the library and adjust the ```mathjax``` configuration value.
The plugin defaults to using [LaTeX](http://en.wikipedia.org/wiki/LaTeX) but that can be adjusted through the ```math``` configuration object. Note that MathJax is loaded from a remote server. If you want to use it offline you'll need to download a copy of the library and adjust the ```mathjax``` configuration value.
Below is an example of how the plugin can be configured. If you don't intend to change these values you do not need to include the ```math``` config object at all.
@@ -874,10 +1096,10 @@ Reveal.initialize({
// other options ...
math: {
mathjax: 'http://cdn.mathjax.org/mathjax/latest/MathJax.js',
mathjax: 'https://cdn.mathjax.org/mathjax/latest/MathJax.js',
config: 'TeX-AMS_HTML-full' // See http://docs.mathjax.org/en/latest/config-files.html
},
dependencies: [
{ src: 'plugin/math/math.js', async: true }
]
@@ -907,33 +1129,31 @@ The core of reveal.js is very easy to install. You'll simply need to download a
Some reveal.js features, like external Markdown and speaker notes, require that presentations run from a local web server. The following instructions will set up such a server as well as all of the development tasks needed to make edits to the reveal.js source code.
1. Install [Node.js](http://nodejs.org/)
1. Install [Node.js](http://nodejs.org/) (4.0.0 or later)
2. Install [Grunt](http://gruntjs.com/getting-started#installing-the-cli)
4. Clone the reveal.js repository
1. Clone the reveal.js repository
```sh
$ git clone https://github.com/hakimel/reveal.js.git
```
5. Navigate to the reveal.js folder
1. Navigate to the reveal.js folder
```sh
$ cd reveal.js
```
6. Install dependencies
1. Install dependencies
```sh
$ npm install
```
7. Serve the presentation and monitor source files for changes
1. Serve the presentation and monitor source files for changes
```sh
$ grunt serve
$ npm start
```
8. Open <http://localhost:8000> to view your presentation
1. Open <http://localhost:8000> to view your presentation
You can change the port by using `grunt serve --port 8001`.
You can change the port by using `npm start -- --port 8001`.
### Folder Structure
@@ -947,4 +1167,4 @@ Some reveal.js features, like external Markdown and speaker notes, require that
MIT licensed
Copyright (C) 2015 Hakim El Hattab, http://hakim.se
Copyright (C) 2016 Hakim El Hattab, http://hakim.se

27
bower.json Normal file
View File

@@ -0,0 +1,27 @@
{
"name": "reveal.js",
"version": "3.4.1",
"main": [
"js/reveal.js",
"css/reveal.css"
],
"homepage": "http://lab.hakim.se/reveal-js/",
"license": "MIT",
"description": "The HTML Presentation Framework",
"authors": [
"Hakim El Hattab <hakim.elhattab@gmail.com>"
],
"dependencies": {
"headjs": "~1.0.3"
},
"repository": {
"type": "git",
"url": "git://github.com/hakimel/reveal.js.git"
},
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test"
]
}

View File

@@ -38,7 +38,8 @@
.share-reveal,
.state-background,
.reveal .progress,
.reveal .backgrounds {
.reveal .backgrounds,
.reveal .slide-number {
display: none !important;
}
@@ -141,7 +142,7 @@
.reveal .slides section {
visibility: visible !important;
position: static !important;
width: 100% !important;
width: auto !important;
height: auto !important;
display: block !important;
overflow: visible !important;
@@ -199,4 +200,4 @@
font-size: 0.8em;
}
}
}

View File

@@ -1,15 +1,9 @@
/* Default Print Stylesheet Template
by Rob Glazebrook of CSSnewbie.com
Last Updated: June 4, 2008
Feel free (nay, compelled) to edit, append, and
manipulate this file as you see fit. */
/* SECTION 1: Set default width, margin, float, and
background. This prevents elements from extending
beyond the edge of the printed page, and prevents
unnecessary background images from printing */
/**
* This stylesheet is used to print reveal.js
* presentations to PDF.
*
* https://github.com/hakimel/reveal.js#pdf-export
*/
* {
-webkit-print-color-adjust: exact;
@@ -29,12 +23,10 @@ html {
overflow: visible;
}
/* SECTION 2: Remove any elements not needed in print.
This would include navigation, ads, sidebars, etc. */
/* Remove any elements not needed in print. */
.nestedarrow,
.reveal .controls,
.reveal .progress,
.reveal .slide-number,
.reveal .playback,
.reveal.overview,
.fork-reveal,
@@ -43,16 +35,7 @@ html {
display: none !important;
}
/* SECTION 3: Set body font face, size, and color.
Consider using a serif font for readability. */
body, p, td, li, div {
}
/* SECTION 4: Set heading font face, sizes, and color.
Differentiate your headings from your body text.
Perhaps use a large sans-serif for distinction. */
h1,h2,h3,h4,h5,h6 {
h1, h2, h3, h4, h5, h6 {
text-shadow: 0 0 0 #000 !important;
}
@@ -61,8 +44,6 @@ h1,h2,h3,h4,h5,h6 {
font-family: Courier, 'Courier New', monospace !important;
}
/* SECTION 5: more reveal.js specific additions by @skypanther */
ul, ol, div, p {
visibility: visible;
position: static;
@@ -79,8 +60,9 @@ ul, ol, div, p {
}
.reveal .slides {
position: static;
width: 100%;
height: auto;
width: 100% !important;
height: auto !important;
zoom: 1 !important;
left: auto;
top: auto;
@@ -100,11 +82,17 @@ ul, ol, div, p {
-ms-perspective-origin: 50% 50%;
perspective-origin: 50% 50%;
}
.reveal .slides .pdf-page {
position: relative;
overflow: hidden;
z-index: 1;
}
.reveal .slides section {
page-break-after: always !important;
visibility: visible !important;
position: relative !important;
display: block !important;
position: relative !important;
@@ -125,6 +113,7 @@ ul, ol, div, p {
-ms-transform: none !important;
transform: none !important;
}
.reveal section.stack {
margin: 0 !important;
padding: 0 !important;
@@ -132,26 +121,51 @@ ul, ol, div, p {
height: auto !important;
min-height: auto !important;
}
.reveal img {
box-shadow: none;
}
.reveal .roll {
overflow: visible;
line-height: 1em;
}
/* Slide backgrounds are placed inside of their slide when exporting to PDF */
.reveal section .slide-background {
.reveal .slide-background {
display: block !important;
position: absolute;
top: 0;
left: 0;
width: 100%;
z-index: -1;
}
/* All elements should be above the slide-background */
.reveal section>* {
position: relative;
z-index: 1;
height: 100%;
z-index: auto !important;
}
/* Display slide speaker notes when 'showNotes' is enabled */
.reveal .speaker-notes-pdf {
display: block;
width: 100%;
max-height: none;
top: auto;
right: auto;
bottom: auto;
left: auto;
z-index: 100;
}
/* Layout option which makes notes appear on a separate page */
.reveal .speaker-notes-pdf[data-layout="separate-page"] {
position: relative;
color: inherit;
background-color: transparent;
padding: 20px;
page-break-after: always;
}
/* Display slide numbers when 'slideNumber' is enabled */
.reveal .slide-number-pdf {
display: block;
position: absolute;
font-size: 14px;
}

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,7 @@
* http://lab.hakim.se/reveal-js
* MIT licensed
*
* Copyright (C) 2015 Hakim El Hattab, http://hakim.se
* Copyright (C) 2016 Hakim El Hattab, http://hakim.se
*/
@@ -23,7 +23,7 @@ html, body, .reveal div, .reveal span, .reveal applet, .reveal object, .reveal i
.reveal article, .reveal aside, .reveal canvas, .reveal details, .reveal embed,
.reveal figure, .reveal figcaption, .reveal footer, .reveal header, .reveal hgroup,
.reveal menu, .reveal nav, .reveal output, .reveal ruby, .reveal section, .reveal summary,
.reveal time, .reveal mark, .reveal audio, video {
.reveal time, .reveal mark, .reveal audio, .reveal video {
margin: 0;
padding: 0;
border: 0;
@@ -57,18 +57,6 @@ body {
color: #000;
}
::-moz-selection {
background: #FF5E99;
color: #fff;
text-shadow: none;
}
::selection {
background: #FF5E99;
color: #fff;
text-shadow: none;
}
/*********************************************
* VIEW FRAGMENTS
@@ -81,13 +69,13 @@ body {
&.visible {
opacity: 1;
visibility: visible;
visibility: inherit;
}
}
.reveal .slides section .fragment.grow {
opacity: 1;
visibility: visible;
visibility: inherit;
&.visible {
transform: scale( 1.3 );
@@ -96,7 +84,7 @@ body {
.reveal .slides section .fragment.shrink {
opacity: 1;
visibility: visible;
visibility: inherit;
&.visible {
transform: scale( 0.7 );
@@ -107,21 +95,13 @@ body {
transform: scale( 0.1 );
&.visible {
transform: scale( 1 );
}
}
.reveal .slides section .fragment.roll-in {
transform: rotateX( 90deg );
&.visible {
transform: rotateX( 0 );
transform: none;
}
}
.reveal .slides section .fragment.fade-out {
opacity: 1;
visibility: visible;
visibility: inherit;
&.visible {
opacity: 0;
@@ -131,29 +111,62 @@ body {
.reveal .slides section .fragment.semi-fade-out {
opacity: 1;
visibility: visible;
visibility: inherit;
&.visible {
opacity: 0.5;
visibility: visible;
visibility: inherit;
}
}
.reveal .slides section .fragment.strike {
opacity: 1;
visibility: inherit;
&.visible {
text-decoration: line-through;
}
}
.reveal .slides section .fragment.fade-up {
transform: translate(0, 20%);
&.visible {
transform: translate(0, 0);
}
}
.reveal .slides section .fragment.fade-down {
transform: translate(0, -20%);
&.visible {
transform: translate(0, 0);
}
}
.reveal .slides section .fragment.fade-right {
transform: translate(-20%, 0);
&.visible {
transform: translate(0, 0);
}
}
.reveal .slides section .fragment.fade-left {
transform: translate(20%, 0);
&.visible {
transform: translate(0, 0);
}
}
.reveal .slides section .fragment.current-visible {
opacity: 0;
visibility: hidden;
&.current-fragment {
opacity: 1;
visibility: visible;
visibility: inherit;
}
}
@@ -164,7 +177,7 @@ body {
.reveal .slides section .fragment.highlight-blue,
.reveal .slides section .fragment.highlight-current-blue {
opacity: 1;
visibility: visible;
visibility: inherit;
}
.reveal .slides section .fragment.highlight-red.visible {
color: #ff2c2d
@@ -234,66 +247,68 @@ body {
-webkit-user-select: none;
}
.reveal .controls div {
.reveal .controls button {
padding: 0;
position: absolute;
opacity: 0.05;
width: 0;
height: 0;
background-color: transparent;
border: 12px solid transparent;
transform: scale(.9999);
transition: all 0.2s ease;
-webkit-appearance: none;
-webkit-tap-highlight-color: rgba( 0, 0, 0, 0 );
}
.reveal .controls div.enabled {
.reveal .controls .enabled {
opacity: 0.7;
cursor: pointer;
}
.reveal .controls div.enabled:active {
.reveal .controls .enabled:active {
margin-top: 1px;
}
.reveal .controls div.navigate-left {
.reveal .controls .navigate-left {
top: 42px;
border-right-width: 22px;
border-right-color: #000;
}
.reveal .controls div.navigate-left.fragmented {
.reveal .controls .navigate-left.fragmented {
opacity: 0.3;
}
.reveal .controls div.navigate-right {
.reveal .controls .navigate-right {
left: 74px;
top: 42px;
border-left-width: 22px;
border-left-color: #000;
}
.reveal .controls div.navigate-right.fragmented {
.reveal .controls .navigate-right.fragmented {
opacity: 0.3;
}
.reveal .controls div.navigate-up {
.reveal .controls .navigate-up {
left: 42px;
border-bottom-width: 22px;
border-bottom-color: #000;
}
.reveal .controls div.navigate-up.fragmented {
.reveal .controls .navigate-up.fragmented {
opacity: 0.3;
}
.reveal .controls div.navigate-down {
.reveal .controls .navigate-down {
left: 42px;
top: 74px;
border-top-width: 22px;
border-top-color: #000;
}
.reveal .controls div.navigate-down.fragmented {
.reveal .controls .navigate-down.fragmented {
opacity: 0.3;
}
@@ -337,11 +352,19 @@ body {
.reveal .slide-number {
position: fixed;
display: block;
right: 15px;
bottom: 15px;
opacity: 0.5;
right: 8px;
bottom: 8px;
z-index: 31;
font-family: Helvetica, sans-serif;
font-size: 12px;
line-height: 1;
color: #fff;
background-color: rgba( 0, 0, 0, 0.4 );
padding: 5px;
}
.reveal .slide-number-delimiter {
margin: 0 3px;
}
/*********************************************
@@ -352,6 +375,7 @@ body {
position: relative;
width: 100%;
height: 100%;
overflow: hidden;
touch-action: none;
}
@@ -384,7 +408,7 @@ body {
padding: 20px 0px;
z-index: 10;
transform-style: preserve-3d;
transform-style: flat;
transition: transform-origin 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
transform 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
visibility 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
@@ -446,94 +470,117 @@ body {
}
/*********************************************
* Mixins for readability of transitions
*********************************************/
@mixin transition-global($style) {
.reveal .slides section[data-transition=#{$style}],
.reveal.#{$style} .slides section:not([data-transition]) {
@content;
}
}
@mixin transition-stack($style) {
.reveal .slides section[data-transition=#{$style}].stack,
.reveal.#{$style} .slides section.stack {
@content;
}
}
@mixin transition-horizontal-past($style) {
.reveal .slides>section[data-transition=#{$style}].past,
.reveal .slides>section[data-transition~=#{$style}-out].past,
.reveal.#{$style} .slides>section:not([data-transition]).past {
@content;
}
}
@mixin transition-horizontal-future($style) {
.reveal .slides>section[data-transition=#{$style}].future,
.reveal .slides>section[data-transition~=#{$style}-in].future,
.reveal.#{$style} .slides>section:not([data-transition]).future {
@content;
}
}
@mixin transition-vertical-past($style) {
.reveal .slides>section>section[data-transition=#{$style}].past,
.reveal .slides>section>section[data-transition~=#{$style}-out].past,
.reveal.#{$style} .slides>section>section:not([data-transition]).past {
@content;
}
}
@mixin transition-vertical-future($style) {
.reveal .slides>section>section[data-transition=#{$style}].future,
.reveal .slides>section>section[data-transition~=#{$style}-in].future,
.reveal.#{$style} .slides>section>section:not([data-transition]).future {
@content;
}
}
/*********************************************
* SLIDE TRANSITION
* Aliased 'linear' for backwards compatibility
*********************************************/
.reveal.slide section,
.reveal.linear section {
backface-visibility: hidden;
@each $stylename in slide, linear {
.reveal.#{$stylename} section {
backface-visibility: hidden;
}
@include transition-horizontal-past(#{$stylename}) {
transform: translate(-150%, 0);
}
@include transition-horizontal-future(#{$stylename}) {
transform: translate(150%, 0);
}
@include transition-vertical-past(#{$stylename}) {
transform: translate(0, -150%);
}
@include transition-vertical-future(#{$stylename}) {
transform: translate(0, 150%);
}
}
.reveal .slides>section[data-transition=slide].past,
.reveal.slide .slides>section:not([data-transition]).past,
.reveal .slides>section[data-transition=linear].past,
.reveal.linear .slides>section:not([data-transition]).past {
transform: translate(-150%, 0);
}
.reveal .slides>section[data-transition=slide].future,
.reveal.slide .slides>section:not([data-transition]).future,
.reveal .slides>section[data-transition=linear].future,
.reveal.linear .slides>section:not([data-transition]).future {
transform: translate(150%, 0);
}
.reveal .slides>section>section[data-transition=slide].past,
.reveal.slide .slides>section>section:not([data-transition]).past,
.reveal .slides>section>section[data-transition=linear].past,
.reveal.linear .slides>section>section:not([data-transition]).past {
transform: translate(0, -150%);
}
.reveal .slides>section>section[data-transition=slide].future,
.reveal.slide .slides>section>section:not([data-transition]).future,
.reveal .slides>section>section[data-transition=linear].future,
.reveal.linear .slides>section>section:not([data-transition]).future {
transform: translate(0, 150%);
}
/*********************************************
* CONVEX TRANSITION
* Aliased 'default' for backwards compatibility
*********************************************/
.reveal .slides>section[data-transition=default].past,
.reveal.default .slides>section:not([data-transition]).past,
.reveal .slides>section[data-transition=convex].past,
.reveal.convex .slides>section:not([data-transition]).past {
transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0);
}
.reveal .slides>section[data-transition=default].future,
.reveal.default .slides>section:not([data-transition]).future,
.reveal .slides>section[data-transition=convex].future,
.reveal.convex .slides>section:not([data-transition]).future {
transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0);
}
@each $stylename in default, convex {
@include transition-stack(#{$stylename}) {
transform-style: preserve-3d;
}
.reveal .slides>section>section[data-transition=default].past,
.reveal.default .slides>section>section:not([data-transition]).past,
.reveal .slides>section>section[data-transition=convex].past,
.reveal.convex .slides>section>section:not([data-transition]).past {
transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0);
@include transition-horizontal-past(#{$stylename}) {
transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0);
}
@include transition-horizontal-future(#{$stylename}) {
transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0);
}
@include transition-vertical-past(#{$stylename}) {
transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0);
}
@include transition-vertical-future(#{$stylename}) {
transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0);
}
}
.reveal .slides>section>section[data-transition=default].future,
.reveal.default .slides>section>section:not([data-transition]).future,
.reveal .slides>section>section[data-transition=convex].future,
.reveal.convex .slides>section>section:not([data-transition]).future {
transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0);
}
/*********************************************
* CONCAVE TRANSITION
*********************************************/
.reveal .slides>section[data-transition=concave].past,
.reveal.concave .slides>section:not([data-transition]).past {
transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0);
}
.reveal .slides>section[data-transition=concave].future,
.reveal.concave .slides>section:not([data-transition]).future {
transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0);
@include transition-stack(concave) {
transform-style: preserve-3d;
}
.reveal .slides>section>section[data-transition=concave].past,
.reveal.concave .slides>section>section:not([data-transition]).past {
@include transition-horizontal-past(concave) {
transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0);
}
@include transition-horizontal-future(concave) {
transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0);
}
@include transition-vertical-past(concave) {
transform: translate3d(0, -80%, 0) rotateX(-70deg) translate3d(0, -80%, 0);
}
.reveal .slides>section>section[data-transition=concave].future,
.reveal.concave .slides>section>section:not([data-transition]).future {
@include transition-vertical-future(concave) {
transform: translate3d(0, 80%, 0) rotateX(70deg) translate3d(0, 80%, 0);
}
@@ -542,28 +589,21 @@ body {
* ZOOM TRANSITION
*********************************************/
.reveal .slides>section[data-transition=zoom],
.reveal.zoom .slides>section:not([data-transition]) {
@include transition-global(zoom) {
transition-timing-function: ease;
}
.reveal .slides>section[data-transition=zoom].past,
.reveal.zoom .slides>section:not([data-transition]).past {
@include transition-horizontal-past(zoom) {
visibility: hidden;
transform: scale(16);
}
.reveal .slides>section[data-transition=zoom].future,
.reveal.zoom .slides>section:not([data-transition]).future {
@include transition-horizontal-future(zoom) {
visibility: hidden;
transform: scale(0.2);
}
.reveal .slides>section>section[data-transition=zoom].past,
.reveal.zoom .slides>section>section:not([data-transition]).past {
@include transition-vertical-past(zoom) {
transform: translate(0, -150%);
}
.reveal .slides>section>section[data-transition=zoom].future,
.reveal.zoom .slides>section>section:not([data-transition]).future {
@include transition-vertical-future(zoom) {
transform: translate(0, 150%);
}
@@ -581,6 +621,7 @@ body {
min-height: 700px;
backface-visibility: hidden;
box-sizing: border-box;
transform-style: preserve-3d;
}
.reveal.center.cube .slides section {
min-height: 0;
@@ -652,6 +693,7 @@ body {
padding: 30px;
min-height: 700px;
box-sizing: border-box;
transform-style: preserve-3d;
}
.reveal.page .slides section.past {
z-index: 12;
@@ -732,60 +774,12 @@ body {
* NO TRANSITION
*********************************************/
.reveal .slides section[data-transition=none],
.reveal.none .slides section:not([data-transition]) {
@include transition-global(none) {
transform: none;
transition: none;
}
/*********************************************
* OVERVIEW
*********************************************/
.reveal.overview .slides {
perspective-origin: 50% 50%;
perspective: 700px;
}
.reveal.overview .slides section {
height: 700px;
overflow: hidden;
opacity: 1 !important;
visibility: visible !important;
cursor: pointer;
background: rgba(0,0,0,0.1);
box-sizing: border-box;
}
.reveal.overview .slides section,
.reveal.overview-deactivating .slides section {
transition: none !important;
}
.reveal.overview .slides section .fragment {
opacity: 1;
}
.reveal.overview .slides section:after,
.reveal.overview .slides section:before {
display: none !important;
}
.reveal.overview .slides section>section {
opacity: 1;
cursor: pointer;
}
.reveal.overview .slides section:hover {
background: rgba(0,0,0,0.3);
}
.reveal.overview .slides section.present {
background: rgba(0,0,0,0.3);
}
.reveal.overview .slides>section.stack {
padding: 0;
top: 0 !important;
background: none;
overflow: visible;
}
/*********************************************
* PAUSED MODE
*********************************************/
@@ -857,7 +851,7 @@ body {
* PER-SLIDE BACKGROUNDS
*********************************************/
.reveal>.backgrounds {
.reveal .backgrounds {
position: absolute;
width: 100%;
height: 100%;
@@ -1026,6 +1020,85 @@ body {
}
/*********************************************
* OVERVIEW
*********************************************/
.reveal.overview {
perspective-origin: 50% 50%;
perspective: 700px;
.slides {
// Fixes overview rendering errors in FF48+, not applied to
// other browsers since it degrades performance
-moz-transform-style: preserve-3d;
}
.slides section {
height: 100%;
top: 0 !important;
opacity: 1 !important;
overflow: hidden;
visibility: visible !important;
cursor: pointer;
box-sizing: border-box;
}
.slides section:hover,
.slides section.present {
outline: 10px solid rgba(150,150,150,0.4);
outline-offset: 10px;
}
.slides section .fragment {
opacity: 1;
transition: none;
}
.slides section:after,
.slides section:before {
display: none !important;
}
.slides>section.stack {
padding: 0;
top: 0 !important;
background: none;
outline: none;
overflow: visible;
}
.backgrounds {
perspective: inherit;
// Fixes overview rendering errors in FF48+, not applied to
// other browsers since it degrades performance
-moz-transform-style: preserve-3d;
}
.backgrounds .slide-background {
opacity: 1;
visibility: visible;
// This can't be applied to the slide itself in Safari
outline: 10px solid rgba(150,150,150,0.1);
outline-offset: 10px;
}
}
// Disable transitions transitions while we're activating
// or deactivating the overview mode.
.reveal.overview .slides section,
.reveal.overview-deactivating .slides section {
transition: none;
}
.reveal.overview .backgrounds .slide-background,
.reveal.overview-deactivating .backgrounds .slide-background {
transition: none;
}
.reveal.overview-animated .slides {
transition: transform 0.4s ease;
}
/*********************************************
* RTL SUPPORT
*********************************************/
@@ -1122,6 +1195,7 @@ body {
display: inline-block;
width: 40px;
height: 40px;
line-height: 36px;
padding: 0 10px;
float: right;
opacity: 0.6;
@@ -1149,6 +1223,7 @@ body {
.reveal .overlay .viewport {
position: absolute;
display: flex;
top: 40px;
right: 0;
bottom: 0;
@@ -1172,6 +1247,23 @@ body {
visibility: visible;
}
.reveal .overlay.overlay-preview.loaded .viewport-inner {
position: absolute;
z-index: -1;
left: 0;
top: 45%;
width: 100%;
text-align: center;
letter-spacing: normal;
}
.reveal .overlay.overlay-preview .x-frame-error {
opacity: 0;
transition: opacity 0.3s ease 0.3s;
}
.reveal .overlay.overlay-preview.loaded .x-frame-error {
opacity: 1;
}
.reveal .overlay.overlay-preview.loaded .spinner {
opacity: 0;
visibility: hidden;
@@ -1185,8 +1277,8 @@ body {
.reveal .overlay.overlay-help .viewport .viewport-inner {
width: 600px;
margin: 0 auto;
padding: 60px;
margin: auto;
padding: 20px 20px 80px 20px;
text-align: center;
letter-spacing: normal;
}
@@ -1198,13 +1290,13 @@ body {
.reveal .overlay.overlay-help .viewport .viewport-inner table {
border: 1px solid #fff;
border-collapse: collapse;
font-size: 14px;
font-size: 16px;
}
.reveal .overlay.overlay-help .viewport .viewport-inner table th,
.reveal .overlay.overlay-help .viewport .viewport-inner table td {
width: 200px;
padding: 10px;
padding: 14px;
border: 1px solid #fff;
vertical-align: middle;
}
@@ -1223,7 +1315,7 @@ body {
.reveal .playback {
position: fixed;
left: 15px;
bottom: 15px;
bottom: 20px;
z-index: 30;
cursor: pointer;
transition: all 400ms ease;
@@ -1285,10 +1377,50 @@ body {
* SPEAKER NOTES
*********************************************/
// Hide on-page notes
.reveal aside.notes {
display: none;
}
// An interface element that can optionally be used to show the
// speaker notes to all viewers, on top of the presentation
.reveal .speaker-notes {
display: none;
position: absolute;
width: 70%;
max-height: 15%;
left: 15%;
bottom: 26px;
padding: 10px;
z-index: 1;
font-size: 18px;
line-height: 1.4;
color: #fff;
background-color: rgba(0,0,0,0.5);
overflow: auto;
box-sizing: border-box;
text-align: left;
font-family: Helvetica, sans-serif;
-webkit-overflow-scrolling: touch;
}
.reveal .speaker-notes.visible:not(:empty) {
display: block;
}
@media screen and (max-width: 1024px) {
.reveal .speaker-notes {
font-size: 14px;
}
}
@media screen and (max-width: 600px) {
.reveal .speaker-notes {
width: 90%;
left: 5%;
}
}
/*********************************************
* ZOOM PLUGIN
@@ -1312,5 +1444,3 @@ body {
.zoomed .reveal .roll span:after {
visibility: hidden;
}

View File

@@ -2,11 +2,9 @@
Themes are written using Sass to keep things modular and reduce the need for repeated selectors across files. Make sure that you have the reveal.js development environment including the Grunt dependencies installed before proceding: https://github.com/hakimel/reveal.js#full-setup
You also need to install Ruby and then Sass (with `gem install sass`).
## Creating a Theme
To create your own theme, start by duplicating any ```.scss``` file in [/css/theme/source](https://github.com/hakimel/reveal.js/blob/master/css/theme/source) and adding it to the compilation list in the [Gruntfile](https://github.com/hakimel/reveal.js/blob/master/Gruntfile.js).
To create your own theme, start by duplicating a ```.scss``` file in [/css/theme/source](https://github.com/hakimel/reveal.js/blob/master/css/theme/source). It will be automatically compiled by Grunt from Sass to CSS (see the [Gruntfile](https://github.com/hakimel/reveal.js/blob/master/Gruntfile.js)) when you run `grunt css-themes`.
Each theme file does four things in the following order:
@@ -17,9 +15,7 @@ Shared utility functions.
Declares a set of custom variables that the template file (step 4) expects. Can be overridden in step 3.
3. **Override**
This is where you override the default theme. Either by specifying variables (see [settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss) for reference) or by adding full selectors with hardcoded styles.
This is where you override the default theme. Either by specifying variables (see [settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss) for reference) or by adding any selectors and styles you please.
4. **Include [/css/theme/template/theme.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/theme.scss)**
The template theme file which will generate final CSS output based on the currently defined variables.
When you are done, run `grunt themes` to compile the Sass file to CSS and you are ready to use your new theme.

View File

@@ -1,26 +1,26 @@
@import url(../../lib/font/league-gothic/league-gothic.css);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/**
* Beige theme for reveal.js.
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
@import url(../../lib/font/league-gothic/league-gothic.css);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/*********************************************
* GLOBAL STYLES
*********************************************/
body {
background: #f7f2d3;
background: -moz-radial-gradient(center, circle cover, #ffffff 0%, #f7f2d3 100%);
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #ffffff), color-stop(100%, #f7f2d3));
background: -webkit-radial-gradient(center, circle cover, #ffffff 0%, #f7f2d3 100%);
background: -o-radial-gradient(center, circle cover, #ffffff 0%, #f7f2d3 100%);
background: -ms-radial-gradient(center, circle cover, #ffffff 0%, #f7f2d3 100%);
background: radial-gradient(center, circle cover, #ffffff 0%, #f7f2d3 100%);
background: -moz-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, white), color-stop(100%, #f7f2d3));
background: -webkit-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
background: -o-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
background: -ms-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
background: radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
background-color: #f7f3de; }
.reveal {
font-family: 'Lato', sans-serif;
font-size: 36px;
font-family: "Lato", sans-serif;
font-size: 40px;
font-weight: normal;
color: #333; }
@@ -29,17 +29,28 @@ body {
background: rgba(79, 64, 28, 0.99);
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-selection {
color: #fff;
background: rgba(79, 64, 28, 0.99);
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #333;
font-family: 'League Gothic', Impact, sans-serif;
font-family: "League Gothic", Impact, sans-serif;
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
@@ -70,17 +81,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -97,7 +113,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -107,7 +126,8 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
@@ -120,7 +140,8 @@ body {
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child, .reveal blockquote p:last-child {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -146,9 +167,7 @@ body {
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -158,12 +177,22 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table tr:last-child td {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
@@ -187,18 +216,18 @@ body {
.reveal a {
color: #8b743d;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #c0a76e;
color: #c0a86e;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #564726; }
background: #564826; }
/*********************************************
* IMAGES
@@ -209,10 +238,14 @@ body {
border: 4px solid #333;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
-webkit-transition: all .15s linear;
-moz-transition: all .15s linear;
transition: all .15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
@@ -222,29 +255,33 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #8b743d; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #8b743d; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #8b743d; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #8b743d; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #c0a76e; }
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #c0a86e; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #c0a76e; }
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #c0a86e; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #c0a76e; }
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #c0a86e; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #c0a76e; }
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #c0a86e; }
/*********************************************
* PROGRESS BAR
@@ -257,9 +294,3 @@ body {
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
/*********************************************
* SLIDE NUMBER
*********************************************/
.reveal .slide-number {
color: #8b743d; }

View File

@@ -1,9 +1,9 @@
@import url(../../lib/font/source-sans-pro/source-sans-pro.css);
/**
* Black theme for reveal.js. This is the opposite of the 'white' theme.
*
* Copyright (C) 2015 Hakim El Hattab, http://hakim.se
* By Hakim El Hattab, http://hakim.se
*/
@import url(../../lib/font/source-sans-pro/source-sans-pro.css);
section.has-light-background, section.has-light-background h1, section.has-light-background h2, section.has-light-background h3, section.has-light-background h4, section.has-light-background h5, section.has-light-background h6 {
color: #222; }
@@ -15,8 +15,8 @@ body {
background-color: #222; }
.reveal {
font-family: 'Source Sans Pro', Helvetica, sans-serif;
font-size: 38px;
font-family: "Source Sans Pro", Helvetica, sans-serif;
font-size: 42px;
font-weight: normal;
color: #fff; }
@@ -25,17 +25,28 @@ body {
background: #bee4fd;
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-selection {
color: #fff;
background: #bee4fd;
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #fff;
font-family: 'Source Sans Pro', Helvetica, sans-serif;
font-family: "Source Sans Pro", Helvetica, sans-serif;
font-weight: 600;
line-height: 1.2;
letter-spacing: normal;
@@ -66,17 +77,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -93,7 +109,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -103,7 +122,8 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
@@ -116,7 +136,8 @@ body {
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child, .reveal blockquote p:last-child {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -142,9 +163,7 @@ body {
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -154,12 +173,22 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table tr:last-child td {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
@@ -183,9 +212,9 @@ body {
.reveal a {
color: #42affa;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #8dcffc;
@@ -194,7 +223,7 @@ body {
.reveal .roll span:after {
color: #fff;
background: #068ee9; }
background: #068de9; }
/*********************************************
* IMAGES
@@ -205,10 +234,14 @@ body {
border: 4px solid #fff;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
-webkit-transition: all .15s linear;
-moz-transition: all .15s linear;
transition: all .15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
@@ -218,28 +251,32 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #42affa; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #42affa; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #42affa; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #42affa; }
.reveal .controls div.navigate-left.enabled:hover {
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #8dcffc; }
.reveal .controls div.navigate-right.enabled:hover {
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #8dcffc; }
.reveal .controls div.navigate-up.enabled:hover {
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #8dcffc; }
.reveal .controls div.navigate-down.enabled:hover {
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #8dcffc; }
/*********************************************
@@ -253,9 +290,3 @@ body {
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
/*********************************************
* SLIDE NUMBER
*********************************************/
.reveal .slide-number {
color: #42affa; }

View File

@@ -1,4 +1,3 @@
@import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic);
/**
* Blood theme for reveal.js
* Author: Walther http://github.com/Walther
@@ -10,22 +9,17 @@
* For other themes, change $codeBackground accordingly.
*
*/
@import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic);
/*********************************************
* GLOBAL STYLES
*********************************************/
body {
background: #222;
background: -moz-radial-gradient(center, circle cover, #626262 0%, #222 100%);
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #626262), color-stop(100%, #222));
background: -webkit-radial-gradient(center, circle cover, #626262 0%, #222 100%);
background: -o-radial-gradient(center, circle cover, #626262 0%, #222 100%);
background: -ms-radial-gradient(center, circle cover, #626262 0%, #222 100%);
background: radial-gradient(center, circle cover, #626262 0%, #222 100%);
background-color: #2b2b2b; }
background-color: #222; }
.reveal {
font-family: Ubuntu, 'sans-serif';
font-size: 36px;
font-family: Ubuntu, "sans-serif";
font-size: 40px;
font-weight: normal;
color: #eee; }
@@ -34,17 +28,28 @@ body {
background: #a23;
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-selection {
color: #fff;
background: #a23;
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #eee;
font-family: Ubuntu, 'sans-serif';
font-family: Ubuntu, "sans-serif";
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
@@ -75,17 +80,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -102,7 +112,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -112,7 +125,8 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
@@ -125,7 +139,8 @@ body {
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child, .reveal blockquote p:last-child {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -151,9 +166,7 @@ body {
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -163,12 +176,22 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table tr:last-child td {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
@@ -192,18 +215,18 @@ body {
.reveal a {
color: #a23;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #dd5567;
color: #dd5566;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #6a1521; }
background: #6a1520; }
/*********************************************
* IMAGES
@@ -214,10 +237,14 @@ body {
border: 4px solid #eee;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
-webkit-transition: all .15s linear;
-moz-transition: all .15s linear;
transition: all .15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
@@ -227,29 +254,33 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #a23; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #a23; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #a23; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #a23; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #dd5567; }
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #dd5566; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #dd5567; }
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #dd5566; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #dd5567; }
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #dd5566; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #dd5567; }
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #dd5566; }
/*********************************************
* PROGRESS BAR
@@ -263,25 +294,18 @@ body {
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
/*********************************************
* SLIDE NUMBER
*********************************************/
.reveal .slide-number {
color: #a23; }
.reveal p {
font-weight: 300;
text-shadow: 1px 1px #222; }
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
font-weight: 700; }
.reveal a, .reveal a:hover {
text-shadow: 2px 2px 2px #000; }
.reveal small a, .reveal small a:hover {
text-shadow: 1px 1px 1px #000; }
.reveal p code {
background-color: #23241f;
display: inline-block;

View File

@@ -1,5 +1,3 @@
@import url(../../lib/font/league-gothic/league-gothic.css);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/**
* League theme for reveal.js.
*
@@ -7,6 +5,8 @@
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
@import url(../../lib/font/league-gothic/league-gothic.css);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/*********************************************
* GLOBAL STYLES
*********************************************/
@@ -21,8 +21,8 @@ body {
background-color: #2b2b2b; }
.reveal {
font-family: 'Lato', sans-serif;
font-size: 36px;
font-family: "Lato", sans-serif;
font-size: 40px;
font-weight: normal;
color: #eee; }
@@ -31,17 +31,28 @@ body {
background: #FF5E99;
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-selection {
color: #fff;
background: #FF5E99;
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #eee;
font-family: 'League Gothic', Impact, sans-serif;
font-family: "League Gothic", Impact, sans-serif;
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
@@ -72,17 +83,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -99,7 +115,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -109,7 +128,8 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
@@ -122,7 +142,8 @@ body {
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child, .reveal blockquote p:last-child {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -148,9 +169,7 @@ body {
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -160,12 +179,22 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table tr:last-child td {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
@@ -189,18 +218,18 @@ body {
.reveal a {
color: #13DAEC;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #71ebf4;
color: #71e9f4;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #0d9ba5; }
background: #0d99a5; }
/*********************************************
* IMAGES
@@ -211,10 +240,14 @@ body {
border: 4px solid #eee;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
-webkit-transition: all .15s linear;
-moz-transition: all .15s linear;
transition: all .15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
@@ -224,29 +257,33 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #13DAEC; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #13DAEC; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #13DAEC; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #13DAEC; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #71ebf4; }
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #71e9f4; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #71ebf4; }
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #71e9f4; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #71ebf4; }
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #71e9f4; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #71ebf4; }
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #71e9f4; }
/*********************************************
* PROGRESS BAR
@@ -259,9 +296,3 @@ body {
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
/*********************************************
* SLIDE NUMBER
*********************************************/
.reveal .slide-number {
color: #13DAEC; }

View File

@@ -1,9 +1,9 @@
@import url(../../lib/font/league-gothic/league-gothic.css);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/**
* Solarized Dark theme for reveal.js.
* Author: Achim Staebler
*/
@import url(../../lib/font/league-gothic/league-gothic.css);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/**
* Solarized colors by Ethan Schoonover
*/
@@ -19,8 +19,8 @@ body {
background-color: #002b36; }
.reveal {
font-family: 'Lato', sans-serif;
font-size: 36px;
font-family: "Lato", sans-serif;
font-size: 40px;
font-weight: normal;
color: #93a1a1; }
@@ -29,17 +29,28 @@ body {
background: #d33682;
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-selection {
color: #fff;
background: #d33682;
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #eee8d5;
font-family: 'League Gothic', Impact, sans-serif;
font-family: "League Gothic", Impact, sans-serif;
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
@@ -70,17 +81,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -97,7 +113,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -107,7 +126,8 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
@@ -120,7 +140,8 @@ body {
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child, .reveal blockquote p:last-child {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -146,9 +167,7 @@ body {
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -158,12 +177,22 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table tr:last-child td {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
@@ -187,18 +216,18 @@ body {
.reveal a {
color: #268bd2;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #78bae6;
color: #78b9e6;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #1a6291; }
background: #1a6091; }
/*********************************************
* IMAGES
@@ -209,10 +238,14 @@ body {
border: 4px solid #93a1a1;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
-webkit-transition: all .15s linear;
-moz-transition: all .15s linear;
transition: all .15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
@@ -222,29 +255,33 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #268bd2; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #268bd2; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #268bd2; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #268bd2; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #78bae6; }
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #78b9e6; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #78bae6; }
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #78b9e6; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #78bae6; }
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #78b9e6; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #78bae6; }
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #78b9e6; }
/*********************************************
* PROGRESS BAR
@@ -257,9 +294,3 @@ body {
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
/*********************************************
* SLIDE NUMBER
*********************************************/
.reveal .slide-number {
color: #268bd2; }

View File

@@ -1,10 +1,10 @@
@import url(https://fonts.googleapis.com/css?family=Montserrat:700);
@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic);
/**
* Black theme for reveal.js.
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
@import url(https://fonts.googleapis.com/css?family=Montserrat:700);
@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic);
/*********************************************
* GLOBAL STYLES
*********************************************/
@@ -13,8 +13,8 @@ body {
background-color: #111; }
.reveal {
font-family: 'Open Sans', sans-serif;
font-size: 30px;
font-family: "Open Sans", sans-serif;
font-size: 40px;
font-weight: normal;
color: #eee; }
@@ -23,17 +23,28 @@ body {
background: #e7ad52;
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-selection {
color: #fff;
background: #e7ad52;
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #eee;
font-family: 'Montserrat', Impact, sans-serif;
font-family: "Montserrat", Impact, sans-serif;
font-weight: normal;
line-height: 1.2;
letter-spacing: -0.03em;
@@ -64,17 +75,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -91,7 +107,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -101,7 +120,8 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
@@ -114,7 +134,8 @@ body {
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child, .reveal blockquote p:last-child {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -140,9 +161,7 @@ body {
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -152,12 +171,22 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table tr:last-child td {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
@@ -181,9 +210,9 @@ body {
.reveal a {
color: #e7ad52;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #f3d7ac;
@@ -192,7 +221,7 @@ body {
.reveal .roll span:after {
color: #fff;
background: #d0881d; }
background: #d08a1d; }
/*********************************************
* IMAGES
@@ -203,10 +232,14 @@ body {
border: 4px solid #eee;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
-webkit-transition: all .15s linear;
-moz-transition: all .15s linear;
transition: all .15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
@@ -216,28 +249,32 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #e7ad52; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #e7ad52; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #e7ad52; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #e7ad52; }
.reveal .controls div.navigate-left.enabled:hover {
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #f3d7ac; }
.reveal .controls div.navigate-right.enabled:hover {
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #f3d7ac; }
.reveal .controls div.navigate-up.enabled:hover {
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #f3d7ac; }
.reveal .controls div.navigate-down.enabled:hover {
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #f3d7ac; }
/*********************************************
@@ -251,9 +288,3 @@ body {
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
/*********************************************
* SLIDE NUMBER
*********************************************/
.reveal .slide-number {
color: #e7ad52; }

View File

@@ -15,8 +15,8 @@ body {
background-color: #F0F1EB; }
.reveal {
font-family: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
font-size: 36px;
font-family: "Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif;
font-size: 40px;
font-weight: normal;
color: #000; }
@@ -25,17 +25,28 @@ body {
background: #26351C;
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-selection {
color: #fff;
background: #26351C;
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #383D3D;
font-family: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
font-family: "Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif;
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
@@ -66,17 +77,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -93,7 +109,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -103,7 +122,8 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
@@ -116,7 +136,8 @@ body {
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child, .reveal blockquote p:last-child {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -142,9 +163,7 @@ body {
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -154,12 +173,22 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table tr:last-child td {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
@@ -183,12 +212,12 @@ body {
.reveal a {
color: #51483D;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #8b7b69;
color: #8b7c69;
text-shadow: none;
border: none; }
@@ -205,10 +234,14 @@ body {
border: 4px solid #000;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
-webkit-transition: all .15s linear;
-moz-transition: all .15s linear;
transition: all .15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
@@ -218,29 +251,33 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #51483D; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #51483D; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #51483D; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #51483D; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #8b7b69; }
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #8b7c69; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #8b7b69; }
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #8b7c69; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #8b7b69; }
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #8b7c69; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #8b7b69; }
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #8b7c69; }
/*********************************************
* PROGRESS BAR
@@ -253,9 +290,3 @@ body {
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
/*********************************************
* SLIDE NUMBER
*********************************************/
.reveal .slide-number {
color: #51483D; }

View File

@@ -1,5 +1,3 @@
@import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/**
* A simple theme for reveal.js presentations, similar
* to the default theme. The accent color is darkblue.
@@ -7,6 +5,11 @@
* This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed.
* reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
@import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
section.has-dark-background, section.has-dark-background h1, section.has-dark-background h2, section.has-dark-background h3, section.has-dark-background h4, section.has-dark-background h5, section.has-dark-background h6 {
color: #fff; }
/*********************************************
* GLOBAL STYLES
*********************************************/
@@ -15,8 +18,8 @@ body {
background-color: #fff; }
.reveal {
font-family: 'Lato', sans-serif;
font-size: 36px;
font-family: "Lato", sans-serif;
font-size: 40px;
font-weight: normal;
color: #000; }
@@ -25,17 +28,28 @@ body {
background: rgba(0, 0, 0, 0.99);
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-selection {
color: #fff;
background: rgba(0, 0, 0, 0.99);
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #000;
font-family: 'News Cycle', Impact, sans-serif;
font-family: "News Cycle", Impact, sans-serif;
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
@@ -66,17 +80,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -93,7 +112,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -103,7 +125,8 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
@@ -116,7 +139,8 @@ body {
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child, .reveal blockquote p:last-child {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -142,9 +166,7 @@ body {
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -154,12 +176,22 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table tr:last-child td {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
@@ -183,9 +215,9 @@ body {
.reveal a {
color: #00008B;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #0000f1;
@@ -205,10 +237,14 @@ body {
border: 4px solid #000;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
-webkit-transition: all .15s linear;
-moz-transition: all .15s linear;
transition: all .15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
@@ -218,28 +254,32 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #00008B; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #00008B; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #00008B; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #00008B; }
.reveal .controls div.navigate-left.enabled:hover {
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #0000f1; }
.reveal .controls div.navigate-right.enabled:hover {
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #0000f1; }
.reveal .controls div.navigate-up.enabled:hover {
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #0000f1; }
.reveal .controls div.navigate-down.enabled:hover {
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #0000f1; }
/*********************************************
@@ -253,9 +293,3 @@ body {
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
/*********************************************
* SLIDE NUMBER
*********************************************/
.reveal .slide-number {
color: #00008B; }

View File

@@ -1,10 +1,10 @@
@import url(https://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic);
@import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700);
/**
* Sky theme for reveal.js.
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
@import url(https://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic);
@import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700);
.reveal a {
line-height: 1.3em; }
@@ -22,8 +22,8 @@ body {
background-color: #f7fbfc; }
.reveal {
font-family: 'Open Sans', sans-serif;
font-size: 36px;
font-family: "Open Sans", sans-serif;
font-size: 40px;
font-weight: normal;
color: #333; }
@@ -32,17 +32,28 @@ body {
background: #134674;
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-selection {
color: #fff;
background: #134674;
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #333;
font-family: 'Quicksand', sans-serif;
font-family: "Quicksand", sans-serif;
font-weight: normal;
line-height: 1.2;
letter-spacing: -0.08em;
@@ -73,17 +84,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -100,7 +116,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -110,7 +129,8 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
@@ -123,7 +143,8 @@ body {
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child, .reveal blockquote p:last-child {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -149,9 +170,7 @@ body {
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -161,12 +180,22 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table tr:last-child td {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
@@ -190,18 +219,18 @@ body {
.reveal a {
color: #3b759e;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #74a8cb;
color: #74a7cb;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #264d66; }
background: #264c66; }
/*********************************************
* IMAGES
@@ -212,10 +241,14 @@ body {
border: 4px solid #333;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
-webkit-transition: all .15s linear;
-moz-transition: all .15s linear;
transition: all .15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
@@ -225,29 +258,33 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #3b759e; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #3b759e; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #3b759e; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #3b759e; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #74a8cb; }
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #74a7cb; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #74a8cb; }
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #74a7cb; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #74a8cb; }
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #74a7cb; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #74a8cb; }
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #74a7cb; }
/*********************************************
* PROGRESS BAR
@@ -260,9 +297,3 @@ body {
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
/*********************************************
* SLIDE NUMBER
*********************************************/
.reveal .slide-number {
color: #3b759e; }

View File

@@ -1,9 +1,9 @@
@import url(../../lib/font/league-gothic/league-gothic.css);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/**
* Solarized Light theme for reveal.js.
* Author: Achim Staebler
*/
@import url(../../lib/font/league-gothic/league-gothic.css);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/**
* Solarized colors by Ethan Schoonover
*/
@@ -19,8 +19,8 @@ body {
background-color: #fdf6e3; }
.reveal {
font-family: 'Lato', sans-serif;
font-size: 36px;
font-family: "Lato", sans-serif;
font-size: 40px;
font-weight: normal;
color: #657b83; }
@@ -29,17 +29,28 @@ body {
background: #d33682;
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-selection {
color: #fff;
background: #d33682;
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #586e75;
font-family: 'League Gothic', Impact, sans-serif;
font-family: "League Gothic", Impact, sans-serif;
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
@@ -70,17 +81,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -97,7 +113,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -107,7 +126,8 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
@@ -120,7 +140,8 @@ body {
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child, .reveal blockquote p:last-child {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -146,9 +167,7 @@ body {
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -158,12 +177,22 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table tr:last-child td {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
@@ -187,18 +216,18 @@ body {
.reveal a {
color: #268bd2;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #78bae6;
color: #78b9e6;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #1a6291; }
background: #1a6091; }
/*********************************************
* IMAGES
@@ -209,10 +238,14 @@ body {
border: 4px solid #657b83;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
-webkit-transition: all .15s linear;
-moz-transition: all .15s linear;
transition: all .15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
@@ -222,29 +255,33 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #268bd2; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #268bd2; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #268bd2; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #268bd2; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #78bae6; }
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #78b9e6; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #78bae6; }
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #78b9e6; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #78bae6; }
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #78b9e6; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #78bae6; }
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #78b9e6; }
/*********************************************
* PROGRESS BAR
@@ -257,9 +294,3 @@ body {
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
/*********************************************
* SLIDE NUMBER
*********************************************/
.reveal .slide-number {
color: #268bd2; }

View File

@@ -1,7 +1,7 @@
/**
* Black theme for reveal.js. This is the opposite of the 'white' theme.
*
* Copyright (C) 2015 Hakim El Hattab, http://hakim.se
* By Hakim El Hattab, http://hakim.se
*/
@@ -21,7 +21,7 @@ $backgroundColor: #222;
$mainColor: #fff;
$headingColor: #fff;
$mainFontSize: 38px;
$mainFontSize: 42px;
$mainFont: 'Source Sans Pro', Helvetica, sans-serif;
$headingFont: 'Source Sans Pro', Helvetica, sans-serif;
$headingTextShadow: none;

View File

@@ -24,9 +24,10 @@ $blood: #a23;
$coal: #222;
$codeBackground: #23241f;
$backgroundColor: $coal;
// Main text
$mainFont: Ubuntu, 'sans-serif';
$mainFontSize: 36px;
$mainColor: #eee;
// Headings
@@ -45,10 +46,6 @@ $linkColorHover: lighten( $linkColor, 20% );
$selectionBackgroundColor: $blood;
$selectionColor: #fff;
// Background generator
@mixin bodyBackground() {
@include radial-gradient( $coal, lighten( $coal, 25% ) );
}
// Theme template ------------------------------
@import "../template/theme";
@@ -61,7 +58,7 @@ $selectionColor: #fff;
text-shadow: 1px 1px $coal;
}
.reveal h1,
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
@@ -70,16 +67,6 @@ $selectionColor: #fff;
font-weight: 700;
}
.reveal a,
.reveal a:hover {
text-shadow: 2px 2px 2px #000;
}
.reveal small a,
.reveal small a:hover {
text-shadow: 1px 1px 1px #000;
}
.reveal p code {
background-color: $codeBackground;
display: inline-block;

View File

@@ -27,7 +27,6 @@ $headingTextShadow: none;
$headingLetterSpacing: -0.03em;
$headingTextTransform: none;
$selectionBackgroundColor: #e7ad52;
$mainFontSize: 30px;
// Theme template ------------------------------

View File

@@ -31,6 +31,11 @@ $linkColor: #00008B;
$linkColorHover: lighten( $linkColor, 20% );
$selectionBackgroundColor: rgba(0, 0, 0, 0.99);
section.has-dark-background {
&, h1, h2, h3, h4, h5, h6 {
color: #fff;
}
}
// Theme template ------------------------------

View File

@@ -1,7 +1,7 @@
/**
* White theme for reveal.js. This is the opposite of the 'black' theme.
*
* Copyright (C) 2015 Hakim El Hattab, http://hakim.se
* By Hakim El Hattab, http://hakim.se
*/
@@ -21,7 +21,7 @@ $backgroundColor: #fff;
$mainColor: #222;
$headingColor: #222;
$mainFontSize: 38px;
$mainFontSize: 42px;
$mainFont: 'Source Sans Pro', Helvetica, sans-serif;
$headingFont: 'Source Sans Pro', Helvetica, sans-serif;
$headingTextShadow: none;

View File

@@ -6,7 +6,7 @@ $backgroundColor: #2b2b2b;
// Primary/body text
$mainFont: 'Lato', sans-serif;
$mainFontSize: 36px;
$mainFontSize: 40px;
$mainColor: #eee;
// Vertical spacing between blocks of text

View File

@@ -22,6 +22,12 @@ body {
text-shadow: none;
}
::-moz-selection {
color: $selectionColor;
background: $selectionBackgroundColor;
text-shadow: none;
}
.reveal .slides>section,
.reveal .slides>section>section {
line-height: 1.3;
@@ -178,8 +184,6 @@ body {
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC;
}
.reveal table {
@@ -199,8 +203,19 @@ body {
border-bottom: 1px solid;
}
.reveal table tr:last-child td {
border-bottom: none;
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center;
}
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right;
}
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none;
}
.reveal sup {
@@ -259,6 +274,11 @@ body {
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
}
.reveal section img.plain {
border: 0;
box-shadow: none;
}
.reveal a img {
-webkit-transition: all .15s linear;
-moz-transition: all .15s linear;
@@ -277,39 +297,39 @@ body {
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: $linkColor;
}
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: $linkColor;
}
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: $linkColor;
}
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: $linkColor;
}
.reveal .controls div.navigate-left.enabled:hover {
.reveal .controls .navigate-left.enabled:hover {
border-right-color: $linkColorHover;
}
.reveal .controls div.navigate-right.enabled:hover {
.reveal .controls .navigate-right.enabled:hover {
border-left-color: $linkColorHover;
}
.reveal .controls div.navigate-up.enabled:hover {
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: $linkColorHover;
}
.reveal .controls div.navigate-down.enabled:hover {
.reveal .controls .navigate-down.enabled:hover {
border-top-color: $linkColorHover;
}
@@ -329,11 +349,4 @@ body {
transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
}
/*********************************************
* SLIDE NUMBER
*********************************************/
.reveal .slide-number {
color: $linkColor;
}

View File

@@ -1,9 +1,9 @@
@import url(../../lib/font/source-sans-pro/source-sans-pro.css);
/**
* White theme for reveal.js. This is the opposite of the 'black' theme.
*
* Copyright (C) 2015 Hakim El Hattab, http://hakim.se
* By Hakim El Hattab, http://hakim.se
*/
@import url(../../lib/font/source-sans-pro/source-sans-pro.css);
section.has-dark-background, section.has-dark-background h1, section.has-dark-background h2, section.has-dark-background h3, section.has-dark-background h4, section.has-dark-background h5, section.has-dark-background h6 {
color: #fff; }
@@ -15,8 +15,8 @@ body {
background-color: #fff; }
.reveal {
font-family: 'Source Sans Pro', Helvetica, sans-serif;
font-size: 38px;
font-family: "Source Sans Pro", Helvetica, sans-serif;
font-size: 42px;
font-weight: normal;
color: #222; }
@@ -25,17 +25,28 @@ body {
background: #98bdef;
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-selection {
color: #fff;
background: #98bdef;
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #222;
font-family: 'Source Sans Pro', Helvetica, sans-serif;
font-family: "Source Sans Pro", Helvetica, sans-serif;
font-weight: 600;
line-height: 1.2;
letter-spacing: normal;
@@ -66,17 +77,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -93,7 +109,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -103,7 +122,8 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
@@ -116,7 +136,8 @@ body {
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child, .reveal blockquote p:last-child {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -142,9 +163,7 @@ body {
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -154,12 +173,22 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table tr:last-child td {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
@@ -183,18 +212,18 @@ body {
.reveal a {
color: #2a76dd;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #6ca2e8;
color: #6ca0e8;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #1a54a1; }
background: #1a53a1; }
/*********************************************
* IMAGES
@@ -205,10 +234,14 @@ body {
border: 4px solid #222;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
-webkit-transition: all .15s linear;
-moz-transition: all .15s linear;
transition: all .15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
@@ -218,29 +251,33 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #2a76dd; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #2a76dd; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #2a76dd; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #2a76dd; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #6ca2e8; }
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #6ca0e8; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #6ca2e8; }
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #6ca0e8; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #6ca2e8; }
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #6ca0e8; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #6ca2e8; }
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #6ca0e8; }
/*********************************************
* PROGRESS BAR
@@ -253,9 +290,3 @@ body {
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
/*********************************************
* SLIDE NUMBER
*********************************************/
.reveal .slide-number {
color: #2a76dd; }

410
demo.html Normal file
View File

@@ -0,0 +1,410 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>reveal.js The HTML Presentation Framework</title>
<meta name="description" content="A framework for easily creating beautiful presentations using HTML">
<meta name="author" content="Hakim El Hattab">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="css/reveal.css">
<link rel="stylesheet" href="css/theme/black.css" id="theme">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="lib/css/zenburn.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
<!--[if lt IE 9]>
<script src="lib/js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<div class="reveal">
<!-- Any section element inside of this container is displayed as a slide -->
<div class="slides">
<section>
<h1>Reveal.js</h1>
<h3>The HTML Presentation Framework</h3>
<p>
<small>Created by <a href="http://hakim.se">Hakim El Hattab</a> / <a href="http://twitter.com/hakimel">@hakimel</a></small>
</p>
</section>
<section>
<h2>Hello There</h2>
<p>
reveal.js enables you to create beautiful interactive slide decks using HTML. This presentation will show you examples of what it can do.
</p>
</section>
<!-- Example of nested vertical slides -->
<section>
<section>
<h2>Vertical Slides</h2>
<p>Slides can be nested inside of each other.</p>
<p>Use the <em>Space</em> key to navigate through all slides.</p>
<br>
<a href="#" class="navigate-down">
<img width="178" height="238" data-src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Down arrow">
</a>
</section>
<section>
<h2>Basement Level 1</h2>
<p>Nested slides are useful for adding additional detail underneath a high level horizontal slide.</p>
</section>
<section>
<h2>Basement Level 2</h2>
<p>That's it, time to go back up.</p>
<br>
<a href="#/2">
<img width="178" height="238" data-src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Up arrow" style="transform: rotate(180deg); -webkit-transform: rotate(180deg);">
</a>
</section>
</section>
<section>
<h2>Slides</h2>
<p>
Not a coder? Not a problem. There's a fully-featured visual editor for authoring these, try it out at <a href="http://slides.com" target="_blank">http://slides.com</a>.
</p>
</section>
<section>
<h2>Point of View</h2>
<p>
Press <strong>ESC</strong> to enter the slide overview.
</p>
<p>
Hold down alt and click on any element to zoom in on it using <a href="http://lab.hakim.se/zoom-js">zoom.js</a>. Alt + click anywhere to zoom back out.
</p>
</section>
<section>
<h2>Touch Optimized</h2>
<p>
Presentations look great on touch devices, like mobile phones and tablets. Simply swipe through your slides.
</p>
</section>
<section data-markdown>
<script type="text/template">
## Markdown support
Write content using inline or external Markdown.
Instructions and more info available in the [readme](https://github.com/hakimel/reveal.js#markdown).
```
<section data-markdown>
## Markdown support
Write content using inline or external Markdown.
Instructions and more info available in the [readme](https://github.com/hakimel/reveal.js#markdown).
</section>
```
</script>
</section>
<section>
<section id="fragments">
<h2>Fragments</h2>
<p>Hit the next arrow...</p>
<p class="fragment">... to step through ...</p>
<p><span class="fragment">... a</span> <span class="fragment">fragmented</span> <span class="fragment">slide.</span></p>
<aside class="notes">
This slide has fragments which are also stepped through in the notes window.
</aside>
</section>
<section>
<h2>Fragment Styles</h2>
<p>There's different types of fragments, like:</p>
<p class="fragment grow">grow</p>
<p class="fragment shrink">shrink</p>
<p class="fragment fade-out">fade-out</p>
<p class="fragment fade-up">fade-up (also down, left and right!)</p>
<p class="fragment current-visible">current-visible</p>
<p>Highlight <span class="fragment highlight-red">red</span> <span class="fragment highlight-blue">blue</span> <span class="fragment highlight-green">green</span></p>
</section>
</section>
<section id="transitions">
<h2>Transition Styles</h2>
<p>
You can select from different transitions, like: <br>
<a href="?transition=none#/transitions">None</a> -
<a href="?transition=fade#/transitions">Fade</a> -
<a href="?transition=slide#/transitions">Slide</a> -
<a href="?transition=convex#/transitions">Convex</a> -
<a href="?transition=concave#/transitions">Concave</a> -
<a href="?transition=zoom#/transitions">Zoom</a>
</p>
</section>
<section id="themes">
<h2>Themes</h2>
<p>
reveal.js comes with a few themes built in: <br>
<!-- Hacks to swap themes after the page has loaded. Not flexible and only intended for the reveal.js demo deck. -->
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/black.css'); return false;">Black (default)</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/white.css'); return false;">White</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/league.css'); return false;">League</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/sky.css'); return false;">Sky</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/beige.css'); return false;">Beige</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/simple.css'); return false;">Simple</a> <br>
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/serif.css'); return false;">Serif</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/blood.css'); return false;">Blood</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/night.css'); return false;">Night</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/moon.css'); return false;">Moon</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/solarized.css'); return false;">Solarized</a>
</p>
</section>
<section>
<section data-background="#dddddd">
<h2>Slide Backgrounds</h2>
<p>
Set <code>data-background="#dddddd"</code> on a slide to change the background color. All CSS color formats are supported.
</p>
<a href="#" class="navigate-down">
<img width="178" height="238" data-src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Down arrow">
</a>
</section>
<section data-background="https://s3.amazonaws.com/hakim-static/reveal-js/image-placeholder.png">
<h2>Image Backgrounds</h2>
<pre><code class="hljs">&lt;section data-background="image.png"&gt;</code></pre>
</section>
<section data-background="https://s3.amazonaws.com/hakim-static/reveal-js/image-placeholder.png" data-background-repeat="repeat" data-background-size="100px">
<h2>Tiled Backgrounds</h2>
<pre><code class="hljs" style="word-wrap: break-word;">&lt;section data-background="image.png" data-background-repeat="repeat" data-background-size="100px"&gt;</code></pre>
</section>
<section data-background-video="https://s3.amazonaws.com/static.slid.es/site/homepage/v1/homepage-video-editor.mp4,https://s3.amazonaws.com/static.slid.es/site/homepage/v1/homepage-video-editor.webm" data-background-color="#000000">
<div style="background-color: rgba(0, 0, 0, 0.9); color: #fff; padding: 20px;">
<h2>Video Backgrounds</h2>
<pre><code class="hljs" style="word-wrap: break-word;">&lt;section data-background-video="video.mp4,video.webm"&gt;</code></pre>
</div>
</section>
<section data-background="http://i.giphy.com/90F8aUepslB84.gif">
<h2>... and GIFs!</h2>
</section>
</section>
<section data-transition="slide" data-background="#4d7e65" data-background-transition="zoom">
<h2>Background Transitions</h2>
<p>
Different background transitions are available via the backgroundTransition option. This one's called "zoom".
</p>
<pre><code class="hljs">Reveal.configure({ backgroundTransition: 'zoom' })</code></pre>
</section>
<section data-transition="slide" data-background="#b5533c" data-background-transition="zoom">
<h2>Background Transitions</h2>
<p>
You can override background transitions per-slide.
</p>
<pre><code class="hljs" style="word-wrap: break-word;">&lt;section data-background-transition="zoom"&gt;</code></pre>
</section>
<section>
<h2>Pretty Code</h2>
<pre><code class="hljs" data-trim contenteditable>
function linkify( selector ) {
if( supports3DTransforms ) {
var nodes = document.querySelectorAll( selector );
for( var i = 0, len = nodes.length; i &lt; len; i++ ) {
var node = nodes[i];
if( !node.className ) {
node.className += ' roll';
}
}
}
}
</code></pre>
<p>Code syntax highlighting courtesy of <a href="http://softwaremaniacs.org/soft/highlight/en/description/">highlight.js</a>.</p>
</section>
<section>
<h2>Marvelous List</h2>
<ul>
<li>No order here</li>
<li>Or here</li>
<li>Or here</li>
<li>Or here</li>
</ul>
</section>
<section>
<h2>Fantastic Ordered List</h2>
<ol>
<li>One is smaller than...</li>
<li>Two is smaller than...</li>
<li>Three!</li>
</ol>
</section>
<section>
<h2>Tabular Tables</h2>
<table>
<thead>
<tr>
<th>Item</th>
<th>Value</th>
<th>Quantity</th>
</tr>
</thead>
<tbody>
<tr>
<td>Apples</td>
<td>$1</td>
<td>7</td>
</tr>
<tr>
<td>Lemonade</td>
<td>$2</td>
<td>18</td>
</tr>
<tr>
<td>Bread</td>
<td>$3</td>
<td>2</td>
</tr>
</tbody>
</table>
</section>
<section>
<h2>Clever Quotes</h2>
<p>
These guys come in two forms, inline: <q cite="http://searchservervirtualization.techtarget.com/definition/Our-Favorite-Technology-Quotations">
&ldquo;The nice thing about standards is that there are so many to choose from&rdquo;</q> and block:
</p>
<blockquote cite="http://searchservervirtualization.techtarget.com/definition/Our-Favorite-Technology-Quotations">
&ldquo;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.&rdquo;
</blockquote>
</section>
<section>
<h2>Intergalactic Interconnections</h2>
<p>
You can link between slides internally,
<a href="#/2/3">like this</a>.
</p>
</section>
<section>
<h2>Speaker View</h2>
<p>There's a <a href="https://github.com/hakimel/reveal.js#speaker-notes">speaker view</a>. It includes a timer, preview of the upcoming slide as well as your speaker notes.</p>
<p>Press the <em>S</em> key to try it out.</p>
<aside class="notes">
Oh hey, these are some notes. They'll be hidden in your presentation, but you can see them if you open the speaker notes window (hit 's' on your keyboard).
</aside>
</section>
<section>
<h2>Export to PDF</h2>
<p>Presentations can be <a href="https://github.com/hakimel/reveal.js#pdf-export">exported to PDF</a>, here's an example:</p>
<iframe data-src="https://www.slideshare.net/slideshow/embed_code/42840540" width="445" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:3px solid #666; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe>
</section>
<section>
<h2>Global State</h2>
<p>
Set <code>data-state="something"</code> on a slide and <code>"something"</code>
will be added as a class to the document element when the slide is open. This lets you
apply broader style changes, like switching the page background.
</p>
</section>
<section data-state="customevent">
<h2>State Events</h2>
<p>
Additionally custom events can be triggered on a per slide basis by binding to the <code>data-state</code> name.
</p>
<pre><code class="javascript" data-trim contenteditable style="font-size: 18px;">
Reveal.addEventListener( 'customevent', function() {
console.log( '"customevent" has fired' );
} );
</code></pre>
</section>
<section>
<h2>Take a Moment</h2>
<p>
Press B or . on your keyboard to pause the presentation. This is helpful when you're on stage and want to take distracting slides off the screen.
</p>
</section>
<section>
<h2>Much more</h2>
<ul>
<li>Right-to-left support</li>
<li><a href="https://github.com/hakimel/reveal.js#api">Extensive JavaScript API</a></li>
<li><a href="https://github.com/hakimel/reveal.js#auto-sliding">Auto-progression</a></li>
<li><a href="https://github.com/hakimel/reveal.js#parallax-background">Parallax backgrounds</a></li>
<li><a href="https://github.com/hakimel/reveal.js#keyboard-bindings">Custom keyboard bindings</a></li>
</ul>
</section>
<section style="text-align: left;">
<h1>THE END</h1>
<p>
- <a href="http://slides.com">Try the online editor</a> <br>
- <a href="https://github.com/hakimel/reveal.js">Source code &amp; documentation</a>
</p>
</section>
</div>
</div>
<script src="lib/js/head.min.js"></script>
<script src="js/reveal.js"></script>
<script>
// More info https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: true,
transition: 'slide', // none/fade/slide/convex/concave/zoom
// More info https://github.com/hakimel/reveal.js#dependencies
dependencies: [
{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: 'plugin/zoom-js/zoom.js', async: true },
{ src: 'plugin/notes/notes.js', async: true }
]
});
</script>
</body>
</html>

View File

@@ -1,23 +1,15 @@
<!doctype html>
<html lang="en">
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>reveal.js - The HTML Presentation Framework</title>
<meta name="description" content="A framework for easily creating beautiful presentations using HTML">
<meta name="author" content="Hakim El Hattab">
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
<title>reveal.js</title>
<link rel="stylesheet" href="css/reveal.css">
<link rel="stylesheet" href="css/theme/black.css" id="theme">
<link rel="stylesheet" href="css/theme/black.css">
<!-- Code syntax highlighting -->
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="lib/css/zenburn.css">
<!-- Printing and PDF exports -->
@@ -28,381 +20,31 @@
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
<!--[if lt IE 9]>
<script src="lib/js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<div class="reveal">
<!-- Any section element inside of this container is displayed as a slide -->
<div class="slides">
<section>
<h1>Reveal.js</h1>
<h3>The HTML Presentation Framework</h3>
<p>
<small>Created by <a href="http://hakim.se">Hakim El Hattab</a> / <a href="http://twitter.com/hakimel">@hakimel</a></small>
</p>
</section>
<section>
<h2>Hello There</h2>
<p>
reveal.js enables you to create beautiful interactive slide decks using HTML. This presentation will show you examples of what it can do.
</p>
</section>
<!-- Example of nested vertical slides -->
<section>
<section>
<h2>Vertical Slides</h2>
<p>Slides can be nested inside of each other.</p>
<p>Use the <em>Space</em> key to navigate through all slides.</p>
<br>
<a href="#" class="navigate-down">
<img width="178" height="238" data-src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Down arrow">
</a>
</section>
<section>
<h2>Basement Level 1</h2>
<p>Nested slides are useful for adding additional detail underneath a high level horizontal slide.</p>
</section>
<section>
<h2>Basement Level 2</h2>
<p>That's it, time to go back up.</p>
<br>
<a href="#/2">
<img width="178" height="238" data-src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Up arrow" style="-webkit-transform: rotate(180deg);">
</a>
</section>
</section>
<section>
<h2>Slides</h2>
<p>
Not a coder? Not a problem. There's a fully-featured visual editor for authoring these, try it out at <a href="http://slides.com" target="_blank">http://slides.com</a>.
</p>
</section>
<section>
<h2>Point of View</h2>
<p>
Press <strong>ESC</strong> to enter the slide overview.
</p>
<p>
Hold down alt and click on any element to zoom in on it using <a href="http://lab.hakim.se/zoom-js">zoom.js</a>. Alt + click anywhere to zoom back out.
</p>
</section>
<section>
<h2>Touch Optimized</h2>
<p>
Presentations look great on touch devices, like mobile phones and tablets. Simply swipe through your slides.
</p>
</section>
<section data-markdown>
<script type="text/template">
## Markdown support
Write content using inline or external Markdown.
Instructions and more info available in the [readme](https://github.com/hakimel/reveal.js#markdown).
```
<section data-markdown>
## Markdown support
Write content using inline or external Markdown.
Instructions and more info available in the [readme](https://github.com/hakimel/reveal.js#markdown).
</section>
```
</script>
</section>
<section>
<section id="fragments">
<h2>Fragments</h2>
<p>Hit the next arrow...</p>
<p class="fragment">... to step through ...</p>
<p><span class="fragment">... a</span> <span class="fragment">fragmented</span> <span class="fragment">slide.</span></p>
<aside class="notes">
This slide has fragments which are also stepped through in the notes window.
</aside>
</section>
<section>
<h2>Fragment Styles</h2>
<p>There's different types of fragments, like:</p>
<p class="fragment grow">grow</p>
<p class="fragment shrink">shrink</p>
<p class="fragment roll-in">roll-in</p>
<p class="fragment fade-out">fade-out</p>
<p class="fragment current-visible">current-visible</p>
<p class="fragment highlight-red">highlight-red</p>
<p class="fragment highlight-blue">highlight-blue</p>
</section>
</section>
<section id="transitions">
<h2>Transition Styles</h2>
<p>
You can select from different transitions, like: <br>
<a href="?transition=none#/transitions">None</a> -
<a href="?transition=fade#/transitions">Fade</a> -
<a href="?transition=slide#/transitions">Slide</a> -
<a href="?transition=convex#/transitions">Convex</a> -
<a href="?transition=concave#/transitions">Concave</a> -
<a href="?transition=zoom#/transitions">Zoom</a>
</p>
</section>
<section id="themes">
<h2>Themes</h2>
<p>
reveal.js comes with a few themes built in: <br>
<!-- Hacks to swap themes after the page has loaded. Not flexible and only intended for the reveal.js demo deck. -->
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/black.css'); return false;">Black (default)</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/white.css'); return false;">White</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/league.css'); return false;">League</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/sky.css'); return false;">Sky</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/beige.css'); return false;">Beige</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/simple.css'); return false;">Simple</a> <br>
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/serif.css'); return false;">Serif</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/night.css'); return false;">Night</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/moon.css'); return false;">Moon</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/solarized.css'); return false;">Solarized</a>
</p>
</section>
<section>
<section data-background="#dddddd">
<h2>Slide Backgrounds</h2>
<p>
Set <code>data-background="#dddddd"</code> on a slide to change the background color. All CSS color formats are supported.
</p>
<a href="#" class="navigate-down">
<img width="178" height="238" data-src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Down arrow">
</a>
</section>
<section data-background="https://s3.amazonaws.com/hakim-static/reveal-js/image-placeholder.png">
<h2>Image Backgrounds</h2>
<pre><code>&lt;section data-background="image.png"&gt;</code></pre>
</section>
<section data-background="https://s3.amazonaws.com/hakim-static/reveal-js/image-placeholder.png" data-background-repeat="repeat" data-background-size="100px">
<h2>Tiled Backgrounds</h2>
<pre><code style="word-wrap: break-word;">&lt;section data-background="image.png" data-background-repeat="repeat" data-background-size="100px"&gt;</code></pre>
</section>
<section data-background-video="https://s3.amazonaws.com/static.slid.es/site/homepage/v1/homepage-video-editor.mp4,https://s3.amazonaws.com/static.slid.es/site/homepage/v1/homepage-video-editor.webm" data-background-color="#000000">
<div style="background-color: rgba(0, 0, 0, 0.9); color: #fff; padding: 20px;">
<h2>Video Backgrounds</h2>
<pre><code style="word-wrap: break-word;">&lt;section data-background-video="video.mp4,video.webm"&gt;</code></pre>
</div>
</section>
</section>
<section data-transition="slide" data-background="#4d7e65" data-background-transition="zoom">
<h2>Background Transitions</h2>
<p>
Different background transitions are available via the backgroundTransition option. This one's called "zoom".
</p>
<pre><code>Reveal.configure({ backgroundTransition: 'zoom' })</code></pre>
</section>
<section data-transition="slide" data-background="#b5533c" data-background-transition="zoom">
<h2>Background Transitions</h2>
<p>
You can override background transitions per-slide.
</p>
<pre><code style="word-wrap: break-word;">&lt;section data-background-transition="zoom"&gt;</code></pre>
</section>
<section>
<h2>Pretty Code</h2>
<pre><code data-trim contenteditable>
function linkify( selector ) {
if( supports3DTransforms ) {
var nodes = document.querySelectorAll( selector );
for( var i = 0, len = nodes.length; i &lt; len; i++ ) {
var node = nodes[i];
if( !node.className ) {
node.className += ' roll';
}
}
}
}
</code></pre>
<p>Code syntax highlighting courtesy of <a href="http://softwaremaniacs.org/soft/highlight/en/description/">highlight.js</a>.</p>
</section>
<section>
<h2>Marvelous List</h2>
<ul>
<li>No order here</li>
<li>Or here</li>
<li>Or here</li>
<li>Or here</li>
</ul>
</section>
<section>
<h2>Fantastic Ordered List</h2>
<ol>
<li>One is smaller than...</li>
<li>Two is smaller than...</li>
<li>Three!</li>
</ol>
</section>
<section>
<h2>Tabular Tables</h2>
<table>
<thead>
<tr>
<th>Item</th>
<th>Value</th>
<th>Quantity</th>
</tr>
</thead>
<tbody>
<tr>
<td>Apples</td>
<td>$1</td>
<td>7</td>
<tr>
<tr>
<td>Lemonade</td>
<td>$2</td>
<td>18</td>
<tr>
<tr>
<td>Bread</td>
<td>$3</td>
<td>2</td>
<tr>
</tbody>
</table>
</section>
<section>
<h2>Clever Quotes</h2>
<p>
These guys come in two forms, inline: <q cite="http://searchservervirtualization.techtarget.com/definition/Our-Favorite-Technology-Quotations">
&ldquo;The nice thing about standards is that there are so many to choose from&rdquo;</q> and block:
</p>
<blockquote cite="http://searchservervirtualization.techtarget.com/definition/Our-Favorite-Technology-Quotations">
&ldquo;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.&rdquo;
</blockquote>
</section>
<section>
<h2>Intergalactic Interconnections</h2>
<p>
You can link between slides internally,
<a href="#/2/3">like this</a>.
</p>
</section>
<section>
<h2>Speaker View</h2>
<p>There's a <a href="https://github.com/hakimel/reveal.js#speaker-notes">speaker view</a>. It includes a timer, preview of the upcoming slide as well as your speaker notes.</p>
<p>Press the <em>S</em> key to try it out.</p>
<aside class="notes">
Oh hey, these are some notes. They'll be hidden in your presentation, but you can see them if you open the speaker notes window (hit 's' on your keyboard).
</aside>
</section>
<section>
<h2>Export to PDF</h2>
<p>Presentations can be <a href="https://github.com/hakimel/reveal.js#pdf-export">exported to PDF</a>, here's an example:</p>
<iframe src="//www.slideshare.net/slideshow/embed_code/42840540" width="445" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:3px solid #666; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe>
</section>
<section>
<h2>Global State</h2>
<p>
Set <code>data-state="something"</code> on a slide and <code>"something"</code>
will be added as a class to the document element when the slide is open. This lets you
apply broader style changes, like switching the page background.
</p>
</section>
<section data-state="customevent">
<h2>State Events</h2>
<p>
Additionally custom events can be triggered on a per slide basis by binding to the <code>data-state</code> name.
</p>
<pre><code class="javascript" data-trim contenteditable style="font-size: 18px;">
Reveal.addEventListener( 'customevent', function() {
console.log( '"customevent" has fired' );
} );
</code></pre>
</section>
<section>
<h2>Take a Moment</h2>
<p>
Press B or . on your keyboard to pause the presentation. This is helpful when you're on stage and want to take distracting slides off the screen.
</p>
</section>
<section>
<h2>Much more</h2>
<ul>
<li>Right-to-left support</li>
<li><a href="https://github.com/hakimel/reveal.js#api">Extensive JavaScript API</a></li>
<li><a href="https://github.com/hakimel/reveal.js#auto-sliding">Auto-progression</a></li>
<li><a href="https://github.com/hakimel/reveal.js#parallax-background">Parallax backgrounds</a></li>
<li><a href="https://github.com/hakimel/reveal.js#keyboard-bindings">Custom keyboard bindings</a></li>
</ul>
</section>
<section style="text-align: left;">
<h1>THE END</h1>
<p>
- <a href="http://slides.com">Try the online editor</a> <br>
- <a href="https://github.com/hakimel/reveal.js">Source code &amp; documentation</a>
</p>
</section>
<section>Slide 1</section>
<section>Slide 2</section>
</div>
</div>
<script src="lib/js/head.min.js"></script>
<script src="js/reveal.js"></script>
<script>
// Full list of configuration options available at:
// https://github.com/hakimel/reveal.js#configuration
// More info https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: true,
transition: 'slide', // none/fade/slide/convex/concave/zoom
// Optional reveal.js plugins
// More info https://github.com/hakimel/reveal.js#dependencies
dependencies: [
{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/highlight/highlight.js', async: true, condition: function() { return !!document.querySelector( 'pre code' ); }, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: 'plugin/zoom-js/zoom.js', async: true },
{ src: 'plugin/notes/notes.js', async: true }
{ src: 'plugin/markdown/marked.js' },
{ src: 'plugin/markdown/markdown.js' },
{ src: 'plugin/notes/notes.js', async: true },
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
]
});
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -6,112 +6,75 @@ based on dark.css by Ivan Sagalaev
*/
.hljs {
display: block; padding: 0.5em;
background: #3F3F3F;
color: #DCDCDC;
display: block;
overflow-x: auto;
padding: 0.5em;
background: #3f3f3f;
color: #dcdcdc;
}
.hljs-keyword,
.hljs-tag,
.css .hljs-class,
.css .hljs-id,
.lisp .hljs-title,
.nginx .hljs-title,
.hljs-request,
.hljs-status,
.clojure .hljs-attribute {
color: #E3CEAB;
.hljs-selector-tag,
.hljs-tag {
color: #e3ceab;
}
.django .hljs-template_tag,
.django .hljs-variable,
.django .hljs-filter .hljs-argument {
color: #DCDCDC;
.hljs-template-tag {
color: #dcdcdc;
}
.hljs-number,
.hljs-date {
color: #8CD0D3;
.hljs-number {
color: #8cd0d3;
}
.dos .hljs-envvar,
.dos .hljs-stream,
.hljs-variable,
.apache .hljs-sqbracket {
color: #EFDCBC;
.hljs-template-variable,
.hljs-attribute {
color: #efdcbc;
}
.dos .hljs-flow,
.diff .hljs-change,
.python .exception,
.python .hljs-built_in,
.hljs-literal,
.tex .hljs-special {
color: #EFEFAF;
.hljs-literal {
color: #efefaf;
}
.diff .hljs-chunk,
.hljs-subst {
color: #8F8F8F;
color: #8f8f8f;
}
.dos .hljs-keyword,
.python .hljs-decorator,
.hljs-title,
.haskell .hljs-type,
.diff .hljs-header,
.ruby .hljs-class .hljs-parent,
.apache .hljs-tag,
.nginx .hljs-built_in,
.tex .hljs-command,
.hljs-prompt {
color: #efef8f;
.hljs-name,
.hljs-selector-id,
.hljs-selector-class,
.hljs-section,
.hljs-type {
color: #efef8f;
}
.dos .hljs-winutils,
.ruby .hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.ruby .hljs-string {
color: #DCA3A3;
.hljs-symbol,
.hljs-bullet,
.hljs-link {
color: #dca3a3;
}
.diff .hljs-deletion,
.hljs-deletion,
.hljs-string,
.hljs-tag .hljs-value,
.hljs-preprocessor,
.hljs-pragma,
.hljs-built_in,
.sql .hljs-aggregate,
.hljs-javadoc,
.smalltalk .hljs-class,
.smalltalk .hljs-localvars,
.smalltalk .hljs-array,
.css .hljs-rules .hljs-value,
.hljs-attr_selector,
.hljs-pseudo,
.apache .hljs-cbracket,
.tex .hljs-formula,
.coffeescript .hljs-attribute {
color: #CC9393;
.hljs-builtin-name {
color: #cc9393;
}
.hljs-shebang,
.diff .hljs-addition,
.hljs-addition,
.hljs-comment,
.java .hljs-annotation,
.hljs-template_comment,
.hljs-pi,
.hljs-doctype {
color: #7F9F7F;
.hljs-quote,
.hljs-meta {
color: #7f9f7f;
}
.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
opacity: 0.5;
.hljs-emphasis {
font-style: italic;
}
.hljs-strong {
font-weight: bold;
}

17
lib/js/head.min.js vendored
View File

@@ -1,8 +1,9 @@
/**
Head JS The only script in your <HEAD>
Copyright Tero Piirainen (tipiirai)
License MIT / http://bit.ly/mit-license
Version 0.96
http://headjs.com
*/(function(a){function z(){d||(d=!0,s(e,function(a){p(a)}))}function y(c,d){var e=a.createElement("script");e.type="text/"+(c.type||"javascript"),e.src=c.src||c,e.async=!1,e.onreadystatechange=e.onload=function(){var a=e.readyState;!d.done&&(!a||/loaded|complete/.test(a))&&(d.done=!0,d())},(a.body||b).appendChild(e)}function x(a,b){if(a.state==o)return b&&b();if(a.state==n)return k.ready(a.name,b);if(a.state==m)return a.onpreload.push(function(){x(a,b)});a.state=n,y(a.url,function(){a.state=o,b&&b(),s(g[a.name],function(a){p(a)}),u()&&d&&s(g.ALL,function(a){p(a)})})}function w(a,b){a.state===undefined&&(a.state=m,a.onpreload=[],y({src:a.url,type:"cache"},function(){v(a)}))}function v(a){a.state=l,s(a.onpreload,function(a){a.call()})}function u(a){a=a||h;var b;for(var c in a){if(a.hasOwnProperty(c)&&a[c].state!=o)return!1;b=!0}return b}function t(a){return Object.prototype.toString.call(a)=="[object Function]"}function s(a,b){if(!!a){typeof a=="object"&&(a=[].slice.call(a));for(var c=0;c<a.length;c++)b.call(a,a[c],c)}}function r(a){var b;if(typeof a=="object")for(var c in a)a[c]&&(b={name:c,url:a[c]});else b={name:q(a),url:a};var d=h[b.name];if(d&&d.url===b.url)return d;h[b.name]=b;return b}function q(a){var b=a.split("/"),c=b[b.length-1],d=c.indexOf("?");return d!=-1?c.substring(0,d):c}function p(a){a._done||(a(),a._done=1)}var b=a.documentElement,c,d,e=[],f=[],g={},h={},i=a.createElement("script").async===!0||"MozAppearance"in a.documentElement.style||window.opera,j=window.head_conf&&head_conf.head||"head",k=window[j]=window[j]||function(){k.ready.apply(null,arguments)},l=1,m=2,n=3,o=4;i?k.js=function(){var a=arguments,b=a[a.length-1],c={};t(b)||(b=null),s(a,function(d,e){d!=b&&(d=r(d),c[d.name]=d,x(d,b&&e==a.length-2?function(){u(c)&&p(b)}:null))});return k}:k.js=function(){var a=arguments,b=[].slice.call(a,1),d=b[0];if(!c){f.push(function(){k.js.apply(null,a)});return k}d?(s(b,function(a){t(a)||w(r(a))}),x(r(a[0]),t(d)?d:function(){k.js.apply(null,b)})):x(r(a[0]));return k},k.ready=function(b,c){if(b==a){d?p(c):e.push(c);return k}t(b)&&(c=b,b="ALL");if(typeof b!="string"||!t(c))return k;var f=h[b];if(f&&f.state==o||b=="ALL"&&u()&&d){p(c);return k}var i=g[b];i?i.push(c):i=g[b]=[c];return k},k.ready(a,function(){u()&&s(g.ALL,function(a){p(a)}),k.feature&&k.feature("domloaded",!0)});if(window.addEventListener)a.addEventListener("DOMContentLoaded",z,!1),window.addEventListener("load",z,!1);else if(window.attachEvent){a.attachEvent("onreadystatechange",function(){a.readyState==="complete"&&z()});var A=1;try{A=window.frameElement}catch(B){}!A&&b.doScroll&&function(){try{b.doScroll("left"),z()}catch(a){setTimeout(arguments.callee,1);return}}(),window.attachEvent("onload",z)}!a.readyState&&a.addEventListener&&(a.readyState="loading",a.addEventListener("DOMContentLoaded",handler=function(){a.removeEventListener("DOMContentLoaded",handler,!1),a.readyState="complete"},!1)),setTimeout(function(){c=!0,s(f,function(a){a()})},300)})(document)
/*! head.core - v1.0.2 */
(function(n,t){"use strict";function r(n){a[a.length]=n}function k(n){var t=new RegExp(" ?\\b"+n+"\\b");c.className=c.className.replace(t,"")}function p(n,t){for(var i=0,r=n.length;i<r;i++)t.call(n,n[i],i)}function tt(){var t,e,f,o;c.className=c.className.replace(/ (w-|eq-|gt-|gte-|lt-|lte-|portrait|no-portrait|landscape|no-landscape)\d+/g,"");t=n.innerWidth||c.clientWidth;e=n.outerWidth||n.screen.width;u.screen.innerWidth=t;u.screen.outerWidth=e;r("w-"+t);p(i.screens,function(n){t>n?(i.screensCss.gt&&r("gt-"+n),i.screensCss.gte&&r("gte-"+n)):t<n?(i.screensCss.lt&&r("lt-"+n),i.screensCss.lte&&r("lte-"+n)):t===n&&(i.screensCss.lte&&r("lte-"+n),i.screensCss.eq&&r("e-q"+n),i.screensCss.gte&&r("gte-"+n))});f=n.innerHeight||c.clientHeight;o=n.outerHeight||n.screen.height;u.screen.innerHeight=f;u.screen.outerHeight=o;u.feature("portrait",f>t);u.feature("landscape",f<t)}function it(){n.clearTimeout(b);b=n.setTimeout(tt,50)}var y=n.document,rt=n.navigator,ut=n.location,c=y.documentElement,a=[],i={screens:[240,320,480,640,768,800,1024,1280,1440,1680,1920],screensCss:{gt:!0,gte:!1,lt:!0,lte:!1,eq:!1},browsers:[{ie:{min:6,max:11}}],browserCss:{gt:!0,gte:!1,lt:!0,lte:!1,eq:!0},html5:!0,page:"-page",section:"-section",head:"head"},v,u,s,w,o,h,l,d,f,g,nt,e,b;if(n.head_conf)for(v in n.head_conf)n.head_conf[v]!==t&&(i[v]=n.head_conf[v]);u=n[i.head]=function(){u.ready.apply(null,arguments)};u.feature=function(n,t,i){return n?(Object.prototype.toString.call(t)==="[object Function]"&&(t=t.call()),r((t?"":"no-")+n),u[n]=!!t,i||(k("no-"+n),k(n),u.feature()),u):(c.className+=" "+a.join(" "),a=[],u)};u.feature("js",!0);s=rt.userAgent.toLowerCase();w=/mobile|android|kindle|silk|midp|phone|(windows .+arm|touch)/.test(s);u.feature("mobile",w,!0);u.feature("desktop",!w,!0);s=/(chrome|firefox)[ \/]([\w.]+)/.exec(s)||/(iphone|ipad|ipod)(?:.*version)?[ \/]([\w.]+)/.exec(s)||/(android)(?:.*version)?[ \/]([\w.]+)/.exec(s)||/(webkit|opera)(?:.*version)?[ \/]([\w.]+)/.exec(s)||/(msie) ([\w.]+)/.exec(s)||/(trident).+rv:(\w.)+/.exec(s)||[];o=s[1];h=parseFloat(s[2]);switch(o){case"msie":case"trident":o="ie";h=y.documentMode||h;break;case"firefox":o="ff";break;case"ipod":case"ipad":case"iphone":o="ios";break;case"webkit":o="safari"}for(u.browser={name:o,version:h},u.browser[o]=!0,l=0,d=i.browsers.length;l<d;l++)for(f in i.browsers[l])if(o===f)for(r(f),g=i.browsers[l][f].min,nt=i.browsers[l][f].max,e=g;e<=nt;e++)h>e?(i.browserCss.gt&&r("gt-"+f+e),i.browserCss.gte&&r("gte-"+f+e)):h<e?(i.browserCss.lt&&r("lt-"+f+e),i.browserCss.lte&&r("lte-"+f+e)):h===e&&(i.browserCss.lte&&r("lte-"+f+e),i.browserCss.eq&&r("eq-"+f+e),i.browserCss.gte&&r("gte-"+f+e));else r("no-"+f);r(o);r(o+parseInt(h,10));i.html5&&o==="ie"&&h<9&&p("abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|progress|section|summary|time|video".split("|"),function(n){y.createElement(n)});p(ut.pathname.split("/"),function(n,u){if(this.length>2&&this[u+1]!==t)u&&r(this.slice(u,u+1).join("-").toLowerCase()+i.section);else{var f=n||"index",e=f.indexOf(".");e>0&&(f=f.substring(0,e));c.id=f.toLowerCase()+i.page;u||r("root"+i.section)}});u.screen={height:n.screen.height,width:n.screen.width};tt();b=0;n.addEventListener?n.addEventListener("resize",it,!1):n.attachEvent("onresize",it)})(window);
/*! head.css3 - v1.0.0 */
(function(n,t){"use strict";function a(n){for(var r in n)if(i[n[r]]!==t)return!0;return!1}function r(n){var t=n.charAt(0).toUpperCase()+n.substr(1),i=(n+" "+c.join(t+" ")+t).split(" ");return!!a(i)}var h=n.document,o=h.createElement("i"),i=o.style,s=" -o- -moz- -ms- -webkit- -khtml- ".split(" "),c="Webkit Moz O ms Khtml".split(" "),l=n.head_conf&&n.head_conf.head||"head",u=n[l],f={gradient:function(){var n="background-image:";return i.cssText=(n+s.join("gradient(linear,left top,right bottom,from(#9f9),to(#fff));"+n)+s.join("linear-gradient(left top,#eee,#fff);"+n)).slice(0,-n.length),!!i.backgroundImage},rgba:function(){return i.cssText="background-color:rgba(0,0,0,0.5)",!!i.backgroundColor},opacity:function(){return o.style.opacity===""},textshadow:function(){return i.textShadow===""},multiplebgs:function(){i.cssText="background:url(https://),url(https://),red url(https://)";var n=(i.background||"").match(/url/g);return Object.prototype.toString.call(n)==="[object Array]"&&n.length===3},boxshadow:function(){return r("boxShadow")},borderimage:function(){return r("borderImage")},borderradius:function(){return r("borderRadius")},cssreflections:function(){return r("boxReflect")},csstransforms:function(){return r("transform")},csstransitions:function(){return r("transition")},touch:function(){return"ontouchstart"in n},retina:function(){return n.devicePixelRatio>1},fontface:function(){var t=u.browser.name,n=u.browser.version;switch(t){case"ie":return n>=9;case"chrome":return n>=13;case"ff":return n>=6;case"ios":return n>=5;case"android":return!1;case"webkit":return n>=5.1;case"opera":return n>=10;default:return!1}}};for(var e in f)f[e]&&u.feature(e,f[e].call(),!0);u.feature()})(window);
/*! head.load - v1.0.3 */
(function(n,t){"use strict";function w(){}function u(n,t){if(n){typeof n=="object"&&(n=[].slice.call(n));for(var i=0,r=n.length;i<r;i++)t.call(n,n[i],i)}}function it(n,i){var r=Object.prototype.toString.call(i).slice(8,-1);return i!==t&&i!==null&&r===n}function s(n){return it("Function",n)}function a(n){return it("Array",n)}function et(n){var i=n.split("/"),t=i[i.length-1],r=t.indexOf("?");return r!==-1?t.substring(0,r):t}function f(n){(n=n||w,n._done)||(n(),n._done=1)}function ot(n,t,r,u){var f=typeof n=="object"?n:{test:n,success:!t?!1:a(t)?t:[t],failure:!r?!1:a(r)?r:[r],callback:u||w},e=!!f.test;return e&&!!f.success?(f.success.push(f.callback),i.load.apply(null,f.success)):e||!f.failure?u():(f.failure.push(f.callback),i.load.apply(null,f.failure)),i}function v(n){var t={},i,r;if(typeof n=="object")for(i in n)!n[i]||(t={name:i,url:n[i]});else t={name:et(n),url:n};return(r=c[t.name],r&&r.url===t.url)?r:(c[t.name]=t,t)}function y(n){n=n||c;for(var t in n)if(n.hasOwnProperty(t)&&n[t].state!==l)return!1;return!0}function st(n){n.state=ft;u(n.onpreload,function(n){n.call()})}function ht(n){n.state===t&&(n.state=nt,n.onpreload=[],rt({url:n.url,type:"cache"},function(){st(n)}))}function ct(){var n=arguments,t=n[n.length-1],r=[].slice.call(n,1),f=r[0];return(s(t)||(t=null),a(n[0]))?(n[0].push(t),i.load.apply(null,n[0]),i):(f?(u(r,function(n){s(n)||!n||ht(v(n))}),b(v(n[0]),s(f)?f:function(){i.load.apply(null,r)})):b(v(n[0])),i)}function lt(){var n=arguments,t=n[n.length-1],r={};return(s(t)||(t=null),a(n[0]))?(n[0].push(t),i.load.apply(null,n[0]),i):(u(n,function(n){n!==t&&(n=v(n),r[n.name]=n)}),u(n,function(n){n!==t&&(n=v(n),b(n,function(){y(r)&&f(t)}))}),i)}function b(n,t){if(t=t||w,n.state===l){t();return}if(n.state===tt){i.ready(n.name,t);return}if(n.state===nt){n.onpreload.push(function(){b(n,t)});return}n.state=tt;rt(n,function(){n.state=l;t();u(h[n.name],function(n){f(n)});o&&y()&&u(h.ALL,function(n){f(n)})})}function at(n){n=n||"";var t=n.split("?")[0].split(".");return t[t.length-1].toLowerCase()}function rt(t,i){function e(t){t=t||n.event;u.onload=u.onreadystatechange=u.onerror=null;i()}function o(f){f=f||n.event;(f.type==="load"||/loaded|complete/.test(u.readyState)&&(!r.documentMode||r.documentMode<9))&&(n.clearTimeout(t.errorTimeout),n.clearTimeout(t.cssTimeout),u.onload=u.onreadystatechange=u.onerror=null,i())}function s(){if(t.state!==l&&t.cssRetries<=20){for(var i=0,f=r.styleSheets.length;i<f;i++)if(r.styleSheets[i].href===u.href){o({type:"load"});return}t.cssRetries++;t.cssTimeout=n.setTimeout(s,250)}}var u,h,f;i=i||w;h=at(t.url);h==="css"?(u=r.createElement("link"),u.type="text/"+(t.type||"css"),u.rel="stylesheet",u.href=t.url,t.cssRetries=0,t.cssTimeout=n.setTimeout(s,500)):(u=r.createElement("script"),u.type="text/"+(t.type||"javascript"),u.src=t.url);u.onload=u.onreadystatechange=o;u.onerror=e;u.async=!1;u.defer=!1;t.errorTimeout=n.setTimeout(function(){e({type:"timeout"})},7e3);f=r.head||r.getElementsByTagName("head")[0];f.insertBefore(u,f.lastChild)}function vt(){for(var t,u=r.getElementsByTagName("script"),n=0,f=u.length;n<f;n++)if(t=u[n].getAttribute("data-headjs-load"),!!t){i.load(t);return}}function yt(n,t){var v,p,e;return n===r?(o?f(t):d.push(t),i):(s(n)&&(t=n,n="ALL"),a(n))?(v={},u(n,function(n){v[n]=c[n];i.ready(n,function(){y(v)&&f(t)})}),i):typeof n!="string"||!s(t)?i:(p=c[n],p&&p.state===l||n==="ALL"&&y()&&o)?(f(t),i):(e=h[n],e?e.push(t):e=h[n]=[t],i)}function e(){if(!r.body){n.clearTimeout(i.readyTimeout);i.readyTimeout=n.setTimeout(e,50);return}o||(o=!0,vt(),u(d,function(n){f(n)}))}function k(){r.addEventListener?(r.removeEventListener("DOMContentLoaded",k,!1),e()):r.readyState==="complete"&&(r.detachEvent("onreadystatechange",k),e())}var r=n.document,d=[],h={},c={},ut="async"in r.createElement("script")||"MozAppearance"in r.documentElement.style||n.opera,o,g=n.head_conf&&n.head_conf.head||"head",i=n[g]=n[g]||function(){i.ready.apply(null,arguments)},nt=1,ft=2,tt=3,l=4,p;if(r.readyState==="complete")e();else if(r.addEventListener)r.addEventListener("DOMContentLoaded",k,!1),n.addEventListener("load",e,!1);else{r.attachEvent("onreadystatechange",k);n.attachEvent("onload",e);p=!1;try{p=!n.frameElement&&r.documentElement}catch(wt){}p&&p.doScroll&&function pt(){if(!o){try{p.doScroll("left")}catch(t){n.clearTimeout(i.readyTimeout);i.readyTimeout=n.setTimeout(pt,50);return}e()}}()}i.load=i.js=ut?lt:ct;i.test=ot;i.ready=yt;i.ready(r,function(){y()&&u(h.ALL,function(n){f(n)});i.feature&&i.feature("domloaded",!0)})})(window);
/*
//# sourceMappingURL=head.min.js.map
*/

View File

@@ -1,12 +1,13 @@
{
"name": "reveal.js",
"version": "3.0.0",
"version": "3.4.1",
"description": "The HTML Presentation Framework",
"homepage": "http://lab.hakim.se/reveal-js",
"subdomain": "revealjs",
"main": "js/reveal.js",
"scripts": {
"test": "grunt test",
"start": ""
"start": "grunt serve"
},
"author": {
"name": "Hakim El Hattab",
@@ -18,31 +19,27 @@
"url": "git://github.com/hakimel/reveal.js.git"
},
"engines": {
"node": "~0.10.0"
"node": ">=4.0.0"
},
"dependencies": {
"underscore": "~1.5.1",
"express": "~2.5.9",
"mustache": "~0.7.2",
"socket.io": "~0.9.16"
"express": "~4.14.0",
"grunt-cli": "~1.2.0",
"mustache": "~2.2.1",
"socket.io": "^1.4.8"
},
"devDependencies": {
"grunt-contrib-qunit": "~0.5.2",
"grunt-contrib-jshint": "~0.6.4",
"grunt-contrib-cssmin": "~0.4.1",
"grunt-contrib-uglify": "~0.2.4",
"grunt-contrib-watch": "~0.5.3",
"grunt-sass": "~0.14.0",
"grunt-contrib-connect": "~0.8.0",
"grunt-autoprefixer": "~1.0.1",
"grunt-zip": "~0.7.0",
"grunt": "~0.4.0",
"node-sass": "~0.9.3"
"grunt": "~1.0.1",
"grunt-autoprefixer": "~3.0.3",
"grunt-contrib-connect": "~0.11.2",
"grunt-contrib-cssmin": "~0.14.0",
"grunt-contrib-jshint": "~0.11.3",
"grunt-contrib-qunit": "~1.2.0",
"grunt-contrib-uglify": "~0.9.2",
"grunt-contrib-watch": "~1.0.0",
"grunt-sass": "~1.2.0",
"grunt-retire": "~0.3.10",
"grunt-zip": "~0.17.1",
"node-sass": "~3.13.0"
},
"licenses": [
{
"type": "MIT",
"url": "https://github.com/hakimel/reveal.js/blob/master/LICENSE"
}
]
"license": "MIT"
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -7,7 +7,7 @@
<title>reveal.js - Markdown Demo</title>
<link rel="stylesheet" href="../../css/reveal.css">
<link rel="stylesheet" href="../../css/theme/default.css" id="theme">
<link rel="stylesheet" href="../../css/theme/white.css" id="theme">
<link rel="stylesheet" href="../../lib/css/zenburn.css">
</head>

View File

@@ -4,33 +4,26 @@
* of external markdown documents.
*/
(function( root, factory ) {
if( typeof exports === 'object' ) {
if (typeof define === 'function' && define.amd) {
root.marked = require( './marked' );
root.RevealMarkdown = factory( root.marked );
root.RevealMarkdown.initialize();
} else if( typeof exports === 'object' ) {
module.exports = factory( require( './marked' ) );
}
else {
} else {
// Browser globals (root is window)
root.RevealMarkdown = factory( root.marked );
root.RevealMarkdown.initialize();
}
}( this, function( marked ) {
if( typeof marked === 'undefined' ) {
throw 'The reveal.js Markdown plugin requires marked to be loaded';
}
if( typeof hljs !== 'undefined' ) {
marked.setOptions({
highlight: function( lang, code ) {
return hljs.highlightAuto( lang, code ).value;
}
});
}
var DEFAULT_SLIDE_SEPARATOR = '^\n---\n$',
var DEFAULT_SLIDE_SEPARATOR = '^\r?\n---\r?\n$',
DEFAULT_NOTES_SEPARATOR = 'note:',
DEFAULT_ELEMENT_ATTRIBUTES_SEPARATOR = '\\\.element\\\s*?(.+?)$',
DEFAULT_SLIDE_ATTRIBUTES_SEPARATOR = '\\\.slide:\\\s*?(\\\S.+?)$';
var SCRIPT_END_PLACEHOLDER = '__SCRIPT_END__';
/**
* Retrieves the markdown contents of a slide section
@@ -43,6 +36,9 @@
// strip leading whitespace so it isn't evaluated as code
var text = ( template || section ).textContent;
// restore script end tags
text = text.replace( new RegExp( SCRIPT_END_PLACEHOLDER, 'g' ), '</script>' );
var leadingWs = text.match( /^\n?(\s*)/ )[1].length,
leadingTabs = text.match( /^\n?(\t*)/ )[1].length;
@@ -50,7 +46,7 @@
text = text.replace( new RegExp('\\n?\\t{' + leadingTabs + '}','g'), '\n' );
}
else if( leadingWs > 1 ) {
text = text.replace( new RegExp('\\n? {' + leadingWs + '}'), '\n' );
text = text.replace( new RegExp('\\n? {' + leadingWs + '}', 'g'), '\n' );
}
return text;
@@ -76,7 +72,7 @@
if( /data\-(markdown|separator|vertical|notes)/gi.test( name ) ) continue;
if( value ) {
result.push( name + '=' + value );
result.push( name + '="' + value + '"' );
}
else {
result.push( name );
@@ -112,9 +108,13 @@
var notesMatch = content.split( new RegExp( options.notesSeparator, 'mgi' ) );
if( notesMatch.length === 2 ) {
content = notesMatch[0] + '<aside class="notes" data-markdown>' + notesMatch[1].trim() + '</aside>';
content = notesMatch[0] + '<aside class="notes">' + marked(notesMatch[1].trim()) + '</aside>';
}
// prevent script end tags in the content from interfering
// with parsing
content = content.replace( /<\/script>/g, SCRIPT_END_PLACEHOLDER );
return '<script type="text/template">' + content + '</script>';
}
@@ -177,7 +177,7 @@
markdownSections += '<section '+ options.attributes +'>';
sectionStack[i].forEach( function( child ) {
markdownSections += '<section data-markdown>' + createMarkdownSlide( child, options ) + '</section>';
markdownSections += '<section data-markdown>' + createMarkdownSlide( child, options ) + '</section>';
} );
markdownSections += '</section>';
@@ -379,6 +379,24 @@
return {
initialize: function() {
if( typeof marked === 'undefined' ) {
throw 'The reveal.js Markdown plugin requires marked to be loaded';
}
if( typeof hljs !== 'undefined' ) {
marked.setOptions({
highlight: function( code, lang ) {
return hljs.highlightAuto( code, [lang] ).value;
}
});
}
var options = Reveal.getConfig().markdown;
if ( options ) {
marked.setOptions( options );
}
processSlides();
convertSlides();
},

File diff suppressed because one or more lines are too long

View File

@@ -7,14 +7,17 @@
var RevealMath = window.RevealMath || (function(){
var options = Reveal.getConfig().math || {};
options.mathjax = options.mathjax || 'http://cdn.mathjax.org/mathjax/latest/MathJax.js';
options.mathjax = options.mathjax || 'https://cdn.mathjax.org/mathjax/latest/MathJax.js';
options.config = options.config || 'TeX-AMS_HTML-full';
loadScript( options.mathjax + '?config=' + options.config, function() {
MathJax.Hub.Config({
messageStyle: 'none',
tex2jax: { inlineMath: [['$','$'],['\\(','\\)']] },
tex2jax: {
inlineMath: [['$','$'],['\\(','\\)']] ,
skipTags: ['script','noscript','style','textarea','pre']
},
skipStartupTypeset: true
});

View File

@@ -8,6 +8,6 @@
if (data.socketId !== socketId) { return; }
if( window.location.host === 'localhost:1947' ) return;
Reveal.slide(data.indexh, data.indexv, data.indexf, 'remote');
Reveal.setState(data.state);
});
}());

View File

@@ -1,37 +1,45 @@
var http = require('http');
var express = require('express');
var fs = require('fs');
var io = require('socket.io');
var crypto = require('crypto');
var app = express.createServer();
var staticDir = express.static;
var app = express();
var staticDir = express.static;
var server = http.createServer(app);
io = io.listen(app);
io = io(server);
var opts = {
port: 1948,
port: process.env.PORT || 1948,
baseDir : __dirname + '/../../'
};
io.sockets.on('connection', function(socket) {
socket.on('slidechanged', function(slideData) {
if (typeof slideData.secret == 'undefined' || slideData.secret == null || slideData.secret === '') return;
if (createHash(slideData.secret) === slideData.socketId) {
slideData.secret = null;
socket.broadcast.emit(slideData.socketId, slideData);
io.on( 'connection', function( socket ) {
socket.on('multiplex-statechanged', function(data) {
if (typeof data.secret == 'undefined' || data.secret == null || data.secret === '') return;
if (createHash(data.secret) === data.socketId) {
data.secret = null;
socket.broadcast.emit(data.socketId, data);
};
});
});
app.configure(function() {
[ 'css', 'js', 'plugin', 'lib' ].forEach(function(dir) {
app.use('/' + dir, staticDir(opts.baseDir + dir));
});
[ 'css', 'js', 'plugin', 'lib' ].forEach(function(dir) {
app.use('/' + dir, staticDir(opts.baseDir + dir));
});
app.get("/", function(req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
fs.createReadStream(opts.baseDir + '/index.html').pipe(res);
var stream = fs.createReadStream(opts.baseDir + '/index.html');
stream.on('error', function( error ) {
res.write('<style>body{font-family: sans-serif;}</style><h2>reveal.js multiplex server.</h2><a href="/token">Generate token</a>');
res.end();
});
stream.on('readable', function() {
stream.pipe(res);
});
});
app.get("/token", function(req,res) {
@@ -47,7 +55,7 @@ var createHash = function(secret) {
};
// Actually listen
app.listen(opts.port || null);
server.listen( opts.port || null );
var brown = '\033[33m',
green = '\033[32m',

View File

@@ -1,51 +1,31 @@
(function() {
// Don't emit events from inside of notes windows
if ( window.location.search.match( /receiver/gi ) ) { return; }
var multiplex = Reveal.getConfig().multiplex;
var socket = io.connect(multiplex.url);
var socket = io.connect( multiplex.url );
var notify = function( slideElement, indexh, indexv, origin ) {
if( typeof origin === 'undefined' && origin !== 'remote' ) {
var nextindexh;
var nextindexv;
function post() {
var fragmentindex = Reveal.getIndices().f;
if (typeof fragmentindex == 'undefined') {
fragmentindex = 0;
}
var messageData = {
state: Reveal.getState(),
secret: multiplex.secret,
socketId: multiplex.id
};
if (slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION') {
nextindexh = indexh;
nextindexv = indexv + 1;
} else {
nextindexh = indexh + 1;
nextindexv = 0;
}
socket.emit( 'multiplex-statechanged', messageData );
var slideData = {
indexh : indexh,
indexv : indexv,
indexf : fragmentindex,
nextindexh : nextindexh,
nextindexv : nextindexv,
secret: multiplex.secret,
socketId : multiplex.id
};
socket.emit('slidechanged', slideData);
}
}
Reveal.addEventListener( 'slidechanged', function( event ) {
notify( event.currentSlide, event.indexh, event.indexv, event.origin );
} );
var fragmentNotify = function( event ) {
notify( Reveal.getCurrentSlide(), Reveal.getIndices().h, Reveal.getIndices().v, event.origin );
};
Reveal.addEventListener( 'fragmentshown', fragmentNotify );
Reveal.addEventListener( 'fragmenthidden', fragmentNotify );
// Monitor events that trigger a change in state
Reveal.addEventListener( 'slidechanged', post );
Reveal.addEventListener( 'fragmentshown', post );
Reveal.addEventListener( 'fragmenthidden', post );
Reveal.addEventListener( 'overviewhidden', post );
Reveal.addEventListener( 'overviewshown', post );
Reveal.addEventListener( 'paused', post );
Reveal.addEventListener( 'resumed', post );
}());

View File

@@ -0,0 +1,19 @@
{
"name": "reveal-js-multiplex",
"version": "1.0.0",
"description": "reveal.js multiplex server",
"homepage": "http://lab.hakim.se/reveal-js",
"scripts": {
"start": "node index.js"
},
"engines": {
"node": "~4.1.1"
},
"dependencies": {
"express": "~4.13.3",
"grunt-cli": "~0.1.13",
"mustache": "~2.2.1",
"socket.io": "~1.3.7"
},
"license": "MIT"
}

View File

@@ -41,10 +41,15 @@
}
// When a new notes window connects, post our current state
socket.on( 'connect', function( data ) {
socket.on( 'new-subscriber', function( data ) {
post();
} );
// When the state changes from inside of the speaker view
socket.on( 'statechanged-speaker', function( data ) {
Reveal.setState( data.state );
} );
// Monitor events that trigger a change in state
Reveal.addEventListener( 'slidechanged', post );
Reveal.addEventListener( 'fragmentshown', post );

View File

@@ -1,37 +1,40 @@
var http = require('http');
var express = require('express');
var fs = require('fs');
var io = require('socket.io');
var _ = require('underscore');
var Mustache = require('mustache');
var app = express.createServer();
var app = express();
var staticDir = express.static;
var server = http.createServer(app);
io = io.listen(app);
io = io(server);
var opts = {
port : 1947,
baseDir : __dirname + '/../../'
};
io.sockets.on( 'connection', function( socket ) {
io.on( 'connection', function( socket ) {
socket.on( 'connect', function( data ) {
socket.broadcast.emit( 'connect', data );
socket.on( 'new-subscriber', function( data ) {
socket.broadcast.emit( 'new-subscriber', data );
});
socket.on( 'statechanged', function( data ) {
delete data.state.overview;
socket.broadcast.emit( 'statechanged', data );
});
socket.on( 'statechanged-speaker', function( data ) {
delete data.state.overview;
socket.broadcast.emit( 'statechanged-speaker', data );
});
});
app.configure( function() {
[ 'css', 'js', 'images', 'plugin', 'lib' ].forEach( function( dir ) {
app.use( '/' + dir, staticDir( opts.baseDir + dir ) );
});
[ 'css', 'js', 'images', 'plugin', 'lib' ].forEach( function( dir ) {
app.use( '/' + dir, staticDir( opts.baseDir + dir ) );
});
app.get('/', function( req, res ) {
@@ -52,7 +55,7 @@ app.get( '/notes/:socketId', function( req, res ) {
});
// Actually listen
app.listen( opts.port || null );
server.listen( opts.port || null );
var brown = '\033[33m',
green = '\033[32m',
@@ -62,5 +65,5 @@ var slidesLocation = 'http://localhost' + ( opts.port ? ( ':' + opts.port ) : ''
console.log( brown + 'reveal.js - Speaker Notes' + reset );
console.log( '1. Open the slides at ' + green + slidesLocation + reset );
console.log( '2. Click on the link your JS console to go to the notes page' );
console.log( '2. Click on the link in your JS console to go to the notes page' );
console.log( '3. Advance through your slides and your notes will advance automatically' );

View File

@@ -8,6 +8,7 @@
<style>
body {
font-family: Helvetica;
font-size: 18px;
}
#current-slide,
@@ -30,15 +31,26 @@
position: absolute;
top: 10px;
left: 10px;
font-weight: bold;
font-size: 14px;
z-index: 2;
color: rgba( 255, 255, 255, 0.9 );
}
.overlay-element {
height: 34px;
line-height: 34px;
padding: 0 10px;
text-shadow: none;
background: rgba( 220, 220, 220, 0.8 );
color: #222;
font-size: 14px;
}
.overlay-element.interactive:hover {
background: rgba( 220, 220, 220, 1 );
}
#current-slide {
position: absolute;
width: 65%;
width: 60%;
height: 100%;
top: 0;
left: 0;
@@ -47,19 +59,20 @@
#upcoming-slide {
position: absolute;
width: 35%;
width: 40%;
height: 40%;
right: 0;
top: 0;
}
/* Speaker controls */
#speaker-controls {
position: absolute;
top: 40%;
right: 0;
width: 35%;
width: 40%;
height: 60%;
overflow: auto;
font-size: 18px;
}
@@ -124,26 +137,108 @@
font-size: 1.2em;
}
/* Layout selector */
#speaker-layout {
position: absolute;
top: 10px;
right: 10px;
color: #222;
z-index: 10;
}
#speaker-layout select {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
border: 0;
box-shadow: 0;
cursor: pointer;
opacity: 0;
font-size: 1em;
background-color: transparent;
-moz-appearance: none;
-webkit-appearance: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
#speaker-layout select:focus {
outline: none;
box-shadow: none;
}
.clear {
clear: both;
}
@media screen and (max-width: 1080px) {
#speaker-controls {
font-size: 16px;
}
/* Speaker layout: Wide */
body[data-speaker-layout="wide"] #current-slide,
body[data-speaker-layout="wide"] #upcoming-slide {
width: 50%;
height: 45%;
padding: 6px;
}
@media screen and (max-width: 900px) {
#speaker-controls {
font-size: 14px;
}
body[data-speaker-layout="wide"] #current-slide {
top: 0;
left: 0;
}
@media screen and (max-width: 800px) {
#speaker-controls {
font-size: 12px;
}
body[data-speaker-layout="wide"] #upcoming-slide {
top: 0;
left: 50%;
}
body[data-speaker-layout="wide"] #speaker-controls {
top: 45%;
left: 0;
width: 100%;
height: 50%;
font-size: 1.25em;
}
/* Speaker layout: Tall */
body[data-speaker-layout="tall"] #current-slide,
body[data-speaker-layout="tall"] #upcoming-slide {
width: 45%;
height: 50%;
padding: 6px;
}
body[data-speaker-layout="tall"] #current-slide {
top: 0;
left: 0;
}
body[data-speaker-layout="tall"] #upcoming-slide {
top: 50%;
left: 0;
}
body[data-speaker-layout="tall"] #speaker-controls {
padding-top: 40px;
top: 0;
left: 45%;
width: 55%;
height: 100%;
font-size: 1.25em;
}
/* Speaker layout: Notes only */
body[data-speaker-layout="notes-only"] #current-slide,
body[data-speaker-layout="notes-only"] #upcoming-slide {
display: none;
}
body[data-speaker-layout="notes-only"] #speaker-controls {
padding-top: 40px;
top: 0;
left: 0;
width: 100%;
height: 100%;
font-size: 1.25em;
}
</style>
@@ -152,7 +247,7 @@
<body>
<div id="current-slide"></div>
<div id="upcoming-slide"><span class="label">UPCOMING:</span></div>
<div id="upcoming-slide"><span class="overlay-element label">Upcoming</span></div>
<div id="speaker-controls">
<div class="speaker-controls-time">
<h4 class="label">Time <span class="reset-button">Click to Reset</span></h4>
@@ -170,6 +265,10 @@
<div class="value"></div>
</div>
</div>
<div id="speaker-layout" class="overlay-element interactive">
<span class="speaker-layout-label"></span>
<select class="speaker-layout-dropdown"></select>
</div>
<script src="/socket.io/socket.io.js"></script>
<script src="/plugin/markdown/marked.js"></script>
@@ -182,11 +281,20 @@
currentState,
currentSlide,
upcomingSlide,
layoutLabel,
layoutDropdown,
connected = false;
var socket = io.connect( window.location.origin ),
socketId = '{{socketId}}';
var SPEAKER_LAYOUTS = {
'default': 'Default',
'wide': 'Wide',
'tall': 'Tall',
'notes-only': 'Notes only'
};
socket.on( 'statechanged', function( data ) {
// ignore data from sockets that aren't ours
@@ -195,7 +303,6 @@
if( connected === false ) {
connected = true;
setupIframes( data );
setupKeyboard();
setupNotes();
setupTimer();
@@ -206,13 +313,28 @@
} );
setupLayout();
// Load our presentation iframes
setupIframes();
// Once the iframes have loaded, emit a signal saying there's
// a new subscriber which will trigger a 'statechanged'
// message to be sent back
window.addEventListener( 'message', function( event ) {
var data = JSON.parse( event.data );
if( data && data.namespace === 'reveal' ) {
if( /ready/.test( data.eventName ) ) {
socket.emit( 'connect', { socketId: socketId } );
socket.emit( 'new-subscriber', { socketId: socketId } );
}
}
// Messages sent by reveal.js inside of the current slide preview
if( data && data.namespace === 'reveal' ) {
if( /slidechanged|fragmentshown|fragmenthidden|overviewshown|overviewhidden|paused|resumed/.test( data.eventName ) && currentState !== JSON.stringify( data.state ) ) {
socket.emit( 'statechanged-speaker', { state: data.state } );
}
}
@@ -267,7 +389,7 @@
/**
* Creates the preview iframes.
*/
function setupIframes( data ) {
function setupIframes() {
var params = [
'receiver',
@@ -277,9 +399,8 @@
'backgroundTransition=none'
].join( '&' );
var hash = '#/' + data.state.indexh + '/' + data.state.indexv;
var currentURL = '/?' + params + '&postMessageEvents=true' + hash;
var upcomingURL = '/?' + params + '&controls=false' + hash;
var currentURL = '/?' + params + '&postMessageEvents=true';
var upcomingURL = '/?' + params + '&controls=false';
currentSlide = document.createElement( 'iframe' );
currentSlide.setAttribute( 'width', 1280 );
@@ -351,6 +472,74 @@
}
/**
* Sets up the speaker view layout and layout selector.
*/
function setupLayout() {
layoutDropdown = document.querySelector( '.speaker-layout-dropdown' );
layoutLabel = document.querySelector( '.speaker-layout-label' );
// Render the list of available layouts
for( var id in SPEAKER_LAYOUTS ) {
var option = document.createElement( 'option' );
option.setAttribute( 'value', id );
option.textContent = SPEAKER_LAYOUTS[ id ];
layoutDropdown.appendChild( option );
}
// Monitor the dropdown for changes
layoutDropdown.addEventListener( 'change', function( event ) {
setLayout( layoutDropdown.value );
}, false );
// Restore any currently persisted layout
setLayout( getLayout() );
}
/**
* Sets a new speaker view layout. The layout is persisted
* in local storage.
*/
function setLayout( value ) {
var title = SPEAKER_LAYOUTS[ value ];
layoutLabel.innerHTML = 'Layout' + ( title ? ( ': ' + title ) : '' );
layoutDropdown.value = value;
document.body.setAttribute( 'data-speaker-layout', value );
// Persist locally
if( window.localStorage ) {
window.localStorage.setItem( 'reveal-speaker-layout', value );
}
}
/**
* Returns the ID of the most recently set speaker layout
* or our default layout if none has been set.
*/
function getLayout() {
if( window.localStorage ) {
var layout = window.localStorage.getItem( 'reveal-speaker-layout' );
if( layout ) {
return layout;
}
}
// Default to the first record in the layouts hash
for( var id in SPEAKER_LAYOUTS ) {
return id;
}
}
function zeroPadInteger( num ) {
var str = '00' + parseInt( num );

View File

@@ -8,6 +8,7 @@
<style>
body {
font-family: Helvetica;
font-size: 18px;
}
#current-slide,
@@ -30,15 +31,26 @@
position: absolute;
top: 10px;
left: 10px;
font-weight: bold;
font-size: 14px;
z-index: 2;
color: rgba( 255, 255, 255, 0.9 );
}
.overlay-element {
height: 34px;
line-height: 34px;
padding: 0 10px;
text-shadow: none;
background: rgba( 220, 220, 220, 0.8 );
color: #222;
font-size: 14px;
}
.overlay-element.interactive:hover {
background: rgba( 220, 220, 220, 1 );
}
#current-slide {
position: absolute;
width: 65%;
width: 60%;
height: 100%;
top: 0;
left: 0;
@@ -47,20 +59,20 @@
#upcoming-slide {
position: absolute;
width: 35%;
width: 40%;
height: 40%;
right: 0;
top: 0;
}
/* Speaker controls */
#speaker-controls {
position: absolute;
top: 40%;
right: 0;
width: 35%;
width: 40%;
height: 60%;
overflow: auto;
font-size: 18px;
}
@@ -125,24 +137,124 @@
font-size: 1.2em;
}
/* Layout selector */
#speaker-layout {
position: absolute;
top: 10px;
right: 10px;
color: #222;
z-index: 10;
}
#speaker-layout select {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
border: 0;
box-shadow: 0;
cursor: pointer;
opacity: 0;
font-size: 1em;
background-color: transparent;
-moz-appearance: none;
-webkit-appearance: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
#speaker-layout select:focus {
outline: none;
box-shadow: none;
}
.clear {
clear: both;
}
/* Speaker layout: Wide */
body[data-speaker-layout="wide"] #current-slide,
body[data-speaker-layout="wide"] #upcoming-slide {
width: 50%;
height: 45%;
padding: 6px;
}
body[data-speaker-layout="wide"] #current-slide {
top: 0;
left: 0;
}
body[data-speaker-layout="wide"] #upcoming-slide {
top: 0;
left: 50%;
}
body[data-speaker-layout="wide"] #speaker-controls {
top: 45%;
left: 0;
width: 100%;
height: 50%;
font-size: 1.25em;
}
/* Speaker layout: Tall */
body[data-speaker-layout="tall"] #current-slide,
body[data-speaker-layout="tall"] #upcoming-slide {
width: 45%;
height: 50%;
padding: 6px;
}
body[data-speaker-layout="tall"] #current-slide {
top: 0;
left: 0;
}
body[data-speaker-layout="tall"] #upcoming-slide {
top: 50%;
left: 0;
}
body[data-speaker-layout="tall"] #speaker-controls {
padding-top: 40px;
top: 0;
left: 45%;
width: 55%;
height: 100%;
font-size: 1.25em;
}
/* Speaker layout: Notes only */
body[data-speaker-layout="notes-only"] #current-slide,
body[data-speaker-layout="notes-only"] #upcoming-slide {
display: none;
}
body[data-speaker-layout="notes-only"] #speaker-controls {
padding-top: 40px;
top: 0;
left: 0;
width: 100%;
height: 100%;
font-size: 1.25em;
}
@media screen and (max-width: 1080px) {
#speaker-controls {
body[data-speaker-layout="default"] #speaker-controls {
font-size: 16px;
}
}
@media screen and (max-width: 900px) {
#speaker-controls {
body[data-speaker-layout="default"] #speaker-controls {
font-size: 14px;
}
}
@media screen and (max-width: 800px) {
#speaker-controls {
body[data-speaker-layout="default"] #speaker-controls {
font-size: 12px;
}
}
@@ -153,7 +265,7 @@
<body>
<div id="current-slide"></div>
<div id="upcoming-slide"><span class="label">UPCOMING:</span></div>
<div id="upcoming-slide"><span class="overlay-element label">Upcoming</span></div>
<div id="speaker-controls">
<div class="speaker-controls-time">
<h4 class="label">Time <span class="reset-button">Click to Reset</span></h4>
@@ -171,6 +283,10 @@
<div class="value"></div>
</div>
</div>
<div id="speaker-layout" class="overlay-element interactive">
<span class="speaker-layout-label"></span>
<select class="speaker-layout-dropdown"></select>
</div>
<script src="../../plugin/markdown/marked.js"></script>
<script>
@@ -182,12 +298,27 @@
currentState,
currentSlide,
upcomingSlide,
layoutLabel,
layoutDropdown,
connected = false;
var SPEAKER_LAYOUTS = {
'default': 'Default',
'wide': 'Wide',
'tall': 'Tall',
'notes-only': 'Notes only'
};
setupLayout();
window.addEventListener( 'message', function( event ) {
var data = JSON.parse( event.data );
// The overview mode is only useful to the reveal.js instance
// where navigation occurs so we don't sync it
if( data.state ) delete data.state.overview;
// Messages sent by the notes plugin inside of the main window
if( data && data.namespace === 'reveal-notes' ) {
if( data.type === 'connect' ) {
@@ -203,8 +334,10 @@
// Send a message back to notify that the handshake is complete
window.opener.postMessage( JSON.stringify({ namespace: 'reveal-notes', type: 'connected'} ), '*' );
}
else if( /slidechanged|fragmentshown|fragmenthidden|overviewshown|overviewhidden|paused|resumed/.test( data.eventName ) && currentState !== JSON.stringify( data.state ) ) {
else if( /slidechanged|fragmentshown|fragmenthidden|paused|resumed/.test( data.eventName ) && currentState !== JSON.stringify( data.state ) ) {
window.opener.postMessage( JSON.stringify({ method: 'setState', args: [ data.state ]} ), '*' );
}
}
@@ -239,6 +372,7 @@
// No need for updating the notes in case of fragment changes
if ( data.notes ) {
notes.classList.remove( 'hidden' );
notesValue.style.whiteSpace = data.whitespace;
if( data.markdown ) {
notesValue.innerHTML = marked( data.notes );
}
@@ -287,9 +421,10 @@
'backgroundTransition=none'
].join( '&' );
var urlSeparator = /\?/.test(data.url) ? '&' : '?';
var hash = '#/' + data.state.indexh + '/' + data.state.indexv;
var currentURL = data.url + '?' + params + '&postMessageEvents=true' + hash;
var upcomingURL = data.url + '?' + params + '&controls=false' + hash;
var currentURL = data.url + urlSeparator + params + '&postMessageEvents=true' + hash;
var upcomingURL = data.url + urlSeparator + params + '&controls=false' + hash;
currentSlide = document.createElement( 'iframe' );
currentSlide.setAttribute( 'width', 1280 );
@@ -361,6 +496,74 @@
}
/**
* Sets up the speaker view layout and layout selector.
*/
function setupLayout() {
layoutDropdown = document.querySelector( '.speaker-layout-dropdown' );
layoutLabel = document.querySelector( '.speaker-layout-label' );
// Render the list of available layouts
for( var id in SPEAKER_LAYOUTS ) {
var option = document.createElement( 'option' );
option.setAttribute( 'value', id );
option.textContent = SPEAKER_LAYOUTS[ id ];
layoutDropdown.appendChild( option );
}
// Monitor the dropdown for changes
layoutDropdown.addEventListener( 'change', function( event ) {
setLayout( layoutDropdown.value );
}, false );
// Restore any currently persisted layout
setLayout( getLayout() );
}
/**
* Sets a new speaker view layout. The layout is persisted
* in local storage.
*/
function setLayout( value ) {
var title = SPEAKER_LAYOUTS[ value ];
layoutLabel.innerHTML = 'Layout' + ( title ? ( ': ' + title ) : '' );
layoutDropdown.value = value;
document.body.setAttribute( 'data-speaker-layout', value );
// Persist locally
if( window.localStorage ) {
window.localStorage.setItem( 'reveal-speaker-layout', value );
}
}
/**
* Returns the ID of the most recently set speaker layout
* or our default layout if none has been set.
*/
function getLayout() {
if( window.localStorage ) {
var layout = window.localStorage.getItem( 'reveal-speaker-layout' );
if( layout ) {
return layout;
}
}
// Default to the first record in the layouts hash
for( var id in SPEAKER_LAYOUTS ) {
return id;
}
}
function zeroPadInteger( num ) {
var str = '00' + parseInt( num );

View File

@@ -11,10 +11,15 @@
*/
var RevealNotes = (function() {
function openNotes() {
var jsFileLocation = document.querySelector('script[src$="notes.js"]').src; // this js file path
jsFileLocation = jsFileLocation.replace(/notes\.js(\?.*)?$/, ''); // the js folder path
var notesPopup = window.open( jsFileLocation + 'notes.html', 'reveal.js - Notes', 'width=1100,height=700' );
function openNotes( notesFilePath ) {
if( !notesFilePath ) {
var jsFileLocation = document.querySelector('script[src$="notes.js"]').src; // this js file path
jsFileLocation = jsFileLocation.replace(/notes\.js(\?.*)?$/, ''); // the js folder path
notesFilePath = jsFileLocation + 'notes.html';
}
var notesPopup = window.open( notesFilePath, 'reveal.js - Notes', 'width=1100,height=700' );
/**
* Connect to the notes window through a postmessage handshake.
@@ -28,7 +33,7 @@ var RevealNotes = (function() {
notesPopup.postMessage( JSON.stringify( {
namespace: 'reveal-notes',
type: 'connect',
url: window.location.protocol + '//' + window.location.host + window.location.pathname,
url: window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search,
state: Reveal.getState()
} ), '*' );
}, 500 );
@@ -55,12 +60,14 @@ var RevealNotes = (function() {
type: 'state',
notes: '',
markdown: false,
whitespace: 'normal',
state: Reveal.getState()
};
// Look for notes defined in a slide attribute
if( slideElement.hasAttribute( 'data-notes' ) ) {
messageData.notes = slideElement.getAttribute( 'data-notes' );
messageData.whitespace = 'pre-wrap';
}
// Look for notes defined in an aside element
@@ -94,6 +101,7 @@ var RevealNotes = (function() {
}
connect();
}
if( !/receiver/i.test( window.location.search ) ) {
@@ -109,12 +117,18 @@ var RevealNotes = (function() {
// modifier is present
if ( document.querySelector( ':focus' ) !== null || event.shiftKey || event.altKey || event.ctrlKey || event.metaKey ) return;
// Disregard the event if keyboard is disabled
if ( Reveal.getConfig().keyboard === false ) return;
if( event.keyCode === 83 ) {
event.preventDefault();
openNotes();
}
}, false );
// Show our keyboard shortcut in the reveal.js help overlay
if( window.Reveal ) Reveal.registerKeyboardShortcut( 'S', 'Speaker notes view' );
}
return { open: openNotes };

View File

@@ -40,7 +40,7 @@ console.log( 'Printing PDF (Paper size: '+ page.paperSize.width + 'x' + page.pap
page.open( inputFile, function( status ) {
window.setTimeout( function() {
console.log( 'Printed succesfully' );
console.log( 'Printed successfully' );
page.render( outputFile );
phantom.exit();
}, 1000 );

View File

@@ -1,39 +0,0 @@
/**
* Touch-based remote controller for your presentation courtesy
* of the folks at http://remotes.io
*/
(function(window){
/**
* Detects if we are dealing with a touch enabled device (with some false positives)
* Borrowed from modernizr: https://github.com/Modernizr/Modernizr/blob/master/feature-detects/touch.js
*/
var hasTouch = (function(){
return ('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch;
})();
/**
* Detects if notes are enable and the current page is opened inside an /iframe
* this prevents loading Remotes.io several times
*/
var isNotesAndIframe = (function(){
return window.RevealNotes && !(self == top);
})();
if(!hasTouch && !isNotesAndIframe){
head.ready( 'remotes.ne.min.js', function() {
new Remotes("preview")
.on("swipe-left", function(e){ Reveal.right(); })
.on("swipe-right", function(e){ Reveal.left(); })
.on("swipe-up", function(e){ Reveal.down(); })
.on("swipe-down", function(e){ Reveal.up(); })
.on("tap", function(e){ Reveal.next(); })
.on("zoom-out", function(e){ Reveal.toggleOverview(true); })
.on("zoom-in", function(e){ Reveal.toggleOverview(false); })
;
} );
head.js('https://hakim-static.s3.amazonaws.com/reveal-js/remotes.ne.min.js');
}
})(window);

View File

@@ -2,7 +2,7 @@
(function(){
var isEnabled = true;
document.querySelector( '.reveal' ).addEventListener( 'mousedown', function( event ) {
document.querySelector( '.reveal .slides' ).addEventListener( 'mousedown', function( event ) {
var modifier = ( Reveal.getConfig().zoomKey ? Reveal.getConfig().zoomKey : 'alt' ) + 'Key';
var zoomPadding = 20;
@@ -11,7 +11,17 @@
if( event[ modifier ] && isEnabled ) {
event.preventDefault();
var bounds = event.target.getBoundingClientRect();
var bounds;
var originalDisplay = event.target.style.display;
// Get the bounding rect of the contents, not the containing box
if( window.getComputedStyle( event.target ).display === 'block' ) {
event.target.style.display = 'inline-block';
bounds = event.target.getBoundingClientRect();
event.target.style.display = originalDisplay;
} else {
bounds = event.target.getBoundingClientRect();
}
zoom.to({
x: ( bounds.left * revealScale ) - zoomPadding,

View File

@@ -93,7 +93,7 @@
<h2>Video background</h2>
</section>
<section data-background-iframe="https://slides.com">
<section data-background-iframe="https://slides.com/news/make-better-presentations/embed?style=hidden&autoSlide=4000">
<h2>Iframe background</h2>
</section>

View File

@@ -0,0 +1,101 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>reveal.js - Slide Transitions</title>
<link rel="stylesheet" href="../../css/reveal.css">
<link rel="stylesheet" href="../../css/theme/white.css" id="theme">
<style type="text/css" media="screen">
.slides section.has-dark-background,
.slides section.has-dark-background h3 {
color: #fff;
}
.slides section.has-light-background,
.slides section.has-light-background h3 {
color: #222;
}
</style>
</head>
<body>
<div class="reveal">
<div class="slides">
<section>
<h3>Default</h3>
</section>
<section>
<h3>Default</h3>
</section>
<section data-transition="zoom">
<h3>data-transition: zoom</h3>
</section>
<section data-transition="zoom-in fade-out">
<h3>data-transition: zoom-in fade-out</h3>
</section>
<section>
<h3>Default</h3>
</section>
<section data-transition="convex">
<h3>data-transition: convex</h3>
</section>
<section data-transition="convex-in concave-out">
<h3>data-transition: convex-in concave-out</h3>
</section>
<section>
<section data-transition="zoom">
<h3>Default</h3>
</section>
<section data-transition="concave">
<h3>data-transition: concave</h3>
</section>
<section data-transition="convex-in fade-out">
<h3>data-transition: convex-in fade-out</h3>
</section>
<section>
<h3>Default</h3>
</section>
</section>
<section data-transition="none">
<h3>data-transition: none</h3>
</section>
<section>
<h3>Default</h3>
</section>
</div>
</div>
<script src="../../lib/js/head.min.js"></script>
<script src="../../js/reveal.js"></script>
<script>
Reveal.initialize({
center: true,
history: true,
// transition: 'slide',
// transitionSpeed: 'slow',
// backgroundTransition: 'slide'
});
</script>
</body>
</html>

12
test/simple.md Normal file
View File

@@ -0,0 +1,12 @@
## Slide 1.1
```js
var a = 1;
```
## Slide 1.2
## Slide 2

View File

@@ -38,9 +38,9 @@
Paragraph 2
<!-- {_class="fragment grow"} -->
- list item 1 <!-- {_class="fragment roll-in"} -->
- list item 2 <!-- {_class="fragment roll-in"} -->
- list item 3 <!-- {_class="fragment roll-in"} -->
- list item 1 <!-- {_class="fragment grow"} -->
- list item 2 <!-- {_class="fragment grow"} -->
- list item 3 <!-- {_class="fragment grow"} -->
---

View File

@@ -19,7 +19,7 @@ Reveal.addEventListener( 'ready', function() {
});
test( 'Attributes on element list items in vertical slides', function() {
strictEqual( document.querySelectorAll( '.reveal .slides section>section li.fragment.roll-in' ).length, 3, 'found a vertical slide with three list items with class fragment.roll-in' );
strictEqual( document.querySelectorAll( '.reveal .slides section>section li.fragment.grow' ).length, 3, 'found a vertical slide with three list items with class fragment.grow' );
});
test( 'Attributes on element paragraphs in horizontal slides', function() {

View File

@@ -0,0 +1,36 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>reveal.js - Test Markdown</title>
<link rel="stylesheet" href="../css/reveal.css">
<link rel="stylesheet" href="qunit-1.12.0.css">
</head>
<body style="overflow: auto;">
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<div class="reveal" style="display: none;">
<div class="slides">
<section data-markdown="simple.md" data-separator="^\n\n\n" data-separator-vertical="^\n\n"></section>
</div>
</div>
<script src="../lib/js/head.min.js"></script>
<script src="../js/reveal.js"></script>
<script src="../plugin/highlight/highlight.js"></script>
<script src="../plugin/markdown/marked.js"></script>
<script src="../plugin/markdown/markdown.js"></script>
<script src="qunit-1.12.0.js"></script>
<script src="test-markdown-external.js"></script>
</body>
</html>

View File

@@ -0,0 +1,24 @@
Reveal.addEventListener( 'ready', function() {
QUnit.module( 'Markdown' );
test( 'Vertical separator', function() {
strictEqual( document.querySelectorAll( '.reveal .slides>section>section' ).length, 2, 'found two slides' );
});
test( 'Horizontal separator', function() {
strictEqual( document.querySelectorAll( '.reveal .slides>section' ).length, 2, 'found two slides' );
});
test( 'Language highlighter', function() {
strictEqual( document.querySelectorAll( '.hljs-keyword' ).length, 1, 'got rendered highlight tag.' );
strictEqual( document.querySelector( '.hljs-keyword' ).innerHTML, 'var', 'the same keyword: var.' );
});
} );
Reveal.initialize();

View File

@@ -0,0 +1,41 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>reveal.js - Test Markdown Options</title>
<link rel="stylesheet" href="../css/reveal.css">
<link rel="stylesheet" href="qunit-1.12.0.css">
</head>
<body style="overflow: auto;">
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<div class="reveal" style="display: none;">
<div class="slides">
<section data-markdown>
<script type="text/template">
## Testing Markdown Options
This "slide" should contain 'smart' quotes.
</script>
</section>
</div>
</div>
<script src="../lib/js/head.min.js"></script>
<script src="../js/reveal.js"></script>
<script src="qunit-1.12.0.js"></script>
<script src="test-markdown-options.js"></script>
</body>
</html>

View File

@@ -0,0 +1,26 @@
Reveal.addEventListener( 'ready', function() {
QUnit.module( 'Markdown' );
test( 'Options are set', function() {
strictEqual( marked.defaults.smartypants, true );
});
test( 'Smart quotes are activated', function() {
var text = document.querySelector( '.reveal .slides>section>p' ).textContent;
strictEqual( /['"]/.test( text ), false );
strictEqual( /[“”‘’]/.test( text ), true );
});
} );
Reveal.initialize({
dependencies: [
{ src: '../plugin/markdown/marked.js' },
{ src: '../plugin/markdown/markdown.js' },
],
markdown: {
smartypants: true
}
});

View File

@@ -13,7 +13,7 @@
<body style="overflow: auto;">
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<div id="qunit-fixture"></div>
<div class="reveal" style="display: none;">

View File

@@ -22,10 +22,13 @@
<section data-background-image="examples/assets/image1.png">
<h1>1</h1>
<img data-src="fake-url.png">
<video data-src="fake-url.mp4"></video>
<audio data-src="fake-url.mp3"></audio>
<aside class="notes">speaker notes 1</aside>
</section>
<section>
<section data-background="examples/assets/image2.png">
<section data-background="examples/assets/image2.png" data-notes="speaker notes 2">
<h1>2.1</h1>
</section>
<section>
@@ -52,6 +55,7 @@
<li class="fragment" data-fragment-index="0">4.1</li>
<li class="fragment" data-fragment-index="0">4.2</li>
</ul>
<iframe data-src="http://example.com"></iframe>
</section>
<section>

View File

@@ -89,7 +89,7 @@ Reveal.addEventListener( 'ready', function() {
test( 'Reveal.isLastSlide after vertical slide', function() {
var lastSlideIndex = document.querySelectorAll( '.reveal .slides>section' ).length - 1;
Reveal.slide( 1, 1 );
Reveal.slide( lastSlideIndex );
strictEqual( Reveal.isLastSlide(), true, 'true after Reveal.slide( 1, 1 ) and then Reveal.slide( '+ lastSlideIndex +', 0 )' );
@@ -139,6 +139,14 @@ Reveal.addEventListener( 'ready', function() {
strictEqual( Reveal.getSlideBackground( 1, 100 ), undefined, 'undefined when out of vertical bounds' );
});
test( 'Reveal.getSlideNotes', function() {
Reveal.slide( 0, 0 );
ok( Reveal.getSlideNotes() === 'speaker notes 1', 'works with <aside class="notes">' );
Reveal.slide( 1, 0 );
ok( Reveal.getSlideNotes() === 'speaker notes 2', 'works with <section data-notes="">' );
});
test( 'Reveal.getPreviousSlide/getCurrentSlide', function() {
Reveal.slide( 0, 0 );
Reveal.slide( 1, 0 );
@@ -495,6 +503,23 @@ Reveal.addEventListener( 'ready', function() {
strictEqual( document.querySelectorAll( '.reveal section img[src]' ).length, 1, 'Image source has been set' );
});
test( 'video with data-src', function() {
strictEqual( document.querySelectorAll( '.reveal section video[src]' ).length, 1, 'Video source has been set' );
});
test( 'audio with data-src', function() {
strictEqual( document.querySelectorAll( '.reveal section audio[src]' ).length, 1, 'Audio source has been set' );
});
test( 'iframe with data-src', function() {
Reveal.slide( 0, 0 );
strictEqual( document.querySelectorAll( '.reveal section iframe[src]' ).length, 0, 'Iframe source is not set' );
Reveal.slide( 2, 1 );
strictEqual( document.querySelectorAll( '.reveal section iframe[src]' ).length, 1, 'Iframe source is set' );
Reveal.slide( 2, 2 );
strictEqual( document.querySelectorAll( '.reveal section iframe[src]' ).length, 0, 'Iframe source is not set' );
});
test( 'background images', function() {
var imageSource1 = Reveal.getSlide( 0 ).getAttribute( 'data-background-image' );
var imageSource2 = Reveal.getSlide( 1, 0 ).getAttribute( 'data-background' );