|
@@ -1,26 +1,59 @@
|
|
|
<template>
|
|
<template>
|
|
|
<div class="login-wrap">
|
|
<div class="login-wrap">
|
|
|
<div class="login--gate" v-show="loginVisible == 'Y'">
|
|
<div class="login--gate" v-show="loginVisible == 'Y'">
|
|
|
- <div
|
|
|
|
|
- class="inf--gate"
|
|
|
|
|
- :class="gate1 ? 'actv' : ''"
|
|
|
|
|
- @mousemove.stop="handleInfluenceMove"
|
|
|
|
|
- >
|
|
|
|
|
- <div class="btn--contents">
|
|
|
|
|
- <h2>influence</h2>
|
|
|
|
|
- <v-btn class="loc--btn" @click.stop="location('influence')"
|
|
|
|
|
- >Discover more ></v-btn
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <div class="gate-container">
|
|
|
|
|
+ <div
|
|
|
|
|
+ class="gate-card influencer-gate"
|
|
|
|
|
+ :class="gate1 ? 'actv' : ''"
|
|
|
|
|
+ @mouseover="handleInfluenceMove"
|
|
|
|
|
+ @click.stop="location('influence')"
|
|
|
|
|
+ @mouseleave="gate1 = false"
|
|
|
|
|
+ >
|
|
|
|
|
+ <div class="gate-icon">
|
|
|
|
|
+ <div class="icon-circle influencer-bg">
|
|
|
|
|
+ ❤️
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="gate-content">
|
|
|
|
|
+ <h3>인플루언서</h3>
|
|
|
|
|
+ <p>크리에이터와 함께하세요</p>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
- <div
|
|
|
|
|
- class="ven--gate"
|
|
|
|
|
- :class="gate2 ? 'actv' : ''"
|
|
|
|
|
- @mousemove.stop="handleVendorMove"
|
|
|
|
|
- >
|
|
|
|
|
- <div class="btn--contents">
|
|
|
|
|
- <h2>vendor</h2>
|
|
|
|
|
- <v-btn class="loc--btn" @click.stop="location('vendor')">Discover more ></v-btn>
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <div
|
|
|
|
|
+ @click.stop="location('vendor')"
|
|
|
|
|
+ class="gate-card vendor-gate"
|
|
|
|
|
+ :class="gate2 ? 'actv' : ''"
|
|
|
|
|
+ @mouseover="handleVendorMove"
|
|
|
|
|
+ @mouseleave="gate2 = false"
|
|
|
|
|
+ >
|
|
|
|
|
+ <div class="gate-icon">
|
|
|
|
|
+ <div class="icon-circle vendor-bg">
|
|
|
|
|
+ 🛍️
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="gate-content" >
|
|
|
|
|
+ <h3>벤더사</h3>
|
|
|
|
|
+ <p>상품을 판매해보세요</p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <div
|
|
|
|
|
+ @click.stop="location('brand')"
|
|
|
|
|
+ class="gate-card brand-gate"
|
|
|
|
|
+ :class="gate3 ? 'actv' : ''"
|
|
|
|
|
+ @mouseover="handleBrandMove"
|
|
|
|
|
+ @mouseleave="gate3 = false"
|
|
|
|
|
+ >
|
|
|
|
|
+ <div class="gate-icon">
|
|
|
|
|
+ <div class="icon-circle brand-bg">
|
|
|
|
|
+ 💎
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="gate-content">
|
|
|
|
|
+ <h3>브랜드사</h3>
|
|
|
|
|
+ <p>브랜드를 성장시켜보세요</p>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -173,6 +206,7 @@
|
|
|
const pageId = "login";
|
|
const pageId = "login";
|
|
|
const gate1 = ref(false);
|
|
const gate1 = ref(false);
|
|
|
const gate2 = ref(false);
|
|
const gate2 = ref(false);
|
|
|
|
|
+ const gate3 = ref(false);
|
|
|
const loginVisible = ref("N");
|
|
const loginVisible = ref("N");
|
|
|
|
|
|
|
|
const i18n = useI18n();
|
|
const i18n = useI18n();
|
|
@@ -316,39 +350,21 @@
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const handleInfluenceMove = (event) => {
|
|
const handleInfluenceMove = (event) => {
|
|
|
- const el = event.currentTarget;
|
|
|
|
|
- const rect = el.getBoundingClientRect();
|
|
|
|
|
- const mouseX = event.clientX;
|
|
|
|
|
-
|
|
|
|
|
- // 요소 너비의 15%를 좌우 여백으로 계산 (중앙 70% 영역)
|
|
|
|
|
- const margin = rect.width * 0.15;
|
|
|
|
|
- const leftBound = rect.left + margin;
|
|
|
|
|
- const rightBound = rect.right - margin;
|
|
|
|
|
-
|
|
|
|
|
- if (mouseX >= leftBound && mouseX <= rightBound) {
|
|
|
|
|
- gate1.value = true;
|
|
|
|
|
- gate2.value = false;
|
|
|
|
|
- } else {
|
|
|
|
|
- gate1.value = false;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ gate1.value = true;
|
|
|
|
|
+ gate2.value = false;
|
|
|
|
|
+ gate3.value = false;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const handleVendorMove = (event) => {
|
|
const handleVendorMove = (event) => {
|
|
|
- const el = event.currentTarget;
|
|
|
|
|
- const rect = el.getBoundingClientRect();
|
|
|
|
|
- const mouseX = event.clientX;
|
|
|
|
|
-
|
|
|
|
|
- // 요소 너비의 15%를 좌우 여백으로 계산 (중앙 70% 영역)
|
|
|
|
|
- const margin = rect.width * 0.15;
|
|
|
|
|
- const leftBound = rect.left + margin;
|
|
|
|
|
- const rightBound = rect.right - margin;
|
|
|
|
|
-
|
|
|
|
|
- if (mouseX >= leftBound && mouseX <= rightBound) {
|
|
|
|
|
- gate2.value = true;
|
|
|
|
|
- gate1.value = false;
|
|
|
|
|
- } else {
|
|
|
|
|
- gate2.value = false;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ gate2.value = true;
|
|
|
|
|
+ gate1.value = false;
|
|
|
|
|
+ gate3.value = false;
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ const handleBrandMove = (event) => {
|
|
|
|
|
+ gate3.value = true;
|
|
|
|
|
+ gate1.value = false;
|
|
|
|
|
+ gate2.value = false;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
// 개인정보처리방침 이용약관 팝업
|
|
// 개인정보처리방침 이용약관 팝업
|
|
@@ -450,6 +466,10 @@
|
|
|
useUtil.setPageMove("/?type=vendor");
|
|
useUtil.setPageMove("/?type=vendor");
|
|
|
loginVisible.value = "N";
|
|
loginVisible.value = "N";
|
|
|
break;
|
|
break;
|
|
|
|
|
+ case "brand":
|
|
|
|
|
+ useUtil.setPageMove("/?type=brand");
|
|
|
|
|
+ loginVisible.value = "N";
|
|
|
|
|
+ break;
|
|
|
default:
|
|
default:
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
@@ -762,3 +782,160 @@
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
</script>
|
|
</script>
|
|
|
|
|
+
|
|
|
|
|
+<style scoped>
|
|
|
|
|
+/* 게이트 컨테이너 */
|
|
|
|
|
+.gate-container {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: 1rem;
|
|
|
|
|
+ min-height: 100vh;
|
|
|
|
|
+ padding: 2rem;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 게이트 카드 */
|
|
|
|
|
+.gate-card {
|
|
|
|
|
+ background: white;
|
|
|
|
|
+ border-radius: 20px;
|
|
|
|
|
+ padding: 2.5rem 2rem;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+ width: 18rem;
|
|
|
|
|
+ min-height: 320px;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.gate-card:hover {
|
|
|
|
|
+ transform: translateY(-10px);
|
|
|
|
|
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.gate-card.actv {
|
|
|
|
|
+ transform: translateY(-15px) scale(1.05);
|
|
|
|
|
+ box-shadow: 0 25px 50px rgba(0, 0, 0, 0.2);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 게이트 아이콘 */
|
|
|
|
|
+.gate-icon {
|
|
|
|
|
+ margin-bottom: 1.5rem;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.icon-circle {
|
|
|
|
|
+ width: 80px;
|
|
|
|
|
+ height: 80px;
|
|
|
|
|
+ border-radius: 50%;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ font-size: 2.5rem;
|
|
|
|
|
+ margin: 0 auto;
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.influencer-bg {
|
|
|
|
|
+ background: linear-gradient(135deg, #ff9a9e 0%, #fecfef 100%);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.vendor-bg {
|
|
|
|
|
+ background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.brand-bg {
|
|
|
|
|
+ background: linear-gradient(135deg, #d299c2 0%, #fef9d7 100%);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.gate-card:hover .icon-circle {
|
|
|
|
|
+ transform: scale(1.1);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 게이트 콘텐츠 */
|
|
|
|
|
+.gate-content h3 {
|
|
|
|
|
+ font-size: 1.5rem;
|
|
|
|
|
+ font-weight: 700;
|
|
|
|
|
+ color: #333;
|
|
|
|
|
+ margin-bottom: 0.5rem;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.gate-content p {
|
|
|
|
|
+ color: #666;
|
|
|
|
|
+ font-size: 1rem;
|
|
|
|
|
+ margin-bottom: 2rem;
|
|
|
|
|
+ line-height: 1.5;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 게이트 버튼 */
|
|
|
|
|
+.gate-btn {
|
|
|
|
|
+ border-radius: 25px !important;
|
|
|
|
|
+ padding: 12px 30px !important;
|
|
|
|
|
+ font-weight: 600 !important;
|
|
|
|
|
+ text-transform: none !important;
|
|
|
|
|
+ transition: all 0.3s ease !important;
|
|
|
|
|
+ border: none !important;
|
|
|
|
|
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1) !important;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.influencer-btn {
|
|
|
|
|
+ background: linear-gradient(135deg, #ff9a9e 0%, #fecfef 100%) !important;
|
|
|
|
|
+ color: white !important;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.vendor-btn {
|
|
|
|
|
+ background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%) !important;
|
|
|
|
|
+ color: white !important;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.brand-btn {
|
|
|
|
|
+ background: linear-gradient(135deg, #d299c2 0%, #fef9d7 100%) !important;
|
|
|
|
|
+ color: white !important;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.gate-btn:hover {
|
|
|
|
|
+ transform: translateY(-2px) !important;
|
|
|
|
|
+ box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15) !important;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 반응형 디자인 */
|
|
|
|
|
+@media (max-width: 768px) {
|
|
|
|
|
+ .gate-container {
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+ gap: 1.5rem;
|
|
|
|
|
+ padding: 1rem;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .gate-card {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ max-width: 300px;
|
|
|
|
|
+ min-height: 280px;
|
|
|
|
|
+ padding: 2rem 1.5rem;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .icon-circle {
|
|
|
|
|
+ width: 60px;
|
|
|
|
|
+ height: 60px;
|
|
|
|
|
+ font-size: 2rem;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .gate-content h3 {
|
|
|
|
|
+ font-size: 1.3rem;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .gate-content p {
|
|
|
|
|
+ font-size: 0.9rem;
|
|
|
|
|
+ margin-bottom: 1.5rem;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 기존 스타일과 충돌 방지 */
|
|
|
|
|
+.login--gate {
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ z-index: 1;
|
|
|
|
|
+}
|
|
|
|
|
+</style>
|