diff --git a/layers/assets/css/app.css b/layers/assets/css/app.css index 86458e7..1b011e2 100644 --- a/layers/assets/css/app.css +++ b/layers/assets/css/app.css @@ -1,8 +1,10 @@ @import './base/_theme.css'; @import './base/_reset.css'; -@import './components/_swiper-pagination.css'; +@import './components/_splide.css'; @import './components/_button.css'; +@import '@splidejs/vue-splide/css'; + @tailwind base; @tailwind components; @tailwind utilities; diff --git a/layers/assets/css/components/_splide.css b/layers/assets/css/components/_splide.css new file mode 100644 index 0000000..6581cf4 --- /dev/null +++ b/layers/assets/css/components/_splide.css @@ -0,0 +1,102 @@ +/* 페이지네이션 버튼 - 모바일 퍼스트 */ +.splide-pagination-bullets { + width: 100%; + display: flex; + justify-content: center; + align-items: center; + gap: 12px; + margin-top: 24px; + z-index: 5; +} + +.splide-pagination-bullets.type-full { + position: absolute; + bottom: 32px; + left: 0; +} + +.splide-pagination-bullet { + position: relative; + width: 8px; + height: 8px; + background: var(--primary); + border-radius: 50%; + opacity: 1; +} + +.splide-pagination-bullet:after { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border-radius: 50%; + background: rgba(0, 0, 0, 0.5); + transition: opacity 0.3s ease; +} + +.splide-pagination-bullet.is-active:after { + opacity: 0; +} + +/* 네비게이션 버튼 - 모바일 퍼스트 */ +.splide-arrow { + display: none; + /* position: absolute; + top: 50%; + width: 40px; + height: 40px; + transform: translateY(-50%); + background-size: cover; + background-position: center; + background-repeat: no-repeat; + cursor: pointer; + z-index: 5; + background-color: var(--primary); */ +} + +/* .type-full .arrow-prev { + left: 20px; +} +.type-full.arrow-next { + right: 20px; +} */ + +/* 데스크톱 스타일 */ +@media (min-width: 1024px) { + .splide-pagination-bullets { + gap: 24px; + margin-top: 32px; + } + + .splide-pagination-bullets.position-absolute { + bottom: 48px; + } + + .splide-pagination-bullet { + width: 12px; + height: 12px; + } + + .splide-arrow { + display: block; + position: absolute; + top: 50%; + background-size: cover; + background-position: center; + background-repeat: no-repeat; + background-color: var(--primary); + transform: translateY(-50%); + cursor: pointer; + z-index: 5; + } + + .type-full .arrow-prev { + left: 40px; + } + + .type-full .arrow-next { + right: 40px; + } +} diff --git a/layers/assets/css/components/_swiper-pagination.css b/layers/assets/css/components/_swiper-pagination.css deleted file mode 100644 index af4e031..0000000 --- a/layers/assets/css/components/_swiper-pagination.css +++ /dev/null @@ -1,73 +0,0 @@ -/* 페이지네이션 버튼 */ -main .slide-pagination.swiper-pagination-bullets { - position: absolute; - bottom: 48px; - left: 0; - width: 100%; - display: flex; - justify-content: center; - align-items: center; - gap: 24px; - z-index: 5; -} - -.slide-pagination .swiper-pagination-bullet { - position: relative; - width: 12px; - height: 12px; - background: var(--primary); - border-radius: 50%; - opacity: 1; -} - -.slide-pagination .swiper-pagination-bullet:after { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - border-radius: 50%; - background: rgba(0, 0, 0, 0.5); -} - -.slide-pagination .swiper-pagination-bullet-active:after { - display: none; -} - -/* 네비게이션 버튼 */ -.slide-prev, -.slide-next { - position: absolute; - top: 50%; - transform: translateY(-50%); - width: 48px; - height: 48px; - background-size: cover; - background-position: center; - background-repeat: no-repeat; - cursor: pointer; - z-index: 5; - - background-color: var(--primary); -} - -.slide-prev { - left: 40px; -} - -.slide-next { - right: 40px; -} - -@media (max-width: 1023px) { - main .slide-pagination.swiper-pagination-bullets { - bottom: 32px; - gap: 12px; - } - - .slide-pagination .swiper-pagination-bullet { - width: 8px; - height: 8px; - } -} diff --git a/layers/components/widgets/BannerList.vue b/layers/components/widgets/BannerList.vue new file mode 100644 index 0000000..671c405 --- /dev/null +++ b/layers/components/widgets/BannerList.vue @@ -0,0 +1,230 @@ + + + + + diff --git a/layers/components/widgets/ButtonList.vue b/layers/components/widgets/ButtonList.vue index d5d9830..c1568b7 100644 --- a/layers/components/widgets/ButtonList.vue +++ b/layers/components/widgets/ButtonList.vue @@ -1,16 +1,9 @@