hornwitser.no/web/viewport.js

22 lines
792 B
JavaScript
Raw Normal View History

function setViewportOffset(viewport) {
// Calculate the distance from the top of the element to the center of the screen.
// This is an accurate rendering, but we might want to change it for artistic effects.
const windowHeight = window.innerHeight;
const rect = viewport.getBoundingClientRect();
if (rect.top > windowHeight || rect.bottom < 0) {
return;
}
const yOffset = windowHeight / 2 - rect.top;
viewport.style.setProperty('--y-offset', yOffset+"px");
}
const viewports = document.querySelectorAll(".viewport");
function updateViewports() {
for (const viewport of viewports) {
setViewportOffset(viewport);
}
}
window.addEventListener("scroll", updateViewports, { passive: true });
window.addEventListener("resize", updateViewports, { passive: true });
updateViewports();