diff options
Diffstat (limited to 'doc/backends/deckjs/deck.js/extensions/split')
-rw-r--r-- | doc/backends/deckjs/deck.js/extensions/split/README.md | 30 | ||||
-rw-r--r-- | doc/backends/deckjs/deck.js/extensions/split/deck.split.js | 59 |
2 files changed, 89 insertions, 0 deletions
diff --git a/doc/backends/deckjs/deck.js/extensions/split/README.md b/doc/backends/deckjs/deck.js/extensions/split/README.md new file mode 100644 index 00000000..eb2e9c6d --- /dev/null +++ b/doc/backends/deckjs/deck.js/extensions/split/README.md @@ -0,0 +1,30 @@ + +deck.split.js +============== + +`deck.split.js` is a deckjs extension that helps you split long slide into +multiple small slides. + + +Installation +------------ + +Just drop the whole repo into deck.js's `extensions` directory, then include +the script in your slide. + + +Usage +----- + +To split a long slide, you need to indicate position inside original slide by +adding following line: + +```html +<div style="page-break-after:always"></div> +``` + +Indeed, it could be any tag set with `page-break-after:always` style. Every +time you add this line, a new slide with the same title will be created, so you +can split your slide into pieces as much as you want. + + diff --git a/doc/backends/deckjs/deck.js/extensions/split/deck.split.js b/doc/backends/deckjs/deck.js/extensions/split/deck.split.js new file mode 100644 index 00000000..081035c4 --- /dev/null +++ b/doc/backends/deckjs/deck.js/extensions/split/deck.split.js @@ -0,0 +1,59 @@ +/*! +Deck JS - deck.split +Copyright (c) 2012 Qingping Hou <dave2008713@gmail.com> + about.houqp.me +Dual licensed under the MIT license and GPL license. +https://github.com/imakewebthings/deck.js/blob/master/MIT-license.txt +https://github.com/imakewebthings/deck.js/blob/master/GPL-license.txt +*/ + +/* +This module splits a long slide into multiple slides. +*/ +(function($, deck, undefined) { + var $d = $(document); + + createEmptySlide = function(title_el) { + slide = $(document.createElement('section')); + slide.addClass('slide').append(title_el.clone()); + return slide; + }; + + $d.bind('deck.beforeInit', function() { + $(".slide").each( function(i, slide) { + /* each slide */ + var is_split = false, + prev_slide = $(slide), + /* extract title which will be added to each new slides */ + title_el = prev_slide.children('h2'), + tmp_slide = createEmptySlide(title_el); + + $(slide).children().each(function() { + /* for each element inside original slide */ + var el = $(this); + + if (el.css('page-break-after') == 'always') { + if (is_split) { + tmp_slide.insertAfter(prev_slide); + prev_slide = tmp_slide; + tmp_slide = createEmptySlide(title_el); + } + else { + /* find the first page break */ + is_split = true; + } + } + else { + if (is_split) { + tmp_slide.append(el); + } + } + }) + /* add remaining elements to a new slides */ + if (is_split) { + tmp_slide.insertAfter(prev_slide); + } + }); + }) +})(jQuery, 'deck'); + |