mirror of
https://github.com/TheRealOwenRees/echecsfrance.git
synced 2026-07-23 04:26:57 +00:00
Add a polyfil for dynamic viewport heights on older devices
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
export const useDynamicViewportUnits = () => {
|
||||
const setVh = function () {
|
||||
var svh = document.documentElement.clientHeight * 0.01;
|
||||
document.documentElement.style.setProperty('--1svh', (svh + "px"));
|
||||
var dvh = window.innerHeight * 0.01;
|
||||
document.documentElement.style.setProperty('--1dvh', (dvh + "px"));
|
||||
};
|
||||
|
||||
const isMobile = function() {
|
||||
if(/Android|iPhone|iPad|iPod/i.test(navigator.userAgent) || (navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// SSR support
|
||||
if (typeof window === 'undefined') {
|
||||
return;
|
||||
}
|
||||
|
||||
// Don't run polyfill if browser supports the units natively
|
||||
if ('CSS' in window &&
|
||||
'supports' in window.CSS &&
|
||||
window.CSS.supports('height: 100svh') &&
|
||||
window.CSS.supports('height: 100dvh') &&
|
||||
window.CSS.supports('height: 100lvh')
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Don't run on desktop browsers
|
||||
if (!isMobile) {
|
||||
return;
|
||||
}
|
||||
|
||||
window.addEventListener('resize', setVh);
|
||||
setVh();
|
||||
|
||||
return () => {
|
||||
window.removeEventListener('resize', setVh);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user