100vh на мобильном: совместить код при событии resize

В записи на CSS-Tricks есть код для коррекции размера vh на мобильном с событием resize:

// First we get the viewport height and we multiple it by 1% to get a value for a vh unit
let vh = window.innerHeight * 0.01;
// Then we set the value in the --vh custom property to the root of the document
document.documentElement.style.setProperty('--vh', `${vh}px`);

// We listen to the resize event
window.addEventListener('resize', () => {
  // We execute the same script as before
  let vh = window.innerHeight * 0.01;
  document.documentElement.style.setProperty('--vh', `${vh}px`);
});

В комментариях пользователь описал проблему при использовании кода с resize – происходит скачок фонового изображения на первом экране при скролле страницы.

Там же есть код для решения этой проблемы:

var root = document.documentElement;
if (
    window.innerWidth > window.innerHeight ||
    Math.abs(this.lastHeight - window.innerHeight) > 100
) {
    root.style.setProperty(`--window-vh`, window.innerHeight + 'px');
    this.lastHeight = window.innerHeight;
}

По словам автора, как я понял, код обновляет vh только при значительном изменении высоты экрана устройства и предотвращает скачок.

Как совместить этот код с основным с resize?


Ответы (0 шт):