mainSwiper.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <template>
  2. <div class="main--swiper--wrap">
  3. <swiper
  4. :modules="[EffectFade]"
  5. :slides-per-view="1"
  6. :space-between="0"
  7. :speed="300"
  8. effect="fade"
  9. :fadeEffect="{ crossFade: true }"
  10. @swiper="onSwiper"
  11. @slideChange="onSlideChange"
  12. class="main--swiper"
  13. >
  14. <swiper-slide v-for="(slide, index) in slides" :key="index">
  15. <div class="slide--content">
  16. <div class="img--wrap">
  17. <img v-if="slide.image" :src="slide.image" :alt="slide.title" />
  18. <video
  19. v-if="slide.video"
  20. autoplay
  21. muted
  22. loop
  23. playsinline
  24. :poster="slide.video"
  25. controlslist="nodownload noplaybackrate"
  26. disablepictureinpicture
  27. preload="metadata"
  28. >
  29. <source :src="slide.video" type="video/mp4" />
  30. </video>
  31. </div>
  32. <div class="title--wrap">
  33. <h2>{{ slide.title }}</h2>
  34. <p v-html="slide.subTitle"></p>
  35. <div class="btn--wrap" v-if="slide.btnHidden != 'hidden'">
  36. <NuxtLink class="btn--white" to="/ford/network">시승 신청</NuxtLink>
  37. <NuxtLink class="btn--blue" :to="slide.href">제품 정보 보기</NuxtLink>
  38. </div>
  39. </div>
  40. </div>
  41. </swiper-slide>
  42. </swiper>
  43. <div class="swiper--pagination--custom">
  44. <div
  45. v-for="(slide, index) in slides"
  46. :key="index"
  47. class="pagination--item"
  48. :class="{ active: currentIndex === index }"
  49. @click="goToSlide(index)"
  50. >
  51. <h2 v-html="slide.pagingTitle"></h2>
  52. </div>
  53. </div>
  54. </div>
  55. </template>
  56. <script setup>
  57. import { ref, computed, onMounted, onUnmounted } from 'vue';
  58. import { Swiper, SwiperSlide } from 'swiper/vue';
  59. import { EffectFade } from 'swiper/modules';
  60. import 'swiper/css';
  61. import 'swiper/css/effect-fade';
  62. const isMobile = ref(false);
  63. const checkMobile = () => {
  64. isMobile.value = window.innerWidth <= 768;
  65. };
  66. const isAfterLaunch = useTimeSwitch('2026-04-15T08:00:00+09:00');
  67. onMounted(() => {
  68. checkMobile();
  69. window.addEventListener('resize', checkMobile);
  70. });
  71. onUnmounted(() => {
  72. window.removeEventListener('resize', checkMobile);
  73. });
  74. const slides =
  75. isAfterLaunch.value == false ?
  76. computed(() => [
  77. {
  78. title: "",
  79. subTitle: "",
  80. pagingTitle: 'EXPLORER',
  81. image: isMobile.value ? '/img/main--visual11--mo.jpg' : '/img/main--visual11.jpg',
  82. href: "/ford/vehicle/explorer",
  83. btnHidden : "hidden"
  84. },
  85. {
  86. title: "FORD EXPEDITION",
  87. subTitle: "최대 8명이 탑승할 수 있는 편안한 좌석은 물론, <br>FORD CO-PILOT360TM 시스템이 안전하고 편안한 주행을 지원합니다.",
  88. pagingTitle: 'EXPEDITION',
  89. image: isMobile.value ? '/img/main--visual2--mo.png' : '/img/main--visual2.png',
  90. href: "/ford/vehicle/expedition",
  91. },
  92. {
  93. title: "FORD BRONCO",
  94. subTitle: "광활한 대자연을 열망하고 모험을 추구하는 내면의 열정을 실현시켜줄 진정한 버디입니다.",
  95. pagingTitle: 'BRONCO',
  96. image: isMobile.value ? '/img/main--visual3--mo.png' : '/img/main--visual3.png',
  97. href: "/ford/vehicle/bronco",
  98. },
  99. {
  100. title: "FORD RANGER",
  101. subTitle: "지금까지 출시된 포드 레인저 중 가장 스마트하고 다재다능한 레인저를 만나보십시오.",
  102. pagingTitle: 'RANGER',
  103. image: isMobile.value ? '/img/main--visual4--mo.png' : '/img/main--visual4.png',
  104. href: "/ford/vehicle/ranger",
  105. },
  106. {
  107. title: "FORD MUSTANG",
  108. subTitle: "머스탱을 소유할 최고의 타이밍",
  109. pagingTitle: 'MUSTANG',
  110. image: isMobile.value ? '/img/main--visual5--mo.png' : '/img/main--visual5.png',
  111. href: "/ford/vehicle/mustang",
  112. }
  113. ]) :
  114. computed(() => [
  115. {
  116. title: "",
  117. subTitle: "",
  118. href: "",
  119. pagingTitle: "EXPLORER",
  120. video: "https://audi.interscope.co.kr/video/flak/flak_26my_web.mp4",
  121. btnHidden : "hidden"
  122. },
  123. {
  124. title: "FORD EXPEDITION",
  125. subTitle: "최대 8명이 탑승할 수 있는 편안한 좌석은 물론, <br>FORD CO-PILOT360TM 시스템이 안전하고 편안한 주행을 지원합니다.",
  126. pagingTitle: 'EXPEDITION',
  127. image: isMobile.value ? '/img/main--visual2--mo.png' : '/img/main--visual2.png',
  128. href: "/ford/vehicle/expedition",
  129. },
  130. {
  131. title: "FORD BRONCO",
  132. subTitle: "광활한 대자연을 열망하고 모험을 추구하는 내면의 열정을 실현시켜줄 진정한 버디입니다.",
  133. pagingTitle: 'BRONCO',
  134. image: isMobile.value ? '/img/main--visual3--mo.png' : '/img/main--visual3.png',
  135. href: "/ford/vehicle/bronco",
  136. },
  137. {
  138. title: "FORD RANGER",
  139. subTitle: "지금까지 출시된 포드 레인저 중 가장 스마트하고 다재다능한 레인저를 만나보십시오.",
  140. pagingTitle: 'RANGER',
  141. image: isMobile.value ? '/img/main--visual4--mo.png' : '/img/main--visual4.png',
  142. href: "/ford/vehicle/ranger",
  143. },
  144. {
  145. title: "FORD MUSTANG",
  146. subTitle: "머스탱을 소유할 최고의 타이밍",
  147. pagingTitle: 'MUSTANG',
  148. image: isMobile.value ? '/img/main--visual5--mo.png' : '/img/main--visual5.png',
  149. href: "/ford/vehicle/mustang",
  150. }
  151. ]);
  152. const swiperInstance = ref(null);
  153. const currentIndex = ref(0);
  154. const onSwiper = (swiper) => {
  155. swiperInstance.value = swiper;
  156. };
  157. const onSlideChange = (swiper) => {
  158. currentIndex.value = swiper.activeIndex;
  159. };
  160. const goToSlide = (index) => {
  161. if (swiperInstance.value) {
  162. swiperInstance.value.slideTo(index);
  163. }
  164. };
  165. </script>