diff options
Diffstat (limited to 'js/reveal.js')
-rw-r--r-- | js/reveal.js | 57 |
1 files changed, 54 insertions, 3 deletions
diff --git a/js/reveal.js b/js/reveal.js index d92ee76..564c863 100644 --- a/js/reveal.js +++ b/js/reveal.js @@ -1,5 +1,5 @@ /*! - * reveal.js 2.1 r37 + * reveal.js 2.2 r38 * http://lab.hakim.se/reveal-js * MIT licensed * @@ -29,6 +29,9 @@ var Reveal = (function(){ // Enable the slide overview mode overview: true, + // Vertical centering of slides + center: false, + // Loop the presentation loop: false, @@ -264,6 +267,10 @@ var Reveal = (function(){ // Updates the presentation to match the current configuration values configure(); + // Force an initial layout, will thereafter be invoked as the window + // is resized + layout(); + // Read the initial hash readURL(); @@ -301,6 +308,10 @@ var Reveal = (function(){ dom.wrapper.classList.add( config.transition ); } + if( config.center ) { + dom.wrapper.classList.add( 'center' ); + } + if( config.mouseWheel ) { document.addEventListener( 'DOMMouseScroll', onDocumentMouseScroll, false ); // FF document.addEventListener( 'mousewheel', onDocumentMouseScroll, false ); @@ -332,6 +343,7 @@ var Reveal = (function(){ document.addEventListener( 'touchmove', onDocumentTouchMove, false ); document.addEventListener( 'touchend', onDocumentTouchEnd, false ); window.addEventListener( 'hashchange', onWindowHashChange, false ); + window.addEventListener( 'resize', onWindowResize, false ); if( config.keyboard ) { document.addEventListener( 'keydown', onDocumentKeyDown, false ); @@ -358,6 +370,7 @@ var Reveal = (function(){ document.removeEventListener( 'touchmove', onDocumentTouchMove, false ); document.removeEventListener( 'touchend', onDocumentTouchEnd, false ); window.removeEventListener( 'hashchange', onWindowHashChange, false ); + window.removeEventListener( 'resize', onWindowResize, false ); if ( config.progress && dom.progress ) { dom.progress.removeEventListener( 'click', preventAndForward( onProgressClick ), false ); @@ -449,6 +462,37 @@ var Reveal = (function(){ } /** + * Applies JavaScript-controlled layout rules to the + * presentation. + */ + function layout() { + + if( config.center ) { + + // Select all slides, vertical and horizontal + var slides = Array.prototype.slice.call( document.querySelectorAll( '.reveal .slides section' ) ); + + // Determine the minimum top offset for slides + var minTop = -dom.wrapper.offsetHeight / 2; + + for( var i = 0, len = slides.length; i < len; i++ ) { + var slide = slides[ i ]; + + // Vertical stacks are not centered since their section + // children will be + if( slide.classList.contains( 'stack' ) ) { + slide.style.top = 0; + } + else { + slide.style.top = Math.max( - ( slide.offsetHeight / 2 ) - 20, minTop ) + 'px'; + } + } + + } + + } + + /** * Displays the overview of slides (quick nav) by * scaling down and arranging all slide elements. * @@ -643,6 +687,8 @@ var Reveal = (function(){ indexh = updateSlides( HORIZONTAL_SLIDES_SELECTOR, h === undefined ? indexh : h ); indexv = updateSlides( VERTICAL_SLIDES_SELECTOR, v === undefined ? indexv : v ); + layout(); + // Apply the new state stateLoop: for( var i = 0, len = state.length; i < len; i++ ) { // Check if this state existed on the previous slide. If it @@ -1284,14 +1330,19 @@ var Reveal = (function(){ /** * Handler for the window level 'hashchange' event. - * - * @param {Object} event */ function onWindowHashChange( event ) { readURL(); } /** + * Handler for the window level 'resize' event. + */ + function onWindowResize( event ) { + layout(); + } + + /** * Invoked when a slide is and we're in the overview. */ function onOverviewSlideClicked( event ) { |