Static Polyfill for vw, vh and vm Units
/*
Polyfill for the vw, vh, vm units
Requires StyleFix from -prefix-free http://leaverou.github.com/prefixfree/
@author Lea Verou
*/
(function() {
if(!window.StyleFix) {
return;
}
// Feature test
var dummy = document.createElement('_').style,
units = ['vw', 'vh', 'vm'].filter(function(unit) {
dummy.width = '';
dummy.width = '10' + unit;
return !dummy.width;
});
if(!units.length) {
return;
}
StyleFix.register(function(css) {
var w = innerWidth, h = innerHeight, m = Math.min(w,h);
return css.replace(RegExp('\\b(\\d+)(' + units.join('|') + ')\\b', 'gi'), function($0, num, unit) {
switch (unit) {
case 'vw':
return (num * w / 100) + 'px';
case 'vh':
return num * h / 100 + 'px';
case 'vm':
return num * m / 100 + 'px';
}
});
});
})();