diff --git a/src/main/resources/static/image/equip/20260313/써마지FLX.jpg b/src/main/resources/static/image/equip/20260313/써마지FLX.jpg
new file mode 100644
index 0000000..2bd754c
Binary files /dev/null and b/src/main/resources/static/image/equip/20260313/써마지FLX.jpg differ
diff --git a/src/main/resources/static/image/equip/20260313/온다리프팅(Face).jpg b/src/main/resources/static/image/equip/20260313/온다리프팅(Face).jpg
new file mode 100644
index 0000000..d98b3e6
Binary files /dev/null and b/src/main/resources/static/image/equip/20260313/온다리프팅(Face).jpg differ
diff --git a/src/main/resources/static/image/equip/20260313/울쎄라.jpg b/src/main/resources/static/image/equip/20260313/울쎄라.jpg
new file mode 100644
index 0000000..18a253d
Binary files /dev/null and b/src/main/resources/static/image/equip/20260313/울쎄라.jpg differ
diff --git a/src/main/resources/static/image/equip/20260313/튠페이스.jpg b/src/main/resources/static/image/equip/20260313/튠페이스.jpg
new file mode 100644
index 0000000..7ae573d
Binary files /dev/null and b/src/main/resources/static/image/equip/20260313/튠페이스.jpg differ
diff --git a/src/main/resources/static/image/equip/20260313/티타늄리프팅(Face).jpg b/src/main/resources/static/image/equip/20260313/티타늄리프팅(Face).jpg
new file mode 100644
index 0000000..a24b4ab
Binary files /dev/null and b/src/main/resources/static/image/equip/20260313/티타늄리프팅(Face).jpg differ
diff --git a/src/main/resources/static/js/web/index.js b/src/main/resources/static/js/web/index.js
index 6b6e66e..612c2b0 100644
--- a/src/main/resources/static/js/web/index.js
+++ b/src/main/resources/static/js/web/index.js
@@ -7,7 +7,7 @@ function fn_init() {
//인스타그램 리스트
fn_selectListWebInstagramJson();
-//상단, 하단 배너
+ //상단, 하단 배너
fn_selectListWebMainBannerTypeAJson();
fn_selectListWebMainBannerTypeBJson();
}
@@ -22,10 +22,10 @@ function showBackgroundMask() {
if (mask) {
mask.classList.add('active');
}
-
+
// body에 popup-open 클래스 추가 (스크롤 비활성화 및 블러 효과)
document.body.classList.add('popup-open');
-
+
console.log('Background mask activated');
}
@@ -35,10 +35,10 @@ function hideBackgroundMask() {
if (mask) {
mask.classList.remove('active');
}
-
+
// body에서 popup-open 클래스 제거
document.body.classList.remove('popup-open');
-
+
console.log('Background mask deactivated');
}
@@ -46,22 +46,22 @@ function hideBackgroundMask() {
* content1 스와이퍼
************************************************/
const cont1Urls = [
- 'https://petit.madeu.co.kr/webservice/selectServiceIntro.do?categoryNo=4' // 첫 번째 슬라이드 URL
- ,'https://petit.madeu.co.kr/webservice/selectServiceIntro.do?categoryNo=1' // 두 번째 슬라이드 URL
- ,'https://petit.madeu.co.kr/webservice/selectServiceIntro.do?categoryNo=5' // 세 번째 슬라이드 URL
- ,'https://petit.madeu.co.kr/index' // 네 번째 슬라이드 URL
- ,'https://petit.madeu.co.kr/webservice/selectServiceIntro.do?categoryNo=1' // 다섯 번째 슬라이드 URL
+ 'https://petit.madeu.co.kr/webservice/selectServiceIntro.do?categoryNo=4' // 첫 번째 슬라이드 URL
+ , 'https://petit.madeu.co.kr/webservice/selectServiceIntro.do?categoryNo=1' // 두 번째 슬라이드 URL
+ , 'https://petit.madeu.co.kr/webservice/selectServiceIntro.do?categoryNo=5' // 세 번째 슬라이드 URL
+ , 'https://petit.madeu.co.kr/index' // 네 번째 슬라이드 URL
+ , 'https://petit.madeu.co.kr/webservice/selectServiceIntro.do?categoryNo=1' // 다섯 번째 슬라이드 URL
// 필요시 추가
];
-const bullet1 = ['레이저리프팅','쉬다주사(Face)','스컬트라','스킨부스터', '필러']
+const bullet1 = ['레이저리프팅', '쉬다주사(Face)', '스컬트라', '스킨부스터', '필러']
const useCont1Loop = bullet1.length > 5; // slidesPerView(1.3)보다 많을 때만 loop
const cont1Swiper = new Swiper('.cont1_swiper', {
loop: useCont1Loop,
slidesPerView: 'auto',
spaceBetween: 10,
- autoplay : {
+ autoplay: {
disableOnInteraction: false,
},
pagination: {
@@ -73,22 +73,22 @@ const cont1Swiper = new Swiper('.cont1_swiper', {
},
on: {
init: function () {
- document.querySelectorAll('.cont1_swiper .swiper-slide').forEach(function(slide, idx) {
+ document.querySelectorAll('.cont1_swiper .swiper-slide').forEach(function (slide, idx) {
slide.style.cursor = 'pointer';
slide.setAttribute('data-url', cont1Urls[idx] || cont1Urls[0]);
- slide.addEventListener('click', function() {
+ slide.addEventListener('click', function () {
const url = slide.getAttribute('data-url');
- if(url) window.open(url, '_blank');
+ if (url) window.open(url, '_blank');
});
});
},
slideChange: function () {
- document.querySelectorAll('.cont1_swiper .swiper-slide').forEach(function(slide, idx) {
+ document.querySelectorAll('.cont1_swiper .swiper-slide').forEach(function (slide, idx) {
slide.style.cursor = 'pointer';
slide.setAttribute('data-url', cont1Urls[idx] || cont1Urls[0]);
- slide.onclick = function() {
+ slide.onclick = function () {
const url = slide.getAttribute('data-url');
- if(url) window.open(url, '_blank');
+ if (url) window.open(url, '_blank');
};
});
}
@@ -99,21 +99,21 @@ const cont1Swiper = new Swiper('.cont1_swiper', {
* content2 스와이퍼
************************************************/
const cont2Urls = [
- 'https://petit.madeu.co.kr/webservice/selectServiceIntro.do?categoryNo=4' // 첫 번째 슬라이드 URL
- ,'https://petit.madeu.co.kr/webservice/selectServiceIntro.do?categoryNo=4' // 두 번째 슬라이드 URL
- ,'https://petit.madeu.co.kr/webservice/selectServiceIntro.do?categoryNo=4' // 세 번째 슬라이드 URL
- ,'https://petit.madeu.co.kr/webservice/selectServiceIntro.do?categoryNo=4' // 네 번째 슬라이드 URL
- ,'https://petit.madeu.co.kr/webservice/selectServiceIntro.do?categoryNo=4' // 다섯 번째 슬라이드 URL
+ 'https://petit.madeu.co.kr/webservice/selectServiceDetailIntro.do?categoryDivCd=03&categoryNo=4&postNo=8' // 첫 번째 슬라이드 URL
+ , 'https://petit.madeu.co.kr/webservice/selectServiceDetailIntro.do?categoryDivCd=03&categoryNo=4&postNo=2' // 두 번째 슬라이드 URL
+ , 'https://petit.madeu.co.kr/webservice/selectServiceDetailIntro.do?categoryDivCd=03&categoryNo=4&postNo=10' // 세 번째 슬라이드 URL
+ , 'https://petit.madeu.co.kr/webservice/selectServiceDetailIntro.do?categoryDivCd=03&categoryNo=4&postNo=3' // 네 번째 슬라이드 URL
+ , 'https://petit.madeu.co.kr/webservice/selectServiceDetailIntro.do?categoryDivCd=03&categoryNo=4&postNo=4' // 다섯 번째 슬라이드 URL
];
-const bullet2 = ['티타늄','써마지','울쎄라', '줄기세포', '튠페이스']
+const bullet2 = ['써마지FLX', '울쎄라', '온다리프팅', '티타늄리프팅', '튠페이스']
const useCont2Loop = bullet2.length > 5; // slidesPerView(1.3)보다 많을 때만 loop
const cont2Swiper = new Swiper('.cont2_swiper', {
loop: useCont2Loop,
slidesPerView: 'auto',
spaceBetween: 10,
- autoplay : {
+ autoplay: {
disableOnInteraction: false,
},
pagination: {
@@ -125,22 +125,22 @@ const cont2Swiper = new Swiper('.cont2_swiper', {
},
on: {
init: function () {
- document.querySelectorAll('.cont2_swiper .swiper-slide').forEach(function(slide, idx) {
+ document.querySelectorAll('.cont2_swiper .swiper-slide').forEach(function (slide, idx) {
slide.style.cursor = 'pointer';
slide.setAttribute('data-url', cont2Urls[idx] || cont2Urls[0]);
- slide.addEventListener('click', function() {
+ slide.addEventListener('click', function () {
const url = slide.getAttribute('data-url');
- if(url) window.open(url, '_blank');
+ if (url) window.open(url, '_blank');
});
});
},
slideChange: function () {
- document.querySelectorAll('.cont2_swiper .swiper-slide').forEach(function(slide, idx) {
+ document.querySelectorAll('.cont2_swiper .swiper-slide').forEach(function (slide, idx) {
slide.style.cursor = 'pointer';
slide.setAttribute('data-url', cont2Urls[idx] || cont2Urls[0]);
- slide.onclick = function() {
+ slide.onclick = function () {
const url = slide.getAttribute('data-url');
- if(url) window.open(url, '_blank');
+ if (url) window.open(url, '_blank');
};
});
}
@@ -150,7 +150,7 @@ const cont2Swiper = new Swiper('.cont2_swiper', {
/****************************************************************************
* 팝업 리스트 조회 (마스킹 기능 추가)
****************************************************************************/
-function fn_selectListWebPopupJson(){
+function fn_selectListWebPopupJson() {
let formData = new FormData();
$.ajax({
@@ -161,13 +161,13 @@ function fn_selectListWebPopupJson(){
contentType: false,
type: 'POST',
async: true,
- success: function(data){
- if(data.msgCode=='0'){
+ success: function (data) {
+ if (data.msgCode == '0') {
//쿠기값 확인
let cookiedata = document.cookie;
if (cookiedata.indexOf("popup=done") < 0) {
$('.popup').addClass('open');
-
+
// *** 배경 마스킹 활성화 추가 ***
showBackgroundMask();
@@ -175,20 +175,20 @@ function fn_selectListWebPopupJson(){
if (0 < totalCount) {
let popupContentList = $('#popupContentList');
let popupTabList = $('#popupTabList');
-
- popupContentList.empty();
+
+ popupContentList.empty();
popupTabList.empty();
for (let i = 0; i < Math.min(data.rows.length, 5); i++) {
let isActive = i === 0 ? ' active' : '';
const isMobile = window.innerWidth <= 768;
const imgPath = isMobile ? (data.rows[i].m_filePath || data.rows[i].filePath) : data.rows[i].filePath;
-
+
// 탭 콘텐츠 생성
let contentHTML = '';
- contentHTML += '
';
+ contentHTML += '
';
popupContentList.append(contentHTML);
@@ -196,7 +196,7 @@ function fn_selectListWebPopupJson(){
// 탭 리스트 생성 (data-toggle 제거하고 클릭 이벤트 직접 처리)
let tabHTML = '';
tabHTML += '
';
- tabHTML += '';
+ tabHTML += ' ';
tabHTML += fn_addBrAfterFirstWord(data.rows[i].title);
tabHTML += ' ';
tabHTML += ' ';
@@ -207,27 +207,27 @@ function fn_selectListWebPopupJson(){
setupTabEvents();
setupPopupCloseEvents();
}
- }else{
+ } else {
$('.popup').removeClass('open');
hideBackgroundMask(); // 추가
}
- }else if('-2' == data.msgCode){
- modalEvent.danger("로그인 오류", data.msgDesc, function(){
+ } else if ('-2' == data.msgCode) {
+ modalEvent.danger("로그인 오류", data.msgDesc, function () {
fn_leftFormAction('/weblogin/logout.do');
});
- }else{
+ } else {
modalEvent.danger("조회 오류", data.msgDesc);
}
},
- error : function(xhr, status, error) {
+ error: function (xhr, status, error) {
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
},
- beforeSend:function(){
+ beforeSend: function () {
// 로딩열기
$(".loading-image-layer").show();
},
- complete:function(){
+ complete: function () {
// 로딩닫기
$(".loading-image-layer").hide();
}
@@ -236,15 +236,15 @@ function fn_selectListWebPopupJson(){
// 탭 이벤트 설정 함수 추가
function setupTabEvents() {
- $('#popupTabList a[role="tab"]').off('click').on('click', function(e) {
+ $('#popupTabList a[role="tab"]').off('click').on('click', function (e) {
e.preventDefault();
-
+
const targetId = $(this).data('target');
-
+
// 모든 탭과 콘텐츠에서 active 클래스 제거
$('#popupTabList li').removeClass('active');
$('#popupContentList .tab-pane').removeClass('active');
-
+
// 클릭된 탭과 해당 콘텐츠에 active 클래스 추가
$(this).parent('li').addClass('active');
$('#' + targetId).addClass('active');
@@ -259,7 +259,7 @@ function setupPopupCloseEvents() {
// 기존 이벤트 리스너 복제본 생성하여 교체
const newCloseBtn = closeBtn.cloneNode(true);
closeBtn.parentNode.replaceChild(newCloseBtn, closeBtn);
-
+
// 새로운 이벤트 리스너 추가
newCloseBtn.addEventListener('click', function () {
//체크박스 확인
@@ -269,7 +269,7 @@ function setupPopupCloseEvents() {
setCookie('done', 1);
} else {
$('.popup').removeClass('open');
- hideBackgroundMask();
+ hideBackgroundMask();
}
});
}
@@ -290,9 +290,9 @@ function fn_addBrAfterFirstWord(input) {
function setCookie(value, expiredays) {
let todayDate = new Date();
todayDate.setDate(todayDate.getDate() + expiredays);
- document.cookie = "popup=" + escape( value ) + "; path=/; expires=" + todayDate.toGMTString() + ";";
+ document.cookie = "popup=" + escape(value) + "; path=/; expires=" + todayDate.toGMTString() + ";";
$('.popup').removeClass('open');
-
+
// *** 배경 마스킹 제거 추가 ***
hideBackgroundMask();
}
@@ -300,7 +300,7 @@ function setCookie(value, expiredays) {
/****************************************************************************
* 메인 배너 리스트 조회
****************************************************************************/
-function fn_selectListWebMainBannerTypeAJson(){
+function fn_selectListWebMainBannerTypeAJson() {
let formData = new FormData();
formData.append('bannerType', 'PT');
@@ -312,8 +312,8 @@ function fn_selectListWebMainBannerTypeAJson(){
contentType: false,
type: 'POST',
async: true,
- success: function(data){
- if(data.msgCode=='0'){
+ success: function (data) {
+ if (data.msgCode == '0') {
let totalCount = data.rows.length;
if (0 < totalCount) {
let listHTML = '';
@@ -326,8 +326,8 @@ function fn_selectListWebMainBannerTypeAJson(){
// 이미지와 링크를 a 태그로 감싸기 (url 파라미터 사용)
listHTML += '
';
}
@@ -340,7 +340,7 @@ function fn_selectListWebMainBannerTypeAJson(){
const mainBannerSwiper = new Swiper('.main_banner_swiper', {
loop: useMainBannerLoop,
slidesPerView: 1,
- autoplay : {
+ autoplay: {
disableOnInteraction: false,
},
pagination: {
@@ -361,7 +361,7 @@ function fn_selectListWebMainBannerTypeAJson(){
},
});
- ///////// swiper-pagination-bullet 넓이 동적 조정 /////////
+ ///////// swiper-pagination-bullet 넓이 동적 조정 /////////
function adjustBulletWidth() {
const bullets = document.querySelectorAll('.main_banner_pagination .swiper-pagination-bullet');
const paginationWidth = 490;
@@ -373,32 +373,32 @@ function fn_selectListWebMainBannerTypeAJson(){
}
///////// 활성화된 swiper-pagination-bullet 업데이트 /////////
- function updateActiveBullets(activeIndex) {
- const bullets = document.querySelectorAll('.mainbannerpagination .swiper-pagination-bullet');
- bullets.forEach(bullet => bullet.classList.remove('swiper-pagination-bullet-active')); // 먼저 모두 제거
- if (bullets[activeIndex]) {
- bullets[activeIndex].classList.add('swiper-pagination-bullet-active'); // 하나만 추가
- }
- }
+ function updateActiveBullets(activeIndex) {
+ const bullets = document.querySelectorAll('.mainbannerpagination .swiper-pagination-bullet');
+ bullets.forEach(bullet => bullet.classList.remove('swiper-pagination-bullet-active')); // 먼저 모두 제거
+ if (bullets[activeIndex]) {
+ bullets[activeIndex].classList.add('swiper-pagination-bullet-active'); // 하나만 추가
+ }
+ }
- }else{$("#mainBannerList").empty();}
- }else if('-2' == data.msgCode){
- modalEvent.danger("로그인 오류", data.msgDesc, function(){
+ } else { $("#mainBannerList").empty(); }
+ } else if ('-2' == data.msgCode) {
+ modalEvent.danger("로그인 오류", data.msgDesc, function () {
fn_leftFormAction('/weblogin/logout.do');
});
- }else{
+ } else {
modalEvent.danger("조회 오류", data.msgDesc);
}
},
- error : function(xhr, status, error) {
+ error: function (xhr, status, error) {
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
},
- beforeSend:function(){
+ beforeSend: function () {
// 로딩열기
$(".loading-image-layer").show();
},
- complete:function(){
+ complete: function () {
// 로딩닫기
$(".loading-image-layer").hide();
}
@@ -408,7 +408,7 @@ function fn_selectListWebMainBannerTypeAJson(){
/****************************************************************************
* 서브 배너 이벤트 리스트 조회
****************************************************************************/
-function fn_selectListWebMainBannerTypeBJson(){
+function fn_selectListWebMainBannerTypeBJson() {
let formData = new FormData();
formData.append('bannerType', 'PB');
@@ -420,8 +420,8 @@ function fn_selectListWebMainBannerTypeBJson(){
contentType: false,
type: 'POST',
async: true,
- success: function(data){
- if(data.msgCode=='0'){
+ success: function (data) {
+ if (data.msgCode == '0') {
let totalCount = data.rows.length;
if (0 < totalCount) {
@@ -435,8 +435,8 @@ function fn_selectListWebMainBannerTypeBJson(){
// 이미지와 링크를 a 태그로 감싸기 (url 파라미터 사용)
listHTML += '
';
@@ -450,7 +450,7 @@ function fn_selectListWebMainBannerTypeBJson(){
const subBannerSwiper = new Swiper('.sub_banner_swiper', {
loop: useSubBannerLoop,
slidesPerView: 1,
- autoplay : {
+ autoplay: {
disableOnInteraction: false,
},
pagination: {
@@ -471,7 +471,7 @@ function fn_selectListWebMainBannerTypeBJson(){
},
});
- ///////// swiper-pagination-bullet 넓이 동적 조정 /////////
+ ///////// swiper-pagination-bullet 넓이 동적 조정 /////////
function adjustSubBulletWidth() {
const bullets = document.querySelectorAll('.sub_banner_pagination .swiper-pagination-bullet');
const paginationWidth = 490;
@@ -495,24 +495,24 @@ function fn_selectListWebMainBannerTypeBJson(){
});
}
- }else{$("#subBannerList").empty();}
- }else if('-2' == data.msgCode){
- modalEvent.danger("로그인 오류", data.msgDesc, function(){
+ } else { $("#subBannerList").empty(); }
+ } else if ('-2' == data.msgCode) {
+ modalEvent.danger("로그인 오류", data.msgDesc, function () {
fn_leftFormAction('/weblogin/logout.do');
});
- }else{
+ } else {
modalEvent.danger("조회 오류", data.msgDesc);
}
},
- error : function(xhr, status, error) {
+ error: function (xhr, status, error) {
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
},
- beforeSend:function(){
+ beforeSend: function () {
// 로딩열기
$(".loading-image-layer").show();
},
- complete:function(){
+ complete: function () {
// 로딩닫기
$(".loading-image-layer").hide();
}
@@ -522,7 +522,7 @@ function fn_selectListWebMainBannerTypeBJson(){
/****************************************************************************
* 인스타그램 피드 리스트 조회 (백엔드 API 사용)
****************************************************************************/
-function fn_selectListWebInstagramJson(){
+function fn_selectListWebInstagramJson() {
let formData = new FormData();
$.ajax({
url: encodeURI('/webinstagram/selectListWebInstagram.do'),
@@ -532,8 +532,8 @@ function fn_selectListWebInstagramJson(){
contentType: false,
type: 'POST',
async: true,
- success: function(data){
- if(data.msgCode=='0'){
+ success: function (data) {
+ if (data.msgCode == '0') {
let totalCount = data.rows.length;
if (0 < totalCount) {
let listHTML = '';
@@ -544,12 +544,12 @@ function fn_selectListWebInstagramJson(){
let permalink = data.rows[i].permalink;
let mediaType = data.rows[i].media_type || '';
let thumbnailUrl = data.rows[i].thumbnail_url || mediaUrl;
- listHTML += '
';
- listHTML += '
';
+ listHTML += '';
@@ -558,22 +558,22 @@ function fn_selectListWebInstagramJson(){
// 커스텀 내비게이션과 연동
initInstagramCustomNav(data);
}
- }else if('-2' == data.msgCode){
- modalEvent.danger("로그인 오류", data.msgDesc, function(){
+ } else if ('-2' == data.msgCode) {
+ modalEvent.danger("로그인 오류", data.msgDesc, function () {
fn_leftFormAction('/weblogin/logout.do');
});
- }else{
+ } else {
modalEvent.danger("조회 오류", data.msgDesc);
}
},
- error : function(xhr, status, error) {
+ error: function (xhr, status, error) {
modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
},
- beforeSend:function(){
+ beforeSend: function () {
// 로딩열기
$(".loading-image-layer").show();
},
- complete:function(){
+ complete: function () {
// 로딩닫기
$(".loading-image-layer").hide();
}
@@ -586,12 +586,12 @@ function fn_selectListWebInstagramJson(){
function initInstagramCustomNav(data) {
const totalCount = data.rows.length;
if (totalCount === 0) return;
-
+
// 썸네일은 최대 5개로 고정
const maxThumbs = 3;
const showThumbs = Math.min(totalCount, maxThumbs);
let currentActiveIndex = 0; // 현재 활성 인덱스 추적
-
+
// 썸네일 버튼 생성 (활성 상태 포함)
function createThumbnails(startIndex = 0) {
let thumbsHTML = '';
@@ -601,17 +601,17 @@ function initInstagramCustomNav(data) {
const thumbnailUrl = data.rows[dataIndex].thumbnail_url || mediaUrl;
const isActive = dataIndex === currentActiveIndex ? 'active' : '';
thumbsHTML += `
-
+
`;
}
document.querySelector('.custom-swiper-thumbs').innerHTML = thumbsHTML;
}
-
+
// 초기 썸네일 생성
createThumbnails(0);
// Swiper 인스턴스
- setTimeout(function() {
+ setTimeout(function () {
const instagramSwiper = new Swiper('.instagram_swiper', {
loop: true,
autoplay: {
@@ -628,18 +628,18 @@ function initInstagramCustomNav(data) {
},
},
on: {
- slideChange: function() {
+ slideChange: function () {
const newIndex = this.realIndex % totalCount;
currentActiveIndex = newIndex; // 활성 인덱스 업데이트
-
+
// 콘텐츠가 5개보다 많은 경우 썸네일 순환 업데이트
if (totalCount > maxThumbs) {
// 현재 활성 썸네일이 보이는지 확인
const visibleThumbs = Array.from(document.querySelectorAll('.custom-swiper-thumb'));
- const isActiveVisible = visibleThumbs.some(thumb =>
+ const isActiveVisible = visibleThumbs.some(thumb =>
parseInt(thumb.dataset.index) === currentActiveIndex
);
-
+
// 활성 썸네일이 보이지 않으면 썸네일 업데이트
if (!isActiveVisible) {
updateThumbnailsForIndex(currentActiveIndex);
@@ -655,41 +655,41 @@ function initInstagramCustomNav(data) {
});
// 좌우 버튼 이벤트
- document.querySelector('.custom-swiper-btn.prev').onclick = function() {
+ document.querySelector('.custom-swiper-btn.prev').onclick = function () {
instagramSwiper.slidePrev();
};
- document.querySelector('.custom-swiper-btn.next').onclick = function() {
+ document.querySelector('.custom-swiper-btn.next').onclick = function () {
instagramSwiper.slideNext();
};
-
+
// 썸네일 클릭 이벤트
- document.querySelector('.custom-swiper-thumbs').onclick = function(e) {
+ document.querySelector('.custom-swiper-thumbs').onclick = function (e) {
const thumb = e.target.closest('.custom-swiper-thumb');
if (thumb) {
const targetIndex = parseInt(thumb.dataset.index);
instagramSwiper.slideToLoop(targetIndex);
}
};
-
+
// 현재 슬라이드에 맞춰 썸네일 업데이트
function updateThumbnailsForIndex(activeIndex) {
if (totalCount <= maxThumbs) return;
-
+
// 현재 활성 인덱스를 중심으로 썸네일 배치
let startIndex = activeIndex - Math.floor(maxThumbs / 2);
if (startIndex < 0) startIndex = totalCount + startIndex;
-
+
createThumbnails(startIndex);
}
-
+
// 활성 썸네일 표시
function updateCustomThumbActive(activeIdx) {
- document.querySelectorAll('.custom-swiper-thumb').forEach(function(thumb) {
+ document.querySelectorAll('.custom-swiper-thumb').forEach(function (thumb) {
const thumbIndex = parseInt(thumb.dataset.index);
thumb.classList.toggle('active', thumbIndex === activeIdx);
});
}
-
+
// 초기 활성 상태 설정
updateCustomThumbActive(0);
}, 0);
@@ -699,16 +699,16 @@ function initInstagramCustomNav(data) {
fn_init();
// 기존 팝업 닫기 버튼 이벤트 (마스킹 기능 추가)
-document.getElementById('btnPopupClose').addEventListener('click',function (){
+document.getElementById('btnPopupClose').addEventListener('click', function () {
$('.popup').removeClass('open');
// *** 배경 마스킹 제거 추가 ***
hideBackgroundMask();
});
// 추가 이벤트 리스너들 (새로 추가)
-document.addEventListener('DOMContentLoaded', function() {
+document.addEventListener('DOMContentLoaded', function () {
// ESC 키로 팝업 닫기
- document.addEventListener('keydown', function(e) {
+ document.addEventListener('keydown', function (e) {
if (e.key === 'Escape' && document.querySelector('.popup.open')) {
$('.popup').removeClass('open');
hideBackgroundMask();
@@ -718,7 +718,7 @@ document.addEventListener('DOMContentLoaded', function() {
// 마스크 영역 클릭 시 팝업 닫기 (선택사항)
const mask = document.querySelector('.popup-background-mask');
if (mask) {
- mask.addEventListener('click', function() {
+ mask.addEventListener('click', function () {
$('.popup').removeClass('open');
hideBackgroundMask();
});
diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html
index 060aab0..b5901ce 100644
--- a/src/main/resources/templates/index.html
+++ b/src/main/resources/templates/index.html
@@ -1,150 +1,154 @@
-
+
-
-
+
+
-
-
-
-
-
-
- MADE U 시그니처
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Detail view >
-
-
- Detail view >
-
-
- Detail view >
-
-
-
-
-
-
-
-
- MADE U 프리미엄장비
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MADE U 인스타그램
- @madeu_gn
-
-
View more ≫
+
+
+
+
-
-
-
-
+
+
+
+
+ MADE U 시그니처
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Detail view >
+
+
+ Detail view >
+
+
+ Detail view >
+
+
+
+
+
+
+
+
+ MADE U 프리미엄장비
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MADE U 인스타그램
+ @madeu_gn
+
+ View more
+ ≫
+
+
+
+
+
+
+
+
-
+
+
+
\ No newline at end of file