Browse Source

apply z position to slide container, rather than individual slides

Hakim El Hattab 10 years ago
parent
commit
e0aba9f5ae
3 changed files with 12 additions and 7 deletions
  1. 1 1
      css/reveal.css
  2. 1 2
      css/reveal.scss
  3. 10 4
      js/reveal.js

+ 1 - 1
css/reveal.css

@@ -627,7 +627,7 @@ body {
 /*********************************************
  * OVERVIEW
  *********************************************/
-.reveal.overview .slides {
+.reveal.overview {
   -webkit-perspective-origin: 50% 50%;
           perspective-origin: 50% 50%;
   -webkit-perspective: 700px;

+ 1 - 2
css/reveal.scss

@@ -743,11 +743,10 @@ body {
  * OVERVIEW
  *********************************************/
 
-.reveal.overview .slides {
+.reveal.overview {
 	perspective-origin: 50% 50%;
 	perspective: 700px;
 }
-
 .reveal.overview .slides section {
 	height: 700px;
 	overflow: hidden;

+ 10 - 4
js/reveal.js

@@ -165,6 +165,9 @@
 		// The current scale of the presentation (see width/height config)
 		scale = 1,
 
+		// The current z position of the presentation container
+		z = 0,
+
 		// Cached references to DOM elements
 		dom = {},
 
@@ -1470,6 +1473,7 @@
 				// Prefer zooming in desktop Chrome so that content remains crisp
 				if( !isMobileDevice && /chrome/i.test( navigator.userAgent ) && typeof dom.slides.style.zoom !== 'undefined' ) {
 					dom.slides.style.zoom = scale;
+					transformElement( dom.slides, 'translateZ(-'+ z +'px)' );
 				}
 				// Apply scale transform as a fallback
 				else {
@@ -1477,7 +1481,7 @@
 					dom.slides.style.top = '50%';
 					dom.slides.style.bottom = 'auto';
 					dom.slides.style.right = 'auto';
-					transformElement( dom.slides, 'translate(-50%, -50%) scale('+ scale +')' );
+					transformElement( dom.slides, 'translate(-50%, -50%) scale('+ scale +')' + ' translateZ(-'+ z +'px)' );
 				}
 			}
 
@@ -1635,8 +1639,10 @@
 
 			var wasActive = dom.wrapper.classList.contains( 'overview' );
 
-			// Vary the depth of the overview based on screen size
-			var depth = window.innerWidth < 400 ? 1000 : 2500;
+			// Set the depth of the presentation. This determinse how far we
+			// zoom out and varies based on display size. It gets applied at
+			// the layout step.
+			z = window.innerWidth < 400 ? 1000 : 2500;
 
 			dom.wrapper.classList.add( 'overview' );
 			dom.wrapper.classList.remove( 'overview-deactivating' );
@@ -1653,7 +1659,7 @@
 					hbackground = horizontalBackgrounds[i],
 					hoffset = config.rtl ? -105 : 105;
 
-				var htransform = 'translateZ(-'+ depth +'px) translate(' + ( ( i - indexh ) * hoffset ) + '%, 0%)';
+				var htransform = 'translate(' + ( ( i - indexh ) * hoffset ) + '%, 0%)';
 
 				hslide.setAttribute( 'data-index-h', i );