auto-animate works on vertically centered decks
							parent
							
								
									8d89db32f6
								
							
						
					
					
						commit
						a3cd500154
					
				
							
								
								
									
										25
									
								
								js/reveal.js
								
								
								
								
							
							
						
						
									
										25
									
								
								js/reveal.js
								
								
								
								
							|  | @ -3789,16 +3789,21 @@ | ||||||
| 
 | 
 | ||||||
| 		if( config.autoAnimate ) { | 		if( config.autoAnimate ) { | ||||||
| 
 | 
 | ||||||
| 			var prevTargets = {}; | 			// If our slides are centered vertically, we need to
 | ||||||
|  | 			// account for their difference in position when
 | ||||||
|  | 			// calculating deltas for animated elements
 | ||||||
|  | 			var offsetY = config.center ? fromSlide.offsetTop - toSlide.offsetTop : 0; | ||||||
| 
 | 
 | ||||||
| 			toArray( fromSlide.querySelectorAll( '[data-id]' ) ).forEach( function( element ) { | 			var fromTargets = {}; | ||||||
| 				prevTargets[ element.getAttribute( 'data-id' ) ] = element; | 
 | ||||||
|  | 			toArray( fromSlide.querySelectorAll( '[data-id]' ) ).forEach( function( fromElement ) { | ||||||
|  | 				fromTargets[ fromElement.getAttribute( 'data-id' ) ] = fromElement; | ||||||
| 			} ); | 			} ); | ||||||
| 
 | 
 | ||||||
| 			toArray( toSlide.querySelectorAll( '[data-id]' ) ).forEach( function( element ) { | 			toArray( toSlide.querySelectorAll( '[data-id]' ) ).forEach( function( toElement ) { | ||||||
| 				var previousElement = prevTargets[ element.getAttribute( 'data-id' ) ]; | 				var fromElement = fromTargets[ toElement.getAttribute( 'data-id' ) ]; | ||||||
| 				if( previousElement ) { | 				if( fromElement ) { | ||||||
| 					autoAnimateElement( previousElement, element ); | 					autoAnimateElement( fromElement, toElement, offsetY ); | ||||||
| 				} | 				} | ||||||
| 			} ); | 			} ); | ||||||
| 
 | 
 | ||||||
|  | @ -3813,7 +3818,7 @@ | ||||||
| 	 * @param  {HTMLElement} from | 	 * @param  {HTMLElement} from | ||||||
| 	 * @param  {HTMLElement} to | 	 * @param  {HTMLElement} to | ||||||
| 	 */ | 	 */ | ||||||
| 	function autoAnimateElement( from, to ) { | 	function autoAnimateElement( from, to, offsetY ) { | ||||||
| 
 | 
 | ||||||
| 		var fromProps = getAutoAnimatableProperties( from ), | 		var fromProps = getAutoAnimatableProperties( from ), | ||||||
| 			toProps = getAutoAnimatableProperties( to ); | 			toProps = getAutoAnimatableProperties( to ); | ||||||
|  | @ -3825,6 +3830,10 @@ | ||||||
| 			scaleY: fromProps.height / toProps.height | 			scaleY: fromProps.height / toProps.height | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
|  | 		// Correction applied to account for varying vertical
 | ||||||
|  | 		// positions in decks with vertical centering
 | ||||||
|  | 		if( typeof offsetY === 'number' ) delta.y += offsetY; | ||||||
|  | 
 | ||||||
| 		to.style.transition = 'none'; | 		to.style.transition = 'none'; | ||||||
| 		to.style.transform = 'translate('+delta.x+'px, '+delta.y+'px) scale('+delta.scaleX+','+delta.scaleY+')'; | 		to.style.transform = 'translate('+delta.x+'px, '+delta.y+'px) scale('+delta.scaleX+','+delta.scaleY+')'; | ||||||
| 		to.classList.add( 'auto-animate-target' ); | 		to.classList.add( 'auto-animate-target' ); | ||||||
|  |  | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
| 					<h3 data-id="opacity-test">Opacity 1.0</h2> | 					<h3 data-id="opacity-test">Opacity 1.0</h2> | ||||||
| 				</section> | 				</section> | ||||||
| 				<section data-auto-animate> | 				<section data-auto-animate> | ||||||
| 					<h3 data-id="opacity-test" style="opacity: 0.2;">Opacity 0.2</h2> | 					<h3 data-id="opacity-test" style="opacity: 0.2; margin-top: 200px;">Opacity 0.2</h2> | ||||||
| 				</section> | 				</section> | ||||||
| 
 | 
 | ||||||
| 				<section data-auto-animate style="height: 600px"> | 				<section data-auto-animate style="height: 600px"> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Hakim El Hattab
						Hakim El Hattab