start work on logic for fitting an element to remaining slide height #244 #490 #561

This commit is contained in:
Hakim El Hattab 2013-08-16 09:31:13 -04:00
parent 2bed5833ca
commit fecee266b6
2 changed files with 59 additions and 2 deletions

View file

@ -722,6 +722,56 @@ 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
* siblings.
*
* remaining height = [parent height] - [ siblings height]
*/
function getRemainingHeight( element ) {
var height = 0;
if( element ) {
var parent = element.parentNode;
var siblings = parent.childNodes;
height = config.height;
// Remove 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 );
height -= sibling.offsetHeight + marginTop + marginBottom;
}
} );
}
return height;
}
/**
* Checks if this instance is being used to print a PDF.
*/
@ -1017,6 +1067,13 @@ 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';
} );
}
}

4
js/reveal.min.js vendored

File diff suppressed because one or more lines are too long