/* * Name : main.js * Version : 1.1.0 * Author : 1px studio * Product : prime03 * Date : 2024-09-26 * Desc : multiple section (product/blog swiper, notice) * ------------------------------------------------- */ $(function(){ /* PRIME COMMON : s */ // script break in sub page if (document.getElementById("isIndex")==null) { return; } /* 레이어 팝업 */ (function e() { function t(e) { e.hide() } $(".px-layer-popup .btn-cookie-close").on("click", function(e) { let i = $(this).closest(".px-layer-popup") , s = i.attr("id"); e.preventDefault(), $.cookie(s, "1", { expires: 1 }), t(i) }), $(".px-layer-popup .btn-normal-close").on("click", function(e) { let i = $(this).closest(".px-layer-popup"); e.preventDefault(), t(i) }) } )(); /* PRIME COMMON : e */ /* 스크롤 시 이벤트 */ gsap.registerPlugin(ScrollTrigger); let bannerGsap = gsap.timeline(); bannerGsap.to(".banner-text .word-wrap .word", {scrollTrigger: {trigger: ".banner-text", scrub:3, start: "0% 80%", end: "100% 80%"}, transform: "translateY(0px)", opacity: 1, duration: 1, stagger: 0.1, ease: "power2.out"}); /* MAIN SLIDE swiper */ function main_slider() { const progressCircle = document.querySelector(".main-slide .autoplay-progress svg.fill"); const autoplayDefaultDelay = 3500; let currentDelay = autoplayDefaultDelay; let main_swiper = new Swiper(".main-swiper", { direction: "vertical", speed: 1000, loop: false, slidesPerView: 1, spaceBetween: 0, allowTouchMove: false, centeredSlides: true, navigation: { nextEl: ".main-slide .m-next", prevEl: ".main-slide .m-prev", }, pagination: { el: ".main-slide .swiper-pagination", }, autoplay: { delay: autoplayDefaultDelay, disableOnInteraction: false }, on: { init: function (swiper) { $('.main-swiper').addClass('load-init'); $(".main-slide .swiper-pagination").append('
'); // ✅ 첫 슬라이드 delay 강제 반영 const realIndex = swiper.realIndex; const originalSlides = document.querySelectorAll('.swiper-slide[data-delay]'); const delayAttr = originalSlides[realIndex]?.getAttribute('data-delay'); currentDelay = delayAttr ? parseInt(delayAttr) : autoplayDefaultDelay; swiper.params.autoplay.delay = currentDelay; swiper.autoplay.stop(); swiper.autoplay.start(); }, autoplayTimeLeft(swiper, time, percentage) { progressCircle.style.setProperty("--progress", 1 - (time / currentDelay)); }, slideChange: function (swiper) { for (let i = 0; i < swiper.slides.length; i++) { let index = swiper.activeIndex == i ? 0 : swiper.activeIndex - i; let half_height = swiper.height * 0.5; let translate = index * half_height; let bg = swiper.slides[i].querySelector('.main-slide-bg-wrap'); if (bg) bg.style.transform = 'translate3d(0, ' + translate + 'px, 0)'; } $('.main-swiper').removeClass('load-init'); $(".swiper-pause").removeClass("stop"); }, slideChangeTransitionEnd: function (swiper) { const realIndex = swiper.realIndex; const originalSlides = document.querySelectorAll('.swiper-slide[data-delay]'); const delayAttr = originalSlides[realIndex]?.getAttribute('data-delay'); currentDelay = delayAttr ? parseInt(delayAttr) : autoplayDefaultDelay; swiper.params.autoplay.delay = currentDelay; swiper.autoplay.stop(); swiper.autoplay.start(); }, touchStart: function (swiper) { for (let i = 0; i < swiper.slides.length; i++) { swiper.slides[i].style.transition = ''; } }, setTransition: function (swiper, speed) { for (let i = 0; i < swiper.slides.length; i++) { swiper.slides[i].style.transition = speed + 'ms'; let bg = swiper.slides[i].querySelector('.main-slide-bg-wrap'); if (bg) bg.style.transition = speed + 'ms'; } } } }); $(".swiper-pause").on("click", function (e) { $(this).toggleClass("stop"); if ($(this).hasClass("stop")) { main_swiper.autoplay.pause(); } else { main_swiper.autoplay.resume(); } }); } // function main_slider() { // const progressCircle = document.querySelector(".main-slide .autoplay-progress svg.fill"); // const autoplayDelay = 3500; // let main_swiper = new Swiper(".main-swiper", { // direction: "vertical", // speed: 1000, // loop: true, // slidesPerView: 1, // spaceBetween: 0, // allowTouchMove: false, // centeredSlides: true, // navigation: { // nextEl: ".main-slide .swiper-button-next", // prevEl: ".main-slide .swiper-button-prev", // }, // pagination: { // el: ".main-slide .swiper-pagination", // }, // navigation: { // nextEl: ".main-slide .m-next", // prevEl: ".main-slide .m-prev", // }, // autoplay: { // delay: autoplayDelay, // disableOnInteraction: false // }, // on: { // init : function () { // $('.main-swiper').addClass('load-init'); // $(".main-slide .swiper-pagination").append('
'); // }, // autoplayTimeLeft(swiper, time, percentage) { // progressCircle.style.setProperty("--progress", 1-percentage); // }, // slideChange: function(swiper) { // for (let i=0; i < swiper.slides.length; i++) { // let index = swiper.activeIndex==i ? 0 : swiper.activeIndex-i; // let half_height = swiper.height * 0.5; // let translate = index * half_height; // swiper.slides[i].querySelector('.main-slide-bg-wrap').style.transform = 'translate3d(0, ' + translate + 'px, 0)'; // $('.main-swiper').removeClass('load-init'); // } // $(".swiper-pause").removeClass("stop"); // }, // touchStart: function(swiper) { // for (let i = 0; i < swiper.slides.length; i++) { // swiper.slides[i].style.transition = ''; // } // }, // setTransition: function(swiper, speed) { // for (let i = 0; i < swiper.slides.length; i++) { // swiper.slides[i].style.transition = speed + 'ms'; // swiper.slides[i].querySelector('.main-slide-bg-wrap').style.transition = speed + 'ms'; // } // }, // } // }); // $(".swiper-pause").on("click", function(e){ // $(this).toggleClass("stop"); // if ($(this).hasClass("stop")) { // main_swiper.autoplay.pause(); // } else { // main_swiper.autoplay.resume(); // } // }); // } main_slider(); /* product 게시판 추출 */ function product_extraction(_id) { if ($(_id+".article-list").length == 0) return; let list = $(_id+".article-list > tbody > tr > td"); let html = `
`; let aos_delay = 0; list.each(function(){ let href = $(this).find("a").attr("href"); let src = $(this).find(".board_output_imgs").attr("src"); let subject_tag = $(this).find(".board_output_gallery_subject a"); let desc_tag = $(this).find(".board_output_gallery_description"); let td = $(this).find("tr:last-child > td"); let subject = subject_tag.text().trim(); let desc = desc_tag.text().trim(); subject_tag.remove(); desc_tag.remove(); let category = td.text().trim(); html += `
${subject}

${subject}

${desc}

#${category}

`; aos_delay += 150; }); html += '
'; $(_id+".product-swiper").html(html); $(_id+".article-list").remove(); } /* PRODUCT swiper 슬라이드 */ function set_product_swiper() { let product_list = $(".product"); product_list.each(function(){ let product_id = "#"+this.id+" "; product_extraction(product_id); new Swiper(product_id+".product-swiper", { slidesPerView: "auto", spaceBetween: 15, slidesOffsetAfter: 15, resizeObserver: false, pagination: { el: product_id+".swiper-pagination", type: "progressbar", }, navigation: { nextEl: product_id+".p-navi-next", prevEl: product_id+".p-navi-prev", disabledClass: "p-navi-disabled", }, }); }) } set_product_swiper(); /* blog 게시판 추출 */ function blog_extraction(_id) { if ($(_id+".article-list").length == 0) return; let list = $(_id+".article-list tr"); let html = ``; let aos_delay = 0; list.each(function(i){ let href = $(this).find("a").attr("href"); let src = $(this).find(".board_output_imgs").attr("src"); let subject = $(this).find("td.bd_out1").text().trim(); let desc = $(this).find("td").eq(2).text().trim(); let date = $(this).find("td").eq(3).text(); let category = $(this).find("td").last().text(); let aos = i < 4 ? `data-aos="fade-zoom-in" data-aos-delay="${aos_delay}" data-aos-easing="ease-out-cubic"` : ''; html += `
${subject}
${category}

${subject}

${desc}

${date}

Read more

`; }); $(_id+".blog-swiper .swiper-wrapper").empty().html(html); aos_delay += 150; } /* BLOG swiper 슬라이드 */ function set_blog_swiper() { let blog_list = $(".blog"); blog_list.each(function(){ let blog_id = "#"+this.id+" "; blog_extraction(blog_id); new Swiper(blog_id+".blog-swiper", { slidesPerView: 1, spaceBetween: 0, resizeObserver: false, pagination: { el: blog_id+".swiper-pagination", type: "progressbar", }, navigation: { nextEl: blog_id+".b-navi-next", prevEl: blog_id+".b-navi-prev", disabledClass: "b-navi-disabled", }, breakpoints: { 480: { slidesPerView: 2, spaceBetween: 10, }, 768: { slidesPerView: 3, spaceBetween: 10, }, 990: { slidesPerView: 4, spaceBetween: 15, }, }, }); }); } set_blog_swiper(); /* 공지사항 추출 */ function init_notice() { if ($(".notice .article-list").length == 0) return; let notice_list = $(".notice"); notice_list.each(function(){ let list = $(this).find(".article-list tr"); let html = ""; let aos_delay = 0; list.each(function(i){ let a = $(this).find("a"); let href = a.attr("href"); let subject = a.text().trim(); let date = $(this).find("td").eq(2).text(); let desc = $(this).find("td").last().text(); let open = i == 0 ? "open" : ""; let line = i == 0 ? "n-line-1" : "n-line-2"; html += `

${date}

${subject}

${desc}

MORE +
`; }); $(this).find(".tbl").html(html); $(this).find(".article-list").remove(); aos_delay += 150; }); } init_notice(); /* NOTICE open */ $("section.notice .n-title").on("click", function(e){ $(this).next(".n-text").toggleClass("open"); }); AOS.init({ duration: 600, once: true }); /* masonry(기공실) 추가 */ function masonry_init() { if ( $('.masonry-group').length ) { const masonryGroup = $('.masonry-group'); masonryGroup.imagesLoaded(function() { masonryGroup.isotope({ itemSelector: '.gallery-item', columnWidth: '.grid-sizer', masonry: { gutter: 20 } }); }); $('.category-button-wrapper .button-filter').on('click', (e) => { e.preventDefault(); let $this = $(e.currentTarget); let filterValue = $this.data('filter'); $('.category-button-wrapper .button-filter').removeClass('active'); $this.addClass('active'); masonryGroup.isotope({ filter: filterValue }); }); } } masonry_init(); /* masonry zoom gallery */ function zoom_gallery_init() { $('.zoom-gallery').magnificPopup({ delegate: 'a', type: 'image', closeOnContentClick: false, closeBtnInside: false, mainClass: 'mfp-with-zoom mfp-img-mobile', image: { verticalFit: true, }, gallery: { enabled: true }, zoom: { enabled: true, duration: 300, opener: function(element) { return element.find('img'); } } }); } zoom_gallery_init(); });