parallax ornements + modifs d'après kanboard
This commit is contained in:
@@ -128,6 +128,117 @@
|
||||
let socialsContainer = document.createElement('li');
|
||||
socialsContainer.append(socialsClone);
|
||||
menuContainer.append(socialsContainer);
|
||||
|
||||
//
|
||||
// Effets parallax
|
||||
//
|
||||
let ornements, scrollHeight;
|
||||
function getElementsAndPositions() {
|
||||
scrollHeight = document.body.scrollHeight;
|
||||
ornements = {
|
||||
topUnderFirst : {
|
||||
el : document.querySelector('.ornements_top_under > div:first-of-type'),
|
||||
values : window.innerWidth < 1080 ? { left : -45, top : -3 } : { left : -50, top : 1 },
|
||||
mobileValues : { left : -45, top : -3 }
|
||||
},
|
||||
topUnderSecond : {
|
||||
el : document.querySelector('.ornements_top_under > div:last-of-type'),
|
||||
values : window.innerWidth < 1080 ? { left : -60, top : 0 } : { left : -56.5, top : 6 },
|
||||
mobileValues : { left : -60, top : 0 }
|
||||
},
|
||||
topOver : {
|
||||
el : document.querySelector('.ornements_top_over'),
|
||||
values : { left : -40, top : -16 },
|
||||
mobileValues : { right : -55, top : -5 }
|
||||
},
|
||||
bottomFirst : {
|
||||
el : document.querySelector('.ornements_bottom_over > div:first-of-type'),
|
||||
values : window.innerWidth < 1080 ? { left : -8, bottom : -4 } : { left : -20, bottom : 6 },
|
||||
mobileValues : { left : -8, bottom : -4 }
|
||||
},
|
||||
bottomSecond : {
|
||||
el : document.querySelector('.ornements_bottom_over > div:last-of-type'),
|
||||
values : window.innerWidth < 1080 ? { left : 18, bottom : -11 } : { left : 25, bottom : -9 },
|
||||
mobileValues : { left : -3, bottom : -15 }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function moveElementsOnScroll() {
|
||||
ornements.topOver.el.style.left = `${ornements.topOver.values.left * (window.innerWidth / 100) - window.scrollY / 4}px`;
|
||||
ornements.topOver.el.style.top = `${ornements.topOver.values.top * (window.innerHeight / 100) + window.scrollY / 1.1}px`;
|
||||
|
||||
ornements.topUnderFirst.el.style.left = `${ornements.topUnderFirst.values.left * (window.innerWidth / 100) - window.scrollY / 5}px`;
|
||||
ornements.topUnderFirst.el.style.top = `${ornements.topUnderFirst.values.top * (window.innerHeight / 100) + window.scrollY / 1.3}px`;
|
||||
|
||||
ornements.topUnderSecond.el.style.left = `${ornements.topUnderSecond.values.left * (window.innerWidth / 100) - window.scrollY / 8}px`;
|
||||
ornements.topUnderSecond.el.style.top = `${ornements.topUnderSecond.values.top * (window.innerHeight / 100) + window.scrollY / 1.2}px`;
|
||||
|
||||
ornements.bottomFirst.el.style.right = `${ornements.bottomFirst.values.left * (window.innerWidth / 100) - ((scrollHeight - (window.scrollY + window.innerHeight)) / 5)}px`;
|
||||
|
||||
ornements.bottomSecond.el.style.top = `${ornements.bottomFirst.values.bottom * (window.innerHeight / 100) + ((scrollHeight - (window.scrollY + window.innerHeight)) / 2)}px`;
|
||||
}
|
||||
|
||||
function resetElementsPosition() {
|
||||
ornements.topUnderFirst.el.style.left = `${ornements.topUnderFirst.values.left}vw`;
|
||||
ornements.topUnderFirst.el.style.top = `${ornements.topUnderFirst.values.top}vh`;
|
||||
|
||||
ornements.topUnderSecond.el.style.left = `${ornements.topUnderSecond.values.left}vw`;
|
||||
ornements.topUnderSecond.el.style.top = `${ornements.topUnderSecond.values.top}vh`;
|
||||
|
||||
ornements.topOver.el.style.left = `${ornements.topOver.values.left}vw`;
|
||||
ornements.topOver.el.style.top = `${ornements.topOver.values.top}vh`;
|
||||
|
||||
ornements.bottomFirst.el.style.left = "unset",
|
||||
ornements.bottomFirst.el.style.right = `${ornements.bottomFirst.values.left}vw`;
|
||||
ornements.bottomFirst.el.style.bottom = `${ornements.bottomFirst.values.bottom}vh`;
|
||||
|
||||
ornements.bottomSecond.el.style.top = "unset";
|
||||
ornements.bottomSecond.el.style.left = `${ornements.bottomSecond.values.left}vw`;
|
||||
ornements.bottomSecond.el.style.bottom = `${ornements.bottomSecond.values.bottom}vh`;
|
||||
}
|
||||
|
||||
function resetMobileElementsPosition() {
|
||||
ornements.topUnderFirst.el.style.left = `${ornements.topUnderFirst.mobileValues.left}vw`;
|
||||
ornements.topUnderFirst.el.style.top = `${ornements.topUnderFirst.mobileValues.top}vh`;
|
||||
|
||||
ornements.topUnderSecond.el.style.left = `${ornements.topUnderSecond.mobileValues.left}vw`;
|
||||
ornements.topUnderSecond.el.style.top = `${ornements.topUnderSecond.mobileValues.top}vh`;
|
||||
|
||||
ornements.topOver.el.style.left = "unset";
|
||||
ornements.topOver.el.style.right = `${ornements.topOver.mobileValues.right}vw`;
|
||||
ornements.topOver.el.style.top = `${ornements.topOver.mobileValues.top}vh`;
|
||||
|
||||
ornements.bottomFirst.el.style.left = "unset",
|
||||
ornements.bottomFirst.el.style.right = `${ornements.bottomFirst.mobileValues.left}vw`;
|
||||
ornements.bottomFirst.el.style.bottom = `${ornements.bottomFirst.mobileValues.bottom}vh`;
|
||||
|
||||
ornements.bottomSecond.el.style.top = "unset";
|
||||
ornements.bottomSecond.el.style.left = `${ornements.bottomSecond.mobileValues.left}vw`;
|
||||
ornements.bottomSecond.el.style.bottom = `${ornements.bottomSecond.mobileValues.bottom}vh`;
|
||||
}
|
||||
|
||||
function setupResize() {
|
||||
getElementsAndPositions();
|
||||
resetElementsPosition();
|
||||
window.addEventListener("scroll", moveElementsOnScroll);
|
||||
}
|
||||
|
||||
if (document.querySelector('.fullpage:not(.actus)')) {
|
||||
if (window.innerWidth > 760) setupResize();
|
||||
|
||||
window.addEventListener('resize', () => {
|
||||
window.scrollTo(0, 0);
|
||||
window.removeEventListener("scroll", moveElementsOnScroll);
|
||||
if (window.innerWidth > 760) {
|
||||
setupResize();
|
||||
} else if (ornements) {
|
||||
resetMobileElementsPosition();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user