166 lines
4.2 KiB
JavaScript
166 lines
4.2 KiB
JavaScript
document.addEventListener("DOMContentLoaded", () => {
|
|
// ---------------------------------------------
|
|
// js__fixLeft 오른쪽에 따라 왼쪽 내용 변하기
|
|
// 사용 클래스 : js__fixLeft_tit, js__fixLeft_bg, js__fixLeft_sec
|
|
// ---------------------------------------------
|
|
gsap.registerPlugin(ScrollTrigger);
|
|
|
|
const tits = document.querySelectorAll(".js__fixLeft_tit");
|
|
const bgs = document.querySelectorAll(".js__fixLeft_bg");
|
|
const sections = document.querySelectorAll(".js__fixLeft_secs > div");
|
|
|
|
function bgOnEnter(element) {
|
|
gsap.to(element, {
|
|
transform: "scale(1.05)",
|
|
duration: 0.5
|
|
});
|
|
}
|
|
|
|
function bgOnLeave(element) {
|
|
gsap.to(element, {
|
|
transform: "scale(1)",
|
|
duration: 0.5
|
|
});
|
|
}
|
|
|
|
function titOnEnter(element) {
|
|
gsap.to(element, {
|
|
opacity: 1,
|
|
transform: "scale(1) translate(0%, 0%)",
|
|
duration: 0.5
|
|
});
|
|
}
|
|
|
|
function titOnLeave(element) {
|
|
gsap.to(element, {
|
|
opacity: 0.5,
|
|
transform: "scale(0.7) translate(-47%, 0%)",
|
|
duration: 0.5
|
|
});
|
|
}
|
|
|
|
function updateElements(index) {
|
|
bgs.forEach((bg, i) => {
|
|
if (i === index) {
|
|
bg.classList.add("on");
|
|
bgOnEnter(bg);
|
|
} else {
|
|
bg.classList.remove("on");
|
|
bgOnLeave(bg);
|
|
}
|
|
});
|
|
|
|
tits.forEach((tit, i) => {
|
|
if (i === index) {
|
|
tit.classList.add("on");
|
|
titOnEnter(tit);
|
|
} else {
|
|
tit.classList.remove("on");
|
|
titOnLeave(tit);
|
|
}
|
|
});
|
|
}
|
|
|
|
if (sections[0]) {
|
|
ScrollTrigger.create({
|
|
trigger: sections[0],
|
|
start: "center top",
|
|
onEnter: () => updateElements(0),
|
|
onLeaveBack: () => updateElements(0)
|
|
});
|
|
}
|
|
|
|
if (sections[1]) {
|
|
ScrollTrigger.create({
|
|
trigger: sections[1],
|
|
start: "center center",
|
|
onEnter: () => updateElements(1),
|
|
onLeaveBack: () => updateElements(1)
|
|
});
|
|
}
|
|
|
|
$(".js__fixLeft_tit").each(function (index, val) {
|
|
val.addEventListener("click", () => {
|
|
gsap.to(window, {
|
|
duration: 0,
|
|
scrollTo: { y: "#content" + (index + 1), offsetY: 390 }
|
|
}).play();
|
|
|
|
gsap.to(val, {
|
|
onComplete: function () {
|
|
if (index === 0) {
|
|
updateElements(0);
|
|
} else if (index === 1) {
|
|
updateElements(1);
|
|
}
|
|
}
|
|
}).play();
|
|
});
|
|
});
|
|
});
|
|
|
|
function getLeftVcDiv() {
|
|
return document.querySelector("div.left.vc");
|
|
}
|
|
|
|
window.addEventListener("resize", function () {
|
|
const leftVcDiv = getLeftVcDiv();
|
|
|
|
if (!leftVcDiv) {
|
|
return;
|
|
}
|
|
|
|
if (window.innerWidth <= 992) {
|
|
checkAndToggleDisplay();
|
|
} else {
|
|
leftVcDiv.style.display = "none";
|
|
}
|
|
});
|
|
|
|
document.addEventListener("DOMContentLoaded", function () {
|
|
const leftVcDiv = getLeftVcDiv();
|
|
|
|
if (!leftVcDiv) {
|
|
return;
|
|
}
|
|
|
|
if (window.innerWidth <= 992) {
|
|
checkAndToggleDisplay();
|
|
} else {
|
|
leftVcDiv.style.display = "none";
|
|
}
|
|
});
|
|
|
|
window.addEventListener("wheel", function (event) {
|
|
const leftVcDiv = getLeftVcDiv();
|
|
|
|
if (!leftVcDiv) {
|
|
return;
|
|
}
|
|
|
|
if (window.innerWidth <= 992) {
|
|
checkAndToggleDisplay(event);
|
|
} else {
|
|
leftVcDiv.style.display = "none";
|
|
}
|
|
});
|
|
|
|
function checkAndToggleDisplay(event) {
|
|
const secondChild = document.querySelector(".process .left span.js__fixLeft_tit:nth-of-type(2)");
|
|
const leftVcDiv = getLeftVcDiv();
|
|
|
|
if (!leftVcDiv) {
|
|
return;
|
|
}
|
|
|
|
if (secondChild && secondChild.classList.contains("on")) {
|
|
if (event && event.deltaY > 0) {
|
|
leftVcDiv.style.opacity = 0;
|
|
} else if (event && event.deltaY < 0) {
|
|
leftVcDiv.style.opacity = 1;
|
|
}
|
|
} else {
|
|
leftVcDiv.style.opacity = 1;
|
|
}
|
|
}
|