@sect/100vh
Version:
Lightweight JS package for easy overcoming the problem with 100vh on mobile devices
2 lines (1 loc) • 2.15 kB
JavaScript
var e=/iPhone/i,i=/iPod/i,n=/iPad/i,t=/\biOS-universal(?:.+)Mac\b/i,o=/\bAndroid(?:.+)Mobile\b/i,r=/Android/i,a=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,d=/Silk/i,u=/Windows Phone/i,p=/\bWindows(?:.+)ARM\b/i,c=/BlackBerry/i,l=/BB10/i,s=/Opera Mini/i,b=/\b(CriOS|Chrome)(?:.+)Mobile/i,v=/Mobile(?:.+)Firefox\b/i,h=function(e){return void 0!==e&&"MacIntel"===e.platform&&"number"==typeof e.maxTouchPoints&&e.maxTouchPoints>1&&"undefined"==typeof MSStream};function f(f){var m={userAgent:"",platform:"",maxTouchPoints:0};f||"undefined"==typeof navigator?"string"==typeof f?m.userAgent=f:f&&f.userAgent&&(m={userAgent:f.userAgent,platform:f.platform,maxTouchPoints:f.maxTouchPoints||0}):m={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0};var w=m.userAgent,g=w.split("[FBAN");void 0!==g[1]&&(w=g[0]),void 0!==(g=w.split("Twitter"))[1]&&(w=g[0]);var y=function(e){return function(i){return i.test(e)}}(w),A={apple:{phone:y(e)&&!y(u),ipod:y(i),tablet:!y(e)&&(y(n)||h(m))&&!y(u),universal:y(t),device:(y(e)||y(i)||y(n)||y(t)||h(m))&&!y(u)},amazon:{phone:y(a),tablet:!y(a)&&y(d),device:y(a)||y(d)},android:{phone:!y(u)&&y(a)||!y(u)&&y(o),tablet:!y(u)&&!y(a)&&!y(o)&&(y(d)||y(r)),device:!y(u)&&(y(a)||y(d)||y(o)||y(r))||y(/\bokhttp\b/i)},windows:{phone:y(u),tablet:y(p),device:y(u)||y(p)},other:{blackberry:y(c),blackberry10:y(l),opera:y(s),firefox:y(v),chrome:y(b),device:y(c)||y(l)||y(s)||y(v)||y(b)},any:!1,phone:!1,tablet:!1};return A.any=A.apple.device||A.android.device||A.windows.device||A.other.device,A.phone=A.apple.phone||A.android.phone||A.windows.phone,A.tablet=A.apple.tablet||A.android.tablet||A.windows.tablet,A}var m=function(e){document.documentElement.style.setProperty("--vh",e+"px"),window.vh=e},w=function(e,i,n){requestAnimationFrame(function(){var t=n&&"orientationchange"===n.type,o=n&&"resize"===n.type;m(i),(!f().any||t||void 0===t)&&m(t?e:i),f().any&&!o&&void 0!==o||m(i)})};module.exports={init:function(){!function(e){function i(i){return e(window.innerWidth,window.innerHeight,i)}window.addEventListener("resize",i),window.addEventListener("orientationchange",i),i(e)}(w)}};