further work on remaining-height helper #244 #490 #561

This commit is contained in:
Hakim El Hattab committed 2013-08-17 12:11:05 -04:00
1 parent fecee266b6
commit 0239302f45
2 files changed
+26 -33

No files matched your search

+24 -31
View File
@@ -722,43 +722,29 @@ var Reveal = (function(){
}
function getComputedCSSProperty( element, prop ) {
if( window.getComputedStyle ) {
return window.getComputedStyle( element )[ prop ];
}
else {
return element.currentStyle ? element.currentStyle( prop ) : element.style[ prop ];
}
}
/**
* Returns the remaining height within the parent element
* of the target after taking out the height of all
* Returns the remaining height within the parent of the
* target element after subtracting the height of all
* siblings.
*
* remaining height = [parent height] - [ siblings height]
*/
function getRemainingHeight( element ) {
function getRemainingHeight( element, height ) {
var height = 0;
height = height || 0;
if( element ) {
var parent = element.parentNode;
var siblings = parent.childNodes;
height = config.height;
// Remove the height of each sibling
// Subtract the height of each sibling
toArray( siblings ).forEach( function( sibling ) {
if( typeof sibling.offsetHeight === 'number' && sibling !== element ) {
var marginTop = parseInt( getComputedCSSProperty( sibling, 'margin-top' ), 10 );
var marginBottom = parseInt( getComputedCSSProperty( sibling, 'margin-bottom' ), 10 );
console.log( marginTop, marginBottom );
var styles = window.getComputedStyle( sibling ),
marginTop = parseInt( styles[ 'margin-top' ], 10 ),
marginBottom = parseInt( styles[ 'margin-bottom' ], 10 );
height -= sibling.offsetHeight + marginTop + marginBottom;
@@ -766,6 +752,12 @@ var Reveal = (function(){
} );
var elementStyles = window.getComputedStyle( element );
// Subtract the margins of the target element
height -= parseInt( elementStyles[ 'margin-top' ], 10 ) +
parseInt( elementStyles[ 'margin-bottom' ], 10 );
}
return height;
@@ -1006,7 +998,8 @@ var Reveal = (function(){
// Dimensions of the content
var slideWidth = config.width,
slideHeight = config.height;
slideHeight = config.height,
slidePadding = 20; // TODO Dig this out of DOM
// Slide width may be a percentage of available width
if( typeof slideWidth === 'string' && /%$/.test( slideWidth ) ) {
@@ -1021,6 +1014,13 @@ var Reveal = (function(){
dom.slides.style.width = slideWidth + 'px';
dom.slides.style.height = slideHeight + 'px';
// Handle sizing of elements with the 'remaining-height' class
toArray( dom.slides.querySelectorAll( 'section > .remaining-height' ) ).forEach( function( element ) {
element.style.height = getRemainingHeight( element, ( slideHeight - ( slidePadding * 2 ) ) ) + 'px';
} );
// Determine scale of content to fit within available space
scale = Math.min( availableWidth / slideWidth, availableHeight / slideHeight );
@@ -1056,7 +1056,7 @@ var Reveal = (function(){
slide.style.top = 0;
}
else {
slide.style.top = Math.max( - ( getAbsoluteHeight( slide ) / 2 ) - 20, -slideHeight / 2 ) + 'px';
slide.style.top = Math.max( - ( getAbsoluteHeight( slide ) / 2 ) - slidePadding, -slideHeight / 2 ) + 'px';
}
}
else {
@@ -1067,13 +1067,6 @@ var Reveal = (function(){
updateProgress();
// Handle sizing of elements with the 'remaining-height' class
toArray( dom.slides.querySelectorAll( 'section > .remaining-height' ) ).forEach( function( element ) {
element.style.height = getRemainingHeight( element ) + 'px';
} );
}
}
+2 -2
View File
@@ -1,8 +1,8 @@
/*!
* reveal.js 2.5.0 (2013-08-16, 09:29)
* reveal.js 2.5.0 (2013-08-17, 12:10)
* http://lab.hakim.se/reveal-js
* MIT licensed
*
* Copyright (C) 2013 Hakim El Hattab, http://hakim.se
*/
var Reveal=function(){"use strict";function e(e){return t(),Ht||It?(window.addEventListener("load",M,!1),d(Wt,e),b(),n(),void 0):(document.body.setAttribute("class","no-transforms"),void 0)}function t(){It="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,Ht="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,Yt=navigator.userAgent.match(/(iphone|ipod|android)/gi)}function n(){function e(){n.length&&head.js.apply(null,n),r()}for(var t=[],n=[],o=0,a=Wt.dependencies.length;a>o;o++){var i=Wt.dependencies[o];(!i.condition||i.condition())&&(i.async?n.push(i.src):t.push(i.src),"function"==typeof i.callback&&head.ready(i.src.match(/([\w\d_\-]*)\.?js$|[^\\\/]*$/i)[0],i.callback))}t.length?(head.ready(e),head.js.apply(null,t)):e()}function r(){a(),o(),c(),J(),setTimeout(function(){$t.slides.classList.remove("no-transition"),jt=!0,L("ready",{indexh:Pt,indexv:Dt,currentSlide:Rt})},1)}function o(){var e=f(document.querySelectorAll(Ot));e.forEach(function(e){var t=f(e.querySelectorAll("section"));t.forEach(function(e,t){t>0&&e.classList.add("future")})})}function a(){$t.theme=document.querySelector("#theme"),$t.wrapper=document.querySelector(".reveal"),$t.slides=document.querySelector(".reveal .slides"),$t.slides.classList.add("no-transition"),$t.background=i($t.wrapper,"div","backgrounds",null),$t.progress=i($t.wrapper,"div","progress","<span></span>"),$t.progressbar=$t.progress.querySelector("span"),i($t.wrapper,"aside","controls",'<div class="navigate-left"></div><div class="navigate-right"></div><div class="navigate-up"></div><div class="navigate-down"></div>'),i($t.wrapper,"div","state-background",null),i($t.wrapper,"div","pause-overlay",null),Wt.controls&&($t.controls=document.querySelector(".reveal .controls"),$t.controlsLeft=f(document.querySelectorAll(".navigate-left")),$t.controlsRight=f(document.querySelectorAll(".navigate-right")),$t.controlsUp=f(document.querySelectorAll(".navigate-up")),$t.controlsDown=f(document.querySelectorAll(".navigate-down")),$t.controlsPrev=f(document.querySelectorAll(".navigate-prev")),$t.controlsNext=f(document.querySelectorAll(".navigate-next")))}function i(e,t,n,r){var o=e.querySelector("."+n);return o||(o=document.createElement(t),o.classList.add(n),null!==r&&(o.innerHTML=r),e.appendChild(o)),o}function s(){function e(e,t){var n={background:e.getAttribute("data-background"),backgroundSize:e.getAttribute("data-background-size"),backgroundImage:e.getAttribute("data-background-image"),backgroundColor:e.getAttribute("data-background-color"),backgroundRepeat:e.getAttribute("data-background-repeat"),backgroundPosition:e.getAttribute("data-background-position"),backgroundTransition:e.getAttribute("data-background-transition")},r=document.createElement("div");return r.className="slide-background",n.background&&(/^(http|file|\/\/)/gi.test(n.background)||/\.(png|jpg|jpeg|gif|bmp)$/gi.test(n.background)?r.style.backgroundImage="url("+n.background+")":r.style.background=n.background),n.backgroundSize&&(r.style.backgroundSize=n.backgroundSize),n.backgroundImage&&(r.style.backgroundImage='url("'+n.backgroundImage+'")'),n.backgroundColor&&(r.style.backgroundColor=n.backgroundColor),n.backgroundRepeat&&(r.style.backgroundRepeat=n.backgroundRepeat),n.backgroundPosition&&(r.style.backgroundPosition=n.backgroundPosition),n.backgroundTransition&&r.setAttribute("data-background-transition",n.backgroundTransition),t.appendChild(r),r}y()&&document.body.classList.add("print-pdf"),$t.background.innerHTML="",$t.background.classList.add("no-transition"),f(document.querySelectorAll(Ot)).forEach(function(t){var n;n=y()?e(t,t):e(t,$t.background),f(t.querySelectorAll("section")).forEach(function(t){y()?e(t,t):e(t,n)})})}function c(e){if($t.wrapper.classList.remove(Wt.transition),"object"==typeof e&&d(Wt,e),It===!1&&(Wt.transition="linear"),$t.wrapper.classList.add(Wt.transition),$t.wrapper.setAttribute("data-transition-speed",Wt.transitionSpeed),$t.wrapper.setAttribute("data-background-transition",Wt.backgroundTransition),$t.controls&&($t.controls.style.display=Wt.controls&&$t.controls?"block":"none"),$t.progress&&($t.progress.style.display=Wt.progress&&$t.progress?"block":"none"),Wt.rtl?$t.wrapper.classList.add("rtl"):$t.wrapper.classList.remove("rtl"),Wt.center?$t.wrapper.classList.add("center"):$t.wrapper.classList.remove("center"),Wt.mouseWheel?(document.addEventListener("DOMMouseScroll",bt,!1),document.addEventListener("mousewheel",bt,!1)):(document.removeEventListener("DOMMouseScroll",bt,!1),document.removeEventListener("mousewheel",bt,!1)),Wt.rollingLinks?E():k(),Wt.previewLinks?S():(A(),S("[data-preview-link]")),Wt.theme&&$t.theme){var t=$t.theme.getAttribute("href"),n=/[^\/]*?(?=\.css)/,r=t.match(n)[0];Wt.theme!==r&&(t=t.reLine truncated
var Reveal=function(){"use strict";function e(e){return t(),Rt||It?(window.addEventListener("load",T,!1),d(Ut,e),y(),n(),void 0):(document.body.setAttribute("class","no-transforms"),void 0)}function t(){It="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,Rt="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,Ht=navigator.userAgent.match(/(iphone|ipod|android)/gi)}function n(){function e(){n.length&&head.js.apply(null,n),r()}for(var t=[],n=[],o=0,a=Ut.dependencies.length;a>o;o++){var i=Ut.dependencies[o];(!i.condition||i.condition())&&(i.async?n.push(i.src):t.push(i.src),"function"==typeof i.callback&&head.ready(i.src.match(/([\w\d_\-]*)\.?js$|[^\\\/]*$/i)[0],i.callback))}t.length?(head.ready(e),head.js.apply(null,t)):e()}function r(){a(),o(),c(),G(),setTimeout(function(){Kt.slides.classList.remove("no-transition"),Wt=!0,w("ready",{indexh:Nt,indexv:Pt,currentSlide:Ct})},1)}function o(){var e=f(document.querySelectorAll(Xt));e.forEach(function(e){var t=f(e.querySelectorAll("section"));t.forEach(function(e,t){t>0&&e.classList.add("future")})})}function a(){Kt.theme=document.querySelector("#theme"),Kt.wrapper=document.querySelector(".reveal"),Kt.slides=document.querySelector(".reveal .slides"),Kt.slides.classList.add("no-transition"),Kt.background=i(Kt.wrapper,"div","backgrounds",null),Kt.progress=i(Kt.wrapper,"div","progress","<span></span>"),Kt.progressbar=Kt.progress.querySelector("span"),i(Kt.wrapper,"aside","controls",'<div class="navigate-left"></div><div class="navigate-right"></div><div class="navigate-up"></div><div class="navigate-down"></div>'),i(Kt.wrapper,"div","state-background",null),i(Kt.wrapper,"div","pause-overlay",null),Ut.controls&&(Kt.controls=document.querySelector(".reveal .controls"),Kt.controlsLeft=f(document.querySelectorAll(".navigate-left")),Kt.controlsRight=f(document.querySelectorAll(".navigate-right")),Kt.controlsUp=f(document.querySelectorAll(".navigate-up")),Kt.controlsDown=f(document.querySelectorAll(".navigate-down")),Kt.controlsPrev=f(document.querySelectorAll(".navigate-prev")),Kt.controlsNext=f(document.querySelectorAll(".navigate-next")))}function i(e,t,n,r){var o=e.querySelector("."+n);return o||(o=document.createElement(t),o.classList.add(n),null!==r&&(o.innerHTML=r),e.appendChild(o)),o}function s(){function e(e,t){var n={background:e.getAttribute("data-background"),backgroundSize:e.getAttribute("data-background-size"),backgroundImage:e.getAttribute("data-background-image"),backgroundColor:e.getAttribute("data-background-color"),backgroundRepeat:e.getAttribute("data-background-repeat"),backgroundPosition:e.getAttribute("data-background-position"),backgroundTransition:e.getAttribute("data-background-transition")},r=document.createElement("div");return r.className="slide-background",n.background&&(/^(http|file|\/\/)/gi.test(n.background)||/\.(png|jpg|jpeg|gif|bmp)$/gi.test(n.background)?r.style.backgroundImage="url("+n.background+")":r.style.background=n.background),n.backgroundSize&&(r.style.backgroundSize=n.backgroundSize),n.backgroundImage&&(r.style.backgroundImage='url("'+n.backgroundImage+'")'),n.backgroundColor&&(r.style.backgroundColor=n.backgroundColor),n.backgroundRepeat&&(r.style.backgroundRepeat=n.backgroundRepeat),n.backgroundPosition&&(r.style.backgroundPosition=n.backgroundPosition),n.backgroundTransition&&r.setAttribute("data-background-transition",n.backgroundTransition),t.appendChild(r),r}h()&&document.body.classList.add("print-pdf"),Kt.background.innerHTML="",Kt.background.classList.add("no-transition"),f(document.querySelectorAll(Xt)).forEach(function(t){var n;n=h()?e(t,t):e(t,Kt.background),f(t.querySelectorAll("section")).forEach(function(t){h()?e(t,t):e(t,n)})})}function c(e){if(Kt.wrapper.classList.remove(Ut.transition),"object"==typeof e&&d(Ut,e),It===!1&&(Ut.transition="linear"),Kt.wrapper.classList.add(Ut.transition),Kt.wrapper.setAttribute("data-transition-speed",Ut.transitionSpeed),Kt.wrapper.setAttribute("data-background-transition",Ut.backgroundTransition),Kt.controls&&(Kt.controls.style.display=Ut.controls&&Kt.controls?"block":"none"),Kt.progress&&(Kt.progress.style.display=Ut.progress&&Kt.progress?"block":"none"),Ut.rtl?Kt.wrapper.classList.add("rtl"):Kt.wrapper.classList.remove("rtl"),Ut.center?Kt.wrapper.classList.add("center"):Kt.wrapper.classList.remove("center"),Ut.mouseWheel?(document.addEventListener("DOMMouseScroll",yt,!1),document.addEventListener("mousewheel",yt,!1)):(document.removeEventListener("DOMMouseScroll",yt,!1),document.removeEventListener("mousewheel",yt,!1)),Ut.rollingLinks?L():E(),Ut.previewLinks?k():(S(),k("[data-preview-link]")),Ut.theme&&Kt.theme){var t=Kt.theme.getAttribute("href"),n=/[^\/]*?(?=\.css)/,r=t.match(n)[0];Ut.theme!==r&&(t=t.reLine truncated