Kaynağa Gözat

fix fullscreen issues; correct size in Safari, auto-focus presentation when entering fullscreen #3080

hakimel 3 yıl önce
ebeveyn
işleme
b7d65be051
5 değiştirilmiş dosya ile 45 ekleme ve 0 silme
  1. 9 0
      css/reveal.scss
  2. 0 0
      dist/reveal.css
  3. 0 0
      dist/reveal.esm.js
  4. 0 0
      dist/reveal.js
  5. 36 0
      js/reveal.js

+ 9 - 0
css/reveal.scss

@@ -33,6 +33,15 @@ html.reveal-full-page {
 	color: #000;
 }
 
+// Fixes an issue where Safari would take embedded presentations
+// fullscreen but keep them at their original width/height style
+.reveal-viewport:fullscreen {
+	top: 0 !important;
+	left: 0 !important;
+	width: 100% !important;
+	height: 100% !important;
+}
+
 
 /*********************************************
  * VIEW FRAGMENTS

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/reveal.css


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/reveal.esm.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
dist/reveal.js


+ 36 - 0
js/reveal.js

@@ -190,6 +190,9 @@ export default function( revealElement, options ) {
 		// Prevent the slides from being scrolled out of view
 		setupScrollPrevention();
 
+		// Adds bindings for fullscreen mode
+		setupFullscreen();
+
 		// Resets all vertical slides so that only the first is visible
 		resetVerticalSlides();
 
@@ -376,6 +379,19 @@ export default function( revealElement, options ) {
 
 	}
 
+	/**
+	 * After entering fullscreen we need to force a layout to
+	 * get our presentations to scale correctly. This behavior
+	 * is inconsistent across browsers but a force layout seems
+	 * to normalize it.
+	 */
+	function setupFullscreen() {
+
+		document.addEventListener( 'fullscreenchange', onFullscreenChange );
+		document.addEventListener( 'webkitfullscreenchange', onFullscreenChange );
+
+	}
+
 	/**
 	 * Registers a listener to postMessage events, this makes it
 	 * possible to call all reveal.js API methods from another
@@ -2433,6 +2449,26 @@ export default function( revealElement, options ) {
 
 	}
 
+	/**
+	 * Handler for the document level 'fullscreenchange' event.
+	 *
+	 * @param {object} [event]
+	 */
+	function onFullscreenChange( event ) {
+
+		let element = document.fullscreenElement || document.webkitFullscreenElement;
+		if( element === dom.wrapper ) {
+			event.stopImmediatePropagation();
+
+			// Timeout to avoid layout shift in Safari
+			setTimeout( () => {
+				Reveal.layout();
+				Reveal.focus.focus(); // focus.focus :'(
+			}, 1 );
+		}
+
+	}
+
 	/**
 	 * Handles clicks on links that are set to preview in the
 	 * iframe overlay.

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor