/* * Name : common.min.js * Version : 1.1.0 * Product : prime05 * Author : 1px studio * Date : 2024.06.19 * Desc : 포인트컬러(style preview) 적용 --------------------------------------------------- */ $(function () { /* PRIME COMMON : s */ !(function e() { let t = document.getElementById("isIndex"); if (t && "Y" == t.value) { document.getElementById("sjs").remove(); document.getElementById("scss").remove(); } else { document.getElementById("mjs").remove(); document.getElementById("mcss").remove(); } })(); function loaded_script() { // hide spinner let t = $("#page-loader"); t.find(".loader-stage").fadeOut("slow", function () { setTimeout(function () { t.fadeOut("slow"); }, 100); }); // sub page hero init if (document.getElementById("isIndex") == null) { let hero = $(".hero"); hero.addClass("--load"); } } window.onload = loaded_script(); /* PRIME COMMON : e */ /* 부드러운 스크롤 적용 */ /* const lenis = new Lenis({ duration: 0.8, // 애니메이션 지속시간 easing: (x) => 1 - Math.pow(1 - x, 3), // 애니메이션 easing 효과 wheelMultiplier: 2 // 마우스휠 강도 }); lenis.on('scroll', (e) => { //console.log(e); }); function raf(time) { lenis.raf(time); requestAnimationFrame(raf); } requestAnimationFrame(raf); */ /* 스크롤 시 이벤트 */ let before_scroll_top = 0; let header_timer = null; let header = $("#header"); function clearHeaderTimeout() { clearTimeout(header_timer); } function setHeaderTimeout() { clearHeaderTimeout(); let menu_opened = $("#hamburger").hasClass("open") && window.outerWidth < 1280; if (menu_opened) return; header_timer = setTimeout(function () { header.addClass("hide"); }, 2500); } $(window).on("scroll", function () { let st = $(window).scrollTop(); if (before_scroll_top > st) { header.removeClass("hide"); } if (st >= 200) { header.addClass("fixed"); setHeaderTimeout(); $("#quick-btns").addClass("show"); } else { header.removeClass("fixed"); clearHeaderTimeout(); $("#quick-btns").removeClass("show"); } before_scroll_top = st; }); header.on("mouseover", function (e) { clearHeaderTimeout(); }); header.on("mouseout", function (e) { setHeaderTimeout(); }); /* gnb 메뉴 호버 */ function setGnbWidth() { let $gnbs = $("#header .gnb > ul > li"); let zero = false; $.each($gnbs, function (i) { if ($(this).outerWidth() == 0) { $("#header").attr("data-gnb", 0); zero = true; return; } else { $(this).css("width", $(this).outerWidth() + "px"); $("#header").attr("data-gnb", 1); } }); if (!zero) { let $subs = $("#header .gnb > ul > li .gnb-sub"); $.each($subs, function (i) { $(this).css("width", $(this).outerWidth() + "px"); }); } } setGnbWidth(); $(window).on("resize", () => { if ($("#header").attr("data-gnb") == false && window.outerWidth > 1280) { setGnbWidth(); } }); /* mobile 메뉴 */ let $header_mobile = $("#header-mb"); let menu_clicked = false; $("#hamburger").on("click", function (e) { if (!$(this).hasClass("open")) { if (menu_clicked) return false; menu_clicked = true; clearHeaderTimeout(); $(this).addClass("open"); gsap.set($header_mobile, { display: "block" }).then(function () { gsap .to($header_mobile, { opacity: 1, duration: 0.8, ease: "power2.out" }) .then(function () { menu_clicked = false; }); }); } else { if (menu_clicked) return false; menu_clicked = true; $(this).removeClass("open"); gsap .to($header_mobile, { opacity: 0, duration: 0.8, ease: "power2.out" }) .then(function () { gsap.set($header_mobile, { display: "none" }).then(function () { menu_clicked = false; setHeaderTimeout(); }); }); } }); $("#header-mb .gnb-top").on("click", function (e) { let gnbsub = $(this).next(".gnb-sub"); if (gnbsub.hasClass("open")) { gnbsub.removeClass("open"); return; } $("#header-mb .gnb-sub").removeClass("open"); gnbsub.addClass("open"); }); /* 커스텀 커서 */ function customCursor() { let isMobile = /Mobi/i.test(window.navigator.userAgent); if (isMobile) { $(".px-cursor").remove(); return; } const $ball = document.querySelector(".cursor-ball"); const $ball_inner = document.querySelector(".cursor-inner"); $(document).on("mousemove", onMouseMove); $(document).on("mouseenter", "a, button", onMouseHover); $(document).on("mouseleave", "a, button", onMouseHoverOut); $(".hero-buttons *").on("mouseenter", onMouseHover2); $(".hero-buttons *").on("mouseleave", onMouseHoverOut2); function onMouseMove(e) { TweenMax.to($ball, 0.6, { x: e.clientX - 34, y: e.clientY - 34, }); } function onMouseHover() { TweenMax.to($ball, 0.3, { scale: 0.5 }); } function onMouseHoverOut() { TweenMax.to($ball, 0.3, { scale: 1 }); } function onMouseHover2(e) { $($ball_inner).addClass("big"); let cursor_txt = $(e.target).attr("data-cursor"); $($ball).css({ "mix-blend-mode": "unset" }); $($ball).append('