GridBanner2.vue 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. <template>
  2. <div class="grid--banner--type2">
  3. <ul>
  4. <li v-for="(item, index) in items" :key="index">
  5. <div class="thumb">
  6. <img :src="item.image" :alt="item.title || '배너 이미지'" loading="lazy" />
  7. </div>
  8. <div class="desc--wrapper">
  9. <h2 v-if="item.title">{{ item.title }}</h2>
  10. <h3 v-if="item.subtitle">{{ item.subtitle }}</h3>
  11. <NuxtLink
  12. v-if="item.linkUrl"
  13. class="more--detail--href mt--20 ft--16"
  14. :to="item.linkUrl"
  15. :target="item.linkTarget || '_self'"
  16. >
  17. {{ item.linkText || "자세히 보기" }} <i class="ico"></i>
  18. </NuxtLink>
  19. </div>
  20. </li>
  21. </ul>
  22. </div>
  23. </template>
  24. <script setup>
  25. // Props 정의
  26. const props = defineProps({
  27. items: {
  28. type: Array,
  29. required: true,
  30. validator: (value) => {
  31. return value.every(
  32. (item) => item.hasOwnProperty("image") && item.hasOwnProperty("title")
  33. );
  34. },
  35. },
  36. });
  37. </script>