소스 검색

reader mode tweaks

Hakim El Hattab 1 년 전
부모
커밋
198cbc4ace
8개의 변경된 파일30개의 추가작업 그리고 8개의 파일을 삭제
  1. 14 5
      css/reveal.scss
  2. 0 0
      dist/reveal.css
  3. 0 0
      dist/reveal.esm.js
  4. 0 0
      dist/reveal.esm.js.map
  5. 0 0
      dist/reveal.js
  6. 0 0
      dist/reveal.js.map
  7. 10 2
      js/controllers/reader.js
  8. 6 1
      js/reveal.js

+ 14 - 5
css/reveal.scss

@@ -1883,10 +1883,12 @@ $notesWidthPercent: 25%;
 		z-index: 1;
 		z-index: 1;
 
 
 		--r-reader-progress-width: 8px;
 		--r-reader-progress-width: 8px;
+		--r-reader-progress-trigger-size: 6px;
 	}
 	}
 
 
 	@media screen and (max-width: 500px) {
 	@media screen and (max-width: 500px) {
 		--r-reader-progress-width: 3px;
 		--r-reader-progress-width: 3px;
+		--r-reader-progress-trigger-size: 3px;
 	}
 	}
 
 
 	.reveal .controls,
 	.reveal .controls,
@@ -1973,6 +1975,7 @@ $notesWidthPercent: 25%;
 		z-index: auto !important;
 		z-index: auto !important;
 		visibility: visible;
 		visibility: visible;
 		opacity: 1;
 		opacity: 1;
+		touch-action: manipulation;
 	}
 	}
 
 
 	/* Display slide speaker notes when 'showNotes' is enabled */
 	/* Display slide speaker notes when 'showNotes' is enabled */
@@ -2046,7 +2049,7 @@ $notesWidthPercent: 25%;
 	.reader-progress-inner {
 	.reader-progress-inner {
 		position: absolute;
 		position: absolute;
 		width: var(--r-reader-progress-width);
 		width: var(--r-reader-progress-width);
-		height: calc(var(--page-height) - var(--r-controls-spacing) * 2);
+		height: calc(var(--viewport-height) - var(--r-controls-spacing) * 2);
 		right: var(--r-controls-spacing);
 		right: var(--r-controls-spacing);
 		top: 0;
 		top: 0;
 		transform: translateY(-50%);
 		transform: translateY(-50%);
@@ -2105,13 +2108,19 @@ $notesWidthPercent: 25%;
 	.reader-progress-slide.active .reader-progress-trigger:after {
 	.reader-progress-slide.active .reader-progress-trigger:after {
 		content: '';
 		content: '';
 		position: absolute;
 		position: absolute;
-		width: calc(var(--r-reader-progress-width) / 2);
-		height: calc(var(--r-reader-progress-width) / 2);
-		border-radius: 6px;
+		width: var(--r-reader-progress-trigger-size);
+		height: var(--r-reader-progress-trigger-size);
+		border-radius: 20px;
 		bottom: 0;
 		bottom: 0;
 		left: 50%;
 		left: 50%;
 		transform: translate(-50%, 0);
 		transform: translate(-50%, 0);
-		background-color: rgba(var(--r-overlay-element-fg-color), 0.8);
+		background-color: rgba(var(--r-overlay-element-bg-color), 0.8);
+		transition: transform 0.2s ease;
+	}
+
+	.reader-progress-slide.active .reader-progress-trigger.active:after {
+		transform: translate(calc( var(--r-reader-progress-width) * -2), 0);
+		background-color: rgba(var(--r-overlay-element-bg-color), 1);
 	}
 	}
 }
 }
 
 

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/reveal.css


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/reveal.esm.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/reveal.esm.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/reveal.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/reveal.js.map


+ 10 - 2
js/controllers/reader.js

@@ -387,7 +387,7 @@ export default class Reader {
 		const scrollHeight = this.viewportElement.scrollHeight;
 		const scrollHeight = this.viewportElement.scrollHeight;
 
 
 		this.progressBarHeight = this.progressBarInner.offsetHeight;
 		this.progressBarHeight = this.progressBarInner.offsetHeight;
-		this.playheadHeight = Math.max( viewportHeight / scrollHeight * this.progressBarHeight, MIN_PLAYHEAD_HEIGHT );
+		this.playheadHeight = Math.max( this.pages[0].pageHeight / scrollHeight * this.progressBarHeight, MIN_PLAYHEAD_HEIGHT );
 		this.progressBarScrollableHeight = this.progressBarHeight - this.playheadHeight;
 		this.progressBarScrollableHeight = this.progressBarHeight - this.playheadHeight;
 
 
 		this.progressBarPlayhead.style.height = this.playheadHeight - PROGRESS_SPACING + 'px';
 		this.progressBarPlayhead.style.height = this.playheadHeight - PROGRESS_SPACING + 'px';
@@ -410,7 +410,7 @@ export default class Reader {
 				const scrollPaddingProgressHeight = page.scrollPadding / scrollHeight * this.progressBarHeight;
 				const scrollPaddingProgressHeight = page.scrollPadding / scrollHeight * this.progressBarHeight;
 
 
 				// Create visual representations for each scroll trigger
 				// Create visual representations for each scroll trigger
-				page.scrollTriggers.slice(1).forEach( trigger => {
+				page.scrollTriggerElements = page.scrollTriggers.map( ( trigger, i ) => {
 
 
 					const triggerElement = document.createElement( 'div' );
 					const triggerElement = document.createElement( 'div' );
 					triggerElement.className = 'reader-progress-trigger';
 					triggerElement.className = 'reader-progress-trigger';
@@ -418,6 +418,10 @@ export default class Reader {
 					triggerElement.style.height = ( trigger.range[1] - trigger.range[0] ) * scrollPaddingProgressHeight - PROGRESS_SPACING + 'px';
 					triggerElement.style.height = ( trigger.range[1] - trigger.range[0] ) * scrollPaddingProgressHeight - PROGRESS_SPACING + 'px';
 					page.progressBarSlide.appendChild( triggerElement );
 					page.progressBarSlide.appendChild( triggerElement );
 
 
+					if( i === 0 ) triggerElement.style.display = 'none';
+
+					return triggerElement;
+
 				} );
 				} );
 
 
 			} );
 			} );
@@ -446,6 +450,10 @@ export default class Reader {
 				.filter( page => page.progressBarSlide )
 				.filter( page => page.progressBarSlide )
 				.forEach( ( page ) => {
 				.forEach( ( page ) => {
 					page.progressBarSlide.classList.toggle( 'active', !!page.active );
 					page.progressBarSlide.classList.toggle( 'active', !!page.active );
+
+					page.scrollTriggers.forEach( ( trigger, i ) => {
+						page.scrollTriggerElements[i].classList.toggle( 'active', page.active && trigger.active );
+					} );
 				} );
 				} );
 
 
 			this.showProgressBar();
 			this.showProgressBar();

+ 6 - 1
js/reveal.js

@@ -915,6 +915,9 @@ export default function( revealElement, options ) {
 
 
 		if( dom.wrapper && !print.isActive() ) {
 		if( dom.wrapper && !print.isActive() ) {
 
 
+			const viewportWidth = dom.viewport.offsetWidth;
+			const viewportHeight = dom.viewport.offsetHeight;
+
 			if( !config.disableLayout ) {
 			if( !config.disableLayout ) {
 
 
 				// On some mobile devices '100vh' is taller than the visible
 				// On some mobile devices '100vh' is taller than the visible
@@ -928,7 +931,7 @@ export default function( revealElement, options ) {
 				}
 				}
 
 
 				const size = reader.isActive() ?
 				const size = reader.isActive() ?
-							 getComputedSlideSize( dom.viewport.offsetWidth, dom.viewport.offsetHeight ) :
+							 getComputedSlideSize( viewportWidth, viewportHeight ) :
 							 getComputedSlideSize();
 							 getComputedSlideSize();
 
 
 				const oldScale = scale;
 				const oldScale = scale;
@@ -1017,6 +1020,8 @@ export default function( revealElement, options ) {
 			}
 			}
 
 
 			dom.viewport.style.setProperty( '--slide-scale', scale );
 			dom.viewport.style.setProperty( '--slide-scale', scale );
+			dom.viewport.style.setProperty( '--viewport-width', viewportWidth + 'px' );
+			dom.viewport.style.setProperty( '--viewport-height', viewportHeight + 'px' );
 
 
 			reader.layout();
 			reader.layout();
 
 

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.