contain-element/contain-element.min.js

10 lines
1.9 KiB
JavaScript
Raw Normal View History

2015-06-30 16:15:49 -04:00
function containElement(options){var scaleFactor=1;var element=document.getElementById(options.id);var elementWidth=options.width?options.width:element.offsetWidth;var elementHeight=options.height?options.height:element.offsetHeight;if(element.style.position!='absolute')
element.style.position='absolute';if(element.parentElement.style.overflow!='hidden')
element.parentElement.style.overflow='hidden';if(element.parentElement.style.position!='relative'&&element.parentElement.style.position!='absolute'&&element.parentElement.style.position!='fixed')
element.parentElement.style.position='relative';function scaleElement(){var parentWidth=element.parentElement.offsetWidth;var parentHeight=element.parentElement.offsetHeight;if((parentWidth)&&(parentHeight)){if(parentWidth>((parentHeight/(elementHeight*scaleFactor))*(elementWidth*scaleFactor)))
scaleFactor=(parentWidth/elementWidth);else
scaleFactor=(parentHeight/elementHeight);element.style.width=(elementWidth*scaleFactor)+'px';element.style.height=(elementHeight*scaleFactor)+'px';if(parentWidth<(elementWidth*scaleFactor)){switch(options.halign){case'left':element.style.left=0+'px';break;case'right':element.style.left=(0-((elementWidth*scaleFactor)-parentWidth))+'px';break;default:element.style.left=(0-(((elementWidth*scaleFactor)-parentWidth)/2))+'px';}}else{element.style.left=0+'px';}
if((elementHeight*scaleFactor)>parentHeight){switch(options.valign){case'top':element.style.top=0+'px';break;case'bottom':element.style.top=(0-((elementHeight*scaleFactor)-parentHeight))+'px';break;default:element.style.top=(0-(((elementHeight*scaleFactor)-parentHeight)/2))+'px';}}else{element.style.top=0+'px';}}else{window.setTimeout(scaleElement,30);}}
scaleElement();window.onload=function(event){scaleElement();};window.onresize=function(event){scaleElement();};screen.addEventListener('orientationchange',function(){scaleElement();});}