From 1ca8306e2adbc8f2a2e299db5ddebf3b421f3464 Mon Sep 17 00:00:00 2001 From: hakimel Date: Tue, 29 Jan 2013 18:59:36 -0500 Subject: [PATCH] rename padding config option to margin, better mobile support for scaled presentations (#310) --- index.html | 2 ++ js/reveal.js | 29 +++++++++++++++++------------ js/reveal.min.js | 4 ++-- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/index.html b/index.html index 24afca13..bc2f3601 100644 --- a/index.html +++ b/index.html @@ -12,6 +12,8 @@ + + diff --git a/js/reveal.js b/js/reveal.js index 2819608b..e3938f01 100644 --- a/js/reveal.js +++ b/js/reveal.js @@ -22,7 +22,7 @@ var Reveal = (function(){ width: 1024, height: 768, - padding: 0.1, + margin: 0.1, // Display controls in the bottom right corner controls: true, @@ -227,10 +227,6 @@ var Reveal = (function(){ function hideAddressBar() { if( navigator.userAgent.match( /(iphone|ipod)/i ) ) { - // Give the page some scrollable overflow - document.documentElement.style.overflow = 'scroll'; - document.body.style.height = '120%'; - // Events that should trigger the address bar to hide window.addEventListener( 'load', removeAddressBar, false ); window.addEventListener( 'orientationchange', removeAddressBar, false ); @@ -505,9 +501,18 @@ var Reveal = (function(){ */ function removeAddressBar() { + if( window.orientation === 0 ) { + document.documentElement.style.overflow = 'scroll'; + document.body.style.height = '120%'; + } + else { + document.documentElement.style.overflow = ''; + document.body.style.height = '100%'; + } + setTimeout( function() { window.scrollTo( 0, 1 ); - }, 0 ); + }, 10 ); } @@ -559,6 +564,10 @@ var Reveal = (function(){ var availableWidth = dom.wrapper.offsetWidth, availableHeight = dom.wrapper.offsetHeight; + // Reduce availabe space by margin + availableWidth -= ( availableHeight * config.margin ); + availableHeight -= ( availableHeight * config.margin ); + // Dimensions of the content var slideWidth = config.width, slideHeight = config.height; @@ -576,16 +585,12 @@ var Reveal = (function(){ dom.slides.style.width = slideWidth + 'px'; dom.slides.style.height = slideHeight + 'px'; - // Reduce availabe space by padding - availableWidth = availableWidth - ( availableHeight * config.padding * 2 ); - availableHeight = availableHeight - ( availableHeight * config.padding * 2 ); - // Determine scale of content to fit within available space var scale = Math.min( availableWidth / slideWidth, availableHeight / slideHeight ); - // Prefer applying scale via zoom since Chrome blurs scaled content + // Prefer applying scale via zoom since Chrome blurs scaled content // with nested transforms - if( typeof dom.slides.style.zoom !== 'undefined' ) { + if( typeof dom.slides.style.zoom !== 'undefined' && !navigator.userAgent.match( /(iphone|ipod|android)/gi ) ) { dom.slides.style.zoom = scale; } // Apply scale transform as a fallback diff --git a/js/reveal.min.js b/js/reveal.min.js index e704f527..f38d6659 100644 --- a/js/reveal.min.js +++ b/js/reveal.min.js @@ -1,8 +1,8 @@ /*! - * reveal.js 2.3 (2013-01-28, 18:56) + * reveal.js 2.3 (2013-01-29, 18:58) * http://lab.hakim.se/reveal-js * MIT licensed * * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se */ -var Reveal=function(){"use strict";function w(e){if(!p&&!h){document.body.setAttribute("class","no-transforms");return}window.addEventListener("load",H,!1),L(i,e),S(),x()}function E(){c.theme=document.querySelector("#theme"),c.wrapper=document.querySelector(".reveal"),c.slides=document.querySelector(".reveal .slides");if(!c.wrapper.querySelector(".progress")&&i.progress){var e=document.createElement("div");e.classList.add("progress"),e.innerHTML="",c.wrapper.appendChild(e)}if(!c.wrapper.querySelector(".controls")&&i.controls){var t=document.createElement("aside");t.classList.add("controls"),t.innerHTML='',c.wrapper.appendChild(t)}if(!c.wrapper.querySelector(".state-background")){var n=document.createElement("div");n.classList.add("state-background"),c.wrapper.appendChild(n)}if(!c.wrapper.querySelector(".pause-overlay")){var r=document.createElement("div");r.classList.add("pause-overlay"),c.wrapper.appendChild(r)}c.progress=document.querySelector(".reveal .progress"),c.progressbar=document.querySelector(".reveal .progress span"),i.controls&&(c.controls=document.querySelector(".reveal .controls"),c.controlsLeft=A(document.querySelectorAll(".navigate-left")),c.controlsRight=A(document.querySelectorAll(".navigate-right")),c.controlsUp=A(document.querySelectorAll(".navigate-up")),c.controlsDown=A(document.querySelectorAll(".navigate-down")),c.controlsPrev=A(document.querySelectorAll(".navigate-prev")),c.controlsNext=A(document.querySelectorAll(".navigate-next")))}function S(){navigator.userAgent.match(/(iphone|ipod)/i)&&(document.documentElement.style.overflow="scroll",document.body.style.height="120%",window.addEventListener("load",_,!1),window.addEventListener("orientationchange",_,!1))}function x(){function o(){t.length&&head.js.apply(null,t),T()}var e=[],t=[];for(var n=0,r=i.dependencies.length;n3?"none":"block"}n[o].classList.remove("past"),n[o].classList.remove("present"),n[o].classList.remove("future"),ot&&n[o].classList.add("future"),u.querySelector("section")&&n[o].classList.add("stack")}n[t].classList.add("present");var f=n[t].getAttribute("data-state");f&&(l=l.concat(f.split(" ")));var c=n[t].getAttribute("data-autoslide");c?s=parseInt(c,10):s=i.autoSlide}else t=0;return t}function K(){if(i.progress&&c.progress){var n=A(document.querySelectorAll(t)),r=document.querySelectorAll(e+":not(.stack)").length,s=0;e:for(var o=0;o0,right:o0,down:u0||u>0)t+=o;u>0&&(t+="/"+u)}window.location.hash=t}}}function et(e){var n=o,r=u;if(e){var i=!!e.parentNode.nodeName.match(/section/gi),s=i?e.parentNode:e,a=A(document.querySelectorAll(t));n=Math.max(a.indexOf(s),0),i&&(r=Math.max(A(e.parentNode.querySelectorAll("section")).indexOf(e),0))}return{h:n,v:r}}function tt(){if(document.querySelector(n+".present")){var e=document.querySelectorAll(n+".present .fragment:not(.visible)");if(e.length)return e[0].classList.add("visible"),D("fragmentshown",{fragment:e[0]}),!0}else{var r=document.querySelectorAll(t+".present .fragment:not(.visible)");if(r.length)return r[0].classList.add("visible"),D("fragmentshown",{fragment:r[0]}),!0}return!1}function nt(){if(document.querySelector(n+".present")){var e=document.querySelectorAll(n+".present .fragment.visible");if(e.length)return e[e.length-1].classList.remove("visible"),D("fragmenthidden",{fragment:e[e.length-1]}),!0}else{var r=document.querySelectorAll(t+".present .fragment.visible");if(r.length)return r[r.length-1].classList.remove("visible"),D("fragmenthidden",{fragment:r[r.length-1]}),!0}return!1}function rt(){clearTimeout(v),s&&(v=setTimeout(ft,s))}function it(){(G().left&&R()||nt()===!1)&&$(o-1)}function st(){(G().right&&R()||tt()===!1)&&$(o+1)}function ot(){(G().up&&R()||nt()===!1)&&$(o,u-1)}function ut(){(G().down&&R()||tt()===!1)&&$(o,u+1)}function at(){if(nt()===!1)if(G().up)ot();else{var e=document.querySelector(t+".past:nth-child("+o+")");e&&(u=e.querySelectorAll("section").length+1||undefined,o--,$())}}function ft(){tt()===!1&&(G().down?ut():st()),rt()}function lt(e){var t=document.activeElement,n=!(!document.activeElement||!document.activeElement.type&&!document.activeElement.href&&document.activeElement.contentEditable==="inherit");if(n||e.shiftKey||e.altKey||e.ctrlKey||e.metaKey)return;var r=!0;switch(e.keyCode){case 80:case 33:at();break;case 78:case 34:ft();break;case 72:case 37:it();break;case 76:case 39:st();break;case 75:case 38:ot();break;case 74:case 40:ut();break;case 36:$(0);break;case 35:$(Number.MAX_VALUE);break;case 32:R()?I():ft();break;case 13:R()?I():r=!1;break;case 66:case 190:case 191:X();break;case 70:U();break;default:r=!1}r?e.preventDefault():e.keyCode===27&&h&&(q(),e.preventDefault()),rt()}function ct(e){b.startX=e.touches[0].clientX,b.startY=e.touches[0].clientY,b.startCount=e.touches.length,e.touches.length===2&&i.overview&&(b.startSpan=O({x:e.touches[1].clientX,y:e.touches[1].clientY},{x:b.startX,y:b.startY}))}function ht(e){if(!b.handled){var t=e.touches[0].clientX,n=e.touches[0].clientY;if(e.touches.length===2&&b.startCount===2&&i.overview){var r=O({x:e.touches[1].clientX,y:e.touches[1].clientY},{x:b.startX,y:b.startY});Math.abs(b.startSpan-r)>b.threshold&&(b.handled=!0,rb.threshold&&Math.abs(s)>Math.abs(o)?(b.handled=!0,it()):s<-b.threshold&&Math.abs(s)>Math.abs(o)?(b.handled=!0,st()):o>b.threshold?(b.handled=!0,ot()):o<-b.threshold&&(b.handled=!0,ut()),e.preventDefault()}}else navigator.userAgent.match(/android/gi)&&e.preventDefault()}function pt(e){b.handled=!1}function dt(e){clearTimeout(d),d=setTimeout(function(){var t=e.detail||-e.wheelDelta;t>0?ft():at()},100)}function vt(e){var n=A(document.querySelectorAll(t)).length,r=Math.floor(e.clientX/c.wrapper.offsetWidth*n);$(r)}function mt(e){Y()}function gt(e){H()}function yt(e){if(R()){e.preventDefault(),I();var t=e.target;while(t&&!t.nodeName.match(/section/gi))t=t.parentNode;if(t.nodeName.match(/section/gi)){var n=parseInt(t.getAttribute("data-index-h"),10),r=parseInt(t.getAttribute("data-index-v"),10);$(n,r)}}}var e=".reveal .slides section",t=".reveal .slides>section",n=".reveal .slides>section.present>section",r=".reveal .slides>section:first-child",i={width:1024,height:768,padding:.1,controls:!0,progress:!0,history:!1,keyboard:!0,overview:!0,center:!0,touch:!0,loop:!1,rtl:!1,autoSlide:0,mouseWheel:!1,rollingLinks:!0,theme:null,transition:"default",dependencies:[]},s=i.autoSlide,o=0,u=0,a,f,l=[],c={},h="WebkitPerspective"in document.body.style||"MozPerspective"in document.body.style||"msPerspective"in document.body.style||"OPerspective"in document.body.style||"perspective"in document.body.style,p="WebkitTransform"in document.body.style||"MozTransform"in document.body.style||"msTransform"in document.body.style||"OTransform"in document.body.style||"transform"in document.body.style,d=0,v=0,m=0,g=0,y=0,b={startX:0,startY:0,startSpan:0,startCount:0,handled:!1,threshold:80};return{initialize:w,slide:$,left:it,right:st,up:ot,down:ut,prev:at,next:ft,prevFragment:nt,nextFragment:tt,navigateTo:$,navigateLeft:it,navigateRight:st,navigateUp:ot,navigateDown:ut,navigatePrev:at,navigateNext:ft,layout:H,toggleOverview:q,togglePause:X,addEventListeners:C,removeEventListeners:k,getIndices:et,getPreviousSlide:function(){return a},getCurrentSlide:function(){return f},getQueryHash:function(){var e={};return location.search.replace(/[A-Z0-9]+?=(\w*)/gi,function(t){e[t.split("=").shift()]=t.split("=").pop()}),e},addEventListener:function(e,t,n){"addEventListener"in window&&(c.wrapper||document.querySelector(".reveal")).addEventListener(e,t,n)},removeEventListener:function(e,t,n){"addEventListener"in window&&(c.wrapper||document.querySelector(".reveal")).removeEventListener(e,t,n)}}}(); \ No newline at end of file +var Reveal=function(){"use strict";function w(e){if(!p&&!h){document.body.setAttribute("class","no-transforms");return}window.addEventListener("load",H,!1),L(i,e),S(),x()}function E(){c.theme=document.querySelector("#theme"),c.wrapper=document.querySelector(".reveal"),c.slides=document.querySelector(".reveal .slides");if(!c.wrapper.querySelector(".progress")&&i.progress){var e=document.createElement("div");e.classList.add("progress"),e.innerHTML="",c.wrapper.appendChild(e)}if(!c.wrapper.querySelector(".controls")&&i.controls){var t=document.createElement("aside");t.classList.add("controls"),t.innerHTML='',c.wrapper.appendChild(t)}if(!c.wrapper.querySelector(".state-background")){var n=document.createElement("div");n.classList.add("state-background"),c.wrapper.appendChild(n)}if(!c.wrapper.querySelector(".pause-overlay")){var r=document.createElement("div");r.classList.add("pause-overlay"),c.wrapper.appendChild(r)}c.progress=document.querySelector(".reveal .progress"),c.progressbar=document.querySelector(".reveal .progress span"),i.controls&&(c.controls=document.querySelector(".reveal .controls"),c.controlsLeft=A(document.querySelectorAll(".navigate-left")),c.controlsRight=A(document.querySelectorAll(".navigate-right")),c.controlsUp=A(document.querySelectorAll(".navigate-up")),c.controlsDown=A(document.querySelectorAll(".navigate-down")),c.controlsPrev=A(document.querySelectorAll(".navigate-prev")),c.controlsNext=A(document.querySelectorAll(".navigate-next")))}function S(){navigator.userAgent.match(/(iphone|ipod)/i)&&(window.addEventListener("load",_,!1),window.addEventListener("orientationchange",_,!1))}function x(){function o(){t.length&&head.js.apply(null,t),T()}var e=[],t=[];for(var n=0,r=i.dependencies.length;n3?"none":"block"}n[o].classList.remove("past"),n[o].classList.remove("present"),n[o].classList.remove("future"),ot&&n[o].classList.add("future"),u.querySelector("section")&&n[o].classList.add("stack")}n[t].classList.add("present");var f=n[t].getAttribute("data-state");f&&(l=l.concat(f.split(" ")));var c=n[t].getAttribute("data-autoslide");c?s=parseInt(c,10):s=i.autoSlide}else t=0;return t}function K(){if(i.progress&&c.progress){var n=A(document.querySelectorAll(t)),r=document.querySelectorAll(e+":not(.stack)").length,s=0;e:for(var o=0;o0,right:o0,down:u0||u>0)t+=o;u>0&&(t+="/"+u)}window.location.hash=t}}}function et(e){var n=o,r=u;if(e){var i=!!e.parentNode.nodeName.match(/section/gi),s=i?e.parentNode:e,a=A(document.querySelectorAll(t));n=Math.max(a.indexOf(s),0),i&&(r=Math.max(A(e.parentNode.querySelectorAll("section")).indexOf(e),0))}return{h:n,v:r}}function tt(){if(document.querySelector(n+".present")){var e=document.querySelectorAll(n+".present .fragment:not(.visible)");if(e.length)return e[0].classList.add("visible"),D("fragmentshown",{fragment:e[0]}),!0}else{var r=document.querySelectorAll(t+".present .fragment:not(.visible)");if(r.length)return r[0].classList.add("visible"),D("fragmentshown",{fragment:r[0]}),!0}return!1}function nt(){if(document.querySelector(n+".present")){var e=document.querySelectorAll(n+".present .fragment.visible");if(e.length)return e[e.length-1].classList.remove("visible"),D("fragmenthidden",{fragment:e[e.length-1]}),!0}else{var r=document.querySelectorAll(t+".present .fragment.visible");if(r.length)return r[r.length-1].classList.remove("visible"),D("fragmenthidden",{fragment:r[r.length-1]}),!0}return!1}function rt(){clearTimeout(v),s&&(v=setTimeout(ft,s))}function it(){(G().left&&R()||nt()===!1)&&$(o-1)}function st(){(G().right&&R()||tt()===!1)&&$(o+1)}function ot(){(G().up&&R()||nt()===!1)&&$(o,u-1)}function ut(){(G().down&&R()||tt()===!1)&&$(o,u+1)}function at(){if(nt()===!1)if(G().up)ot();else{var e=document.querySelector(t+".past:nth-child("+o+")");e&&(u=e.querySelectorAll("section").length+1||undefined,o--,$())}}function ft(){tt()===!1&&(G().down?ut():st()),rt()}function lt(e){var t=document.activeElement,n=!(!document.activeElement||!document.activeElement.type&&!document.activeElement.href&&document.activeElement.contentEditable==="inherit");if(n||e.shiftKey||e.altKey||e.ctrlKey||e.metaKey)return;var r=!0;switch(e.keyCode){case 80:case 33:at();break;case 78:case 34:ft();break;case 72:case 37:it();break;case 76:case 39:st();break;case 75:case 38:ot();break;case 74:case 40:ut();break;case 36:$(0);break;case 35:$(Number.MAX_VALUE);break;case 32:R()?I():ft();break;case 13:R()?I():r=!1;break;case 66:case 190:case 191:X();break;case 70:U();break;default:r=!1}r?e.preventDefault():e.keyCode===27&&h&&(q(),e.preventDefault()),rt()}function ct(e){b.startX=e.touches[0].clientX,b.startY=e.touches[0].clientY,b.startCount=e.touches.length,e.touches.length===2&&i.overview&&(b.startSpan=O({x:e.touches[1].clientX,y:e.touches[1].clientY},{x:b.startX,y:b.startY}))}function ht(e){if(!b.handled){var t=e.touches[0].clientX,n=e.touches[0].clientY;if(e.touches.length===2&&b.startCount===2&&i.overview){var r=O({x:e.touches[1].clientX,y:e.touches[1].clientY},{x:b.startX,y:b.startY});Math.abs(b.startSpan-r)>b.threshold&&(b.handled=!0,rb.threshold&&Math.abs(s)>Math.abs(o)?(b.handled=!0,it()):s<-b.threshold&&Math.abs(s)>Math.abs(o)?(b.handled=!0,st()):o>b.threshold?(b.handled=!0,ot()):o<-b.threshold&&(b.handled=!0,ut()),e.preventDefault()}}else navigator.userAgent.match(/android/gi)&&e.preventDefault()}function pt(e){b.handled=!1}function dt(e){clearTimeout(d),d=setTimeout(function(){var t=e.detail||-e.wheelDelta;t>0?ft():at()},100)}function vt(e){var n=A(document.querySelectorAll(t)).length,r=Math.floor(e.clientX/c.wrapper.offsetWidth*n);$(r)}function mt(e){Y()}function gt(e){H()}function yt(e){if(R()){e.preventDefault(),I();var t=e.target;while(t&&!t.nodeName.match(/section/gi))t=t.parentNode;if(t.nodeName.match(/section/gi)){var n=parseInt(t.getAttribute("data-index-h"),10),r=parseInt(t.getAttribute("data-index-v"),10);$(n,r)}}}var e=".reveal .slides section",t=".reveal .slides>section",n=".reveal .slides>section.present>section",r=".reveal .slides>section:first-child",i={width:1024,height:768,margin:.1,controls:!0,progress:!0,history:!1,keyboard:!0,overview:!0,center:!0,touch:!0,loop:!1,rtl:!1,autoSlide:0,mouseWheel:!1,rollingLinks:!0,theme:null,transition:"default",dependencies:[]},s=i.autoSlide,o=0,u=0,a,f,l=[],c={},h="WebkitPerspective"in document.body.style||"MozPerspective"in document.body.style||"msPerspective"in document.body.style||"OPerspective"in document.body.style||"perspective"in document.body.style,p="WebkitTransform"in document.body.style||"MozTransform"in document.body.style||"msTransform"in document.body.style||"OTransform"in document.body.style||"transform"in document.body.style,d=0,v=0,m=0,g=0,y=0,b={startX:0,startY:0,startSpan:0,startCount:0,handled:!1,threshold:80};return{initialize:w,slide:$,left:it,right:st,up:ot,down:ut,prev:at,next:ft,prevFragment:nt,nextFragment:tt,navigateTo:$,navigateLeft:it,navigateRight:st,navigateUp:ot,navigateDown:ut,navigatePrev:at,navigateNext:ft,layout:H,toggleOverview:q,togglePause:X,addEventListeners:C,removeEventListeners:k,getIndices:et,getPreviousSlide:function(){return a},getCurrentSlide:function(){return f},getQueryHash:function(){var e={};return location.search.replace(/[A-Z0-9]+?=(\w*)/gi,function(t){e[t.split("=").shift()]=t.split("=").pop()}),e},addEventListener:function(e,t,n){"addEventListener"in window&&(c.wrapper||document.querySelector(".reveal")).addEventListener(e,t,n)},removeEventListener:function(e,t,n){"addEventListener"in window&&(c.wrapper||document.querySelector(".reveal")).removeEventListener(e,t,n)}}}(); \ No newline at end of file