started the new per-slide background implementation (#453)
This commit is contained in:
		
							
								
								
									
										87
									
								
								js/reveal.js
									
									
									
									
									
								
							
							
						
						
									
										87
									
								
								js/reveal.js
									
									
									
									
									
								
							@@ -186,6 +186,13 @@ var Reveal = (function(){
 | 
			
		||||
		dom.wrapper = document.querySelector( '.reveal' );
 | 
			
		||||
		dom.slides = document.querySelector( '.reveal .slides' );
 | 
			
		||||
 | 
			
		||||
		// Background element
 | 
			
		||||
		if( !document.querySelector( '.reveal .background' ) ) {
 | 
			
		||||
			dom.background = document.createElement( 'div' );
 | 
			
		||||
			dom.background.classList.add( 'background' );
 | 
			
		||||
			dom.wrapper.appendChild( dom.background );
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Progress bar
 | 
			
		||||
		if( !dom.wrapper.querySelector( '.progress' ) ) {
 | 
			
		||||
			var progressElement = document.createElement( 'div' );
 | 
			
		||||
@@ -205,11 +212,11 @@ var Reveal = (function(){
 | 
			
		||||
			dom.wrapper.appendChild( controlsElement );
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Presentation background element
 | 
			
		||||
		// State background element [DEPRECATED]
 | 
			
		||||
		if( !dom.wrapper.querySelector( '.state-background' ) ) {
 | 
			
		||||
			var backgroundElement = document.createElement( 'div' );
 | 
			
		||||
			backgroundElement.classList.add( 'state-background' );
 | 
			
		||||
			dom.wrapper.appendChild( backgroundElement );
 | 
			
		||||
			var stateBackgroundElement = document.createElement( 'div' );
 | 
			
		||||
			stateBackgroundElement.classList.add( 'state-background' );
 | 
			
		||||
			dom.wrapper.appendChild( stateBackgroundElement );
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Overlay graphic which is displayed during the paused mode
 | 
			
		||||
@@ -237,6 +244,54 @@ var Reveal = (function(){
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Creates the slide background elements and appends them
 | 
			
		||||
	 * to the background container.
 | 
			
		||||
	 */
 | 
			
		||||
	function createBackgrounds() {
 | 
			
		||||
 | 
			
		||||
		// Clear prior backgrounds
 | 
			
		||||
		dom.background.innerHTML = '';
 | 
			
		||||
 | 
			
		||||
		// Helper method for creating a background element for the
 | 
			
		||||
		// given slide
 | 
			
		||||
		function _createBackground( slide, container ) {
 | 
			
		||||
 | 
			
		||||
			var background = slide.getAttribute( 'data-background' );
 | 
			
		||||
			var element = document.createElement( 'div' );
 | 
			
		||||
 | 
			
		||||
			if( background ) {
 | 
			
		||||
				// Auto-wrap image urls in url(...)
 | 
			
		||||
				if( /\.(png|jpg|jpeg|gif|bmp|)$/gi.test( background ) ) {
 | 
			
		||||
					element.style.backgroundImage = 'url('+ background +')';
 | 
			
		||||
				}
 | 
			
		||||
				else {
 | 
			
		||||
					element.style.background = background;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			container.appendChild( element );
 | 
			
		||||
 | 
			
		||||
			return element;
 | 
			
		||||
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Iterate over all horizontal slides
 | 
			
		||||
		toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ).forEach( function( slideh ) {
 | 
			
		||||
 | 
			
		||||
			var backgroundStack = _createBackground( slideh, dom.background );
 | 
			
		||||
 | 
			
		||||
			// Iterate over all vertical slides
 | 
			
		||||
			toArray( slideh.querySelectorAll( 'section' ) ).forEach( function( slidev ) {
 | 
			
		||||
 | 
			
		||||
				_createBackground( slidev, backgroundStack );
 | 
			
		||||
 | 
			
		||||
			} );
 | 
			
		||||
 | 
			
		||||
		} );
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Hides the address bar if we're on a mobile device.
 | 
			
		||||
	 */
 | 
			
		||||
@@ -1173,6 +1228,7 @@ var Reveal = (function(){
 | 
			
		||||
 | 
			
		||||
		updateControls();
 | 
			
		||||
		updateProgress();
 | 
			
		||||
		updateBackground();
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -1196,8 +1252,12 @@ var Reveal = (function(){
 | 
			
		||||
		// Start auto-sliding if it's enabled
 | 
			
		||||
		cueAutoSlide();
 | 
			
		||||
 | 
			
		||||
		// Re-create the slide backgrounds
 | 
			
		||||
		createBackgrounds();
 | 
			
		||||
 | 
			
		||||
		updateControls();
 | 
			
		||||
		updateProgress();
 | 
			
		||||
		updateBackground();
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -1402,6 +1462,25 @@ var Reveal = (function(){
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * 
 | 
			
		||||
	 */
 | 
			
		||||
	function updateBackground() {
 | 
			
		||||
 | 
			
		||||
		toArray( dom.background.childNodes ).forEach( function( backgroundh, h ) {
 | 
			
		||||
 | 
			
		||||
			backgroundh.className = ( h < indexh ? 'past' : h > indexh ? 'future' : 'present' );
 | 
			
		||||
 | 
			
		||||
			toArray( backgroundh.childNodes ).forEach( function( backgroundv, v ) {
 | 
			
		||||
 | 
			
		||||
				backgroundv.className = ( v < indexv ? 'past' : v > indexv ? 'future' : 'present' );
 | 
			
		||||
 | 
			
		||||
			} );
 | 
			
		||||
 | 
			
		||||
		} );
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Determine what available routes there are for navigation.
 | 
			
		||||
	 *
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								js/reveal.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								js/reveal.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Reference in New Issue
	
	Block a user