Pārlūkot izejas kodu

게이트페이지 수정

DESKTOP-T61HUSC\user 4 mēneši atpakaļ
vecāks
revīzija
0fb35fc4fd
2 mainītis faili ar 228 papildinājumiem un 50 dzēšanām
  1. 2 1
      assets/scss/style.scss
  2. 226 49
      pages/index.vue

+ 2 - 1
assets/scss/style.scss

@@ -3696,7 +3696,8 @@ p.success-txt {
 
   .login-box {
     display: flex;
-    width: 100%;
+    //width: 100%;
+    width: 50%;
     max-width: 1200px;
     margin: auto;
     border-radius: 20px;

+ 226 - 49
pages/index.vue

@@ -1,26 +1,59 @@
 <template>
   <div class="login-wrap">
     <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
-        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>
@@ -173,6 +206,7 @@
   const pageId = "login";
   const gate1 = ref(false);
   const gate2 = ref(false);
+  const gate3 = ref(false);
   const loginVisible = ref("N");
 
   const i18n = useI18n();
@@ -316,39 +350,21 @@
   }
 
   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 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");
         loginVisible.value = "N";
         break;
+      case "brand":
+        useUtil.setPageMove("/?type=brand");
+        loginVisible.value = "N";
+        break;
       default:
         break;
     }
@@ -762,3 +782,160 @@
     return true;
   }
 </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>