<header class="header"> <div class="header-menu on"> ...์ฒซ๋ฒ์งธ ๋ฉ๋ด </div> <div class="header-menu2"> ...2๋ฒ์งธ ๋ฉ๋ด <div class="group-menu2"> ... </div> <nav class="gnb2"> <ul class="gnb2-list"> <li class="gnb2-item"> <a href="" class="link-newsale"> ์ ์ํ ์ธ </a> </li> <li class="gnb2-item"> ... </li> </ul> </nav> </div> </header>
.header .header-menu2{ position: fixed; top: 0; background: #fff; z-index: 2; width: 100%; visibility: hidden; transition: transform 0.3s; } .header .header-menu2.on{ visibility: visible; }
let lastScroll = 0; $(window).scroll(function(){ curr= $(this).scrollTop(); if (curr>=30) { $('.header .header-menu2').addClass('on'); } else { $('.header .header-menu2').removeClass('on'); }; if (curr>=50) { if (curr > lastScroll){ $('.header .group-menu2').slideUp(); } else{ $('.header .group-menu2').slideDown(); } } else { $('.header .group-menu2').slideDown(); }; lastScroll = curr; });
์ด์ ์คํฌ๋กค ์์น๋ฅผ ์ ์ฅํ๋ ๋ณ์ lastScroll
๋ฅผ ์ด๊ธฐํ (let
์ ์ฌ์ฉํ์ฌ lastScroll
์ ๊ฐ ์
๋ฐ์ดํธ)
window
์ ์คํฌ๋กค ์ด๋ฒคํธ๊ฐ ์์๋ ์คํ๋ ํจ์ ๋ง๋ค๊ธฐ $(window).scroll(function(){});
ํ์ฌ ์คํฌ๋กค ์์น scrollTop();
๋ฅผ ๋ณ์ curr
์ ์ ์ฅ
์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํ์ฌ ํ์ฌ ์คํฌ๋กค ์์น curr
๊ฐ 30 ์ด์์ผ๋, .header .header-menu2
์ on
ํด๋์ค๋ฅผ ์ถ๊ฐํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด on
ํด๋์ค๋ฅผ ์ ๊ฑฐํ๊ธฐ
์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํ์ฌ ํ์ฌ ์คํฌ๋กค ์์น curr
๊ฐ 50 ์ด์์ด๋ฉด์, ์ด์ ์คํฌ๋กค ์์น lastScroll
๋ณด๋ค ํฌ๋ฉด (์๋ ๋ฐฉํฅ์ผ๋ก ์คํฌ๋กค ํ ๋) .group-menu2
์ slideUp();
๋ฉ๋ด๋ฅผ ๋ซ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด (์์ชฝ์ผ๋ก ์คํฌ๋กค ํ ๋)slideDown();
๋ฉ๋ด ์ด๊ธฐ
ํ์ฌ ์คํฌ๋กค ์์น๊ฐ 50 ๋ฏธ๋ง์ผ๋๋ group-menu2
์ slideDown();
๋ฉ๋ด๋ฅผ ์ด๊ธฐ
๋ค์ ์คํฌ๋กค ์ด๋ฒคํธ์์ ๋ค์ ๋น๊ตํ๊ธฐ ์ํด ํ์ฌ ์คํฌ๋กค ์์น curr
๋ฅผ ์ด์ ์คํฌ๋กค ์์น lastScroll
๋ก ์
๋ฐ์ดํธํ๊ธฐ
<section class="sc-best"> <h2 class="headline">๋ฒ ์คํธ ์์ดํ </h2> <div class="swiper best-slide"> <div class="swiper-pagination"></div> <div class="swiper-wrapper"> <div class="swiper-slide"> ... </div> </div> </div> </section>
.sc-best .swiper-pagination{ display: flex; padding: 0 5%; gap: 6%; padding-bottom: 20px; } .sc-best .swiper-pagination button{ height: 25px; line-height: 25px; font-size: 14px; color: #aaa; } .sc-best button.swiper-pagination-bullet-active{ color:#000; font-weight: 600; position: relative; display: flex; flex-direction: column; align-items: center; } .sc-best button.swiper-pagination-bullet-active::after{ content: ''; width: 7px; height: 7px; background: #ff6d44; border-radius: 50%; }
bestBtn = ['์ ์ฒด', '๋งจ์ฆ', '์์ฐํฐ', '๊ณจํ', 'ํค์ฆ', '์์ฆ&์ฉํ'] const bestSlide = new Swiper(".best-slide", { pagination: { el: ".best-slide .swiper-pagination", clickable: true, renderBullet: function (index, className) { return '<button class="' + className + '">' + (bestBtn[index]) + '</button>'; } } });
๋ฒํผ์ ํ์๋ ํ
์คํธ๋ฅผ ๋ด์ ๋ฐฐ์ด์ ์ ์ธ (bestBtn
)
Swiper
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋์ค .best-slide
๋ฅผ ์ฌ๋ผ์ด๋๋ก ์ด๊ธฐํ
pagination
์ el
์ ํ์ฉํ์ฌ ํ์ด์ง์ด ์ถ๊ฐ๋ ํด๋์ค๋ฅผ ์ง์ ํ๊ธฐ
๊ฐ๊ฐ์ Bullet
(๋ฒํผ)์ ๋ ๋๋งํ๋ ํจ์๋ฅผ ์ ์
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ Bullet
(๋ฒํผ)์ HTML
์ฝ๋๋ฅผ ๋์ ์ผ๋ก ์์ฑ. ํ
์คํธ๊ฐ ๋ค์ด๊ฐ๋ ์๋ฆฌ์ bestBtn[index]
๋ฅผ ๋ฃ์ด ๋ฐฐ์ด์์ ๊ฐ๊ฐ ํด๋น ์ธ๋ฑ์ค์ ์์นํ ํ
์คํธ๊ฐ ์์๋๋ก ๋ค์ด๊ฐ์ ์๋๋ก ๋ง๋ค๊ธฐ. ์ฌ๊ธฐ์ *className
์ Swiper
๊ฐ ์ ๊ณตํ๋ ํด๋์ค ์ด๋ฆ
๊ฐ๋ฐ์ ๋ชจ๋๋ก Bullet
(๋ฒํผ)์ ์์น ๋ฐ ํด๋์ค๋ฅผ ํ์
ํ ํ CSS๋ฅผ ํ์ฉํ์ฌ ์คํ์ผ๋ง ํ๊ธฐ
const mySwiper = new Swiper('.swiper-container', { ... autoplay: { delay: 5000, disableOnInteraction: false, }, });
Swiper
์ autoplay
์ต์
์ ์ฌ๋ผ์ด๋๊ฐ ์๋์ผ๋ก ๋ณ๊ฒฝ๋๋ ์๋ ์ฌ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
autoplay
์ ์ต์
delay
๋ ์ฌ๋ผ์ด๋ ๊ฐ์ ์๋ ์ ํ ์ง์ฐ ์๊ฐ์ ๋ฐ๋ฆฌ์ด ๋จ์๋ก ์ค์ ํ ์ ์๊ฒ ํ๋ฉฐ ๋ง์ฝ์ delay
์ ๊ฐ์ด ์๋ค๋ฉด ์๋ ์ฌ์์ด ๋์ง ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก, ์ฌ์ฉ์๊ฐ ์ฌ๋ผ์ด๋์ ์ํธ ์์ฉํ ๋ (์ง์ Swipe
ํ ๋) ์๋ ์ฌ์์ด ์ผ์ ์ค์ง๋ฉ๋๋ค. ์ด ์ต์
์ false
๋ก ์ค์ ํ๋ฉด ์ฌ์ฉ์์ ์ํธ ์์ฉ ํ์๋ ์๋ ์ฌ์์ด ๊ณ์ ์ ์ง๋ฉ๋๋ค.
const mySwiper = new Swiper('.swiper-container', { slidesPerView: 3, spaceBetween: 20, });
slidesPerView
๋ ํ์ฌ ํ๋ฉด์ ๋ช ๊ฐ์ ์ฌ๋ผ์ด๋๊ฐ ๋ณด์ด๋์ง๋ฅผ ๋ํ๋ด๋ฉฐ ์ ์(1,2,3,...) ๊ฐ์ผ๋ก ์ค์ ํ๊ฑฐ๋ auto๋ก ์ค์ ํ ์ ์์ต๋๋ค.
*auto
๋ก ์ค์ ํ์๋๋ ๊ฐ ์ฌ๋ผ์ด๋๋ค์ width
๋ฅผ ๊ผญ auto
๋ก ์ค์ ํด์ผ ํฉ๋๋ค. (auto
๋ก ์ค์ ํ์ง ์์ผ๋ฉด 1๊ฐ์ ์ฌ๋ผ์ด๋๋ง ๋ณด์ด๊ฒ ๋๋ค.)
spaceBetween
์ ์ฌ๋ผ์ด๋ ๊ฐ์ ๊ฐ๊ฒฉ์ ์ค์ ํฉ๋๋ค. ํฝ์
๋จ์๋ก ๊ฐ์ ์ค์ ํ๊ฑฐ๋(px
์๋ต), auto
๋ก ์ค์ ํ์ฌ ์ฌ๋ผ์ด๋ ๊ฐ์ ๊ฐ๊ฒฉ์ ์๋์ผ๋ก ์กฐ์ ํ ์ ์์ต๋๋ค.
const mySwiper = new Swiper('.swiper-container', { loop: true, speed: 1000, });
loop
์ ์ฌ๋ผ์ด๋๊ฐ ์ฒ์์์ ๋์ผ๋ก ์ด๋ํ๊ฑฐ๋ ๋์์ ์ฒ์์ผ๋ก ์ด๋ํ ๋ ๋ฌดํ ๋ฃจํ๋ฅผ ์์ฑํฉ๋๋ค.
speed
๋ ์ฌ๋ผ์ด๋ ์ ํ์ ์๋๋ฅผ ๋ฐ๋ฆฌ์ด ๋จ์๋ก ์ง์ ํ๋ฉฐ ๊ฐ์ด ๋ฎ์์๋ก ๋น ๋ฅด๊ฒ, ๋์์๋ก ๋๋ฆฌ๊ฒ ์ ํ๋ฉ๋๋ค.
pagination: { el: '.swiper-pagination', clickable: true, }
Swiper
๊ฐ ์๋์ผ๋ก ์์ฑํ๋ ํ์ด์ง ๋ฒํผ์ผ๋ก ๊ฐ ์ฌ๋ผ์ด๋์ ๋ํ ์์ ์ bullet
์ด ํ์ด์ง๋ฅผ ๋ํ๋
๋๋ค.
pagination: { el: '.swiper-pagination', type: 'fraction', }
ํ์ฌ ์ฌ๋ผ์ด๋์ ์ธ๋ฑ์ค์ ์ ์ฒด ์ฌ๋ผ์ด๋ ๊ฐ์๋ฅผ ๋ถ์ ํํ๋ก ํ์ํ๋ pagination
์
๋๋ค.
pagination: { el: '.swiper-pagination', type: 'progressbar', }
์ฌ๋ผ์ด๋ ์ ํ ์งํ ์ํฉ์ ๋ํ๋ด๋ ์งํ ๋ง๋ ํํ์ pagination
์
๋๋ค.
scrollbar: { el: '.swiper-scrollbar', hide: false, draggable: true, }
scrollbar
์ต์
์ ์ฌ๋ผ์ด๋ ์ปจํ
์ด๋์ ์ํ ๋๋ ์์ง ์คํฌ๋กค๋ฐ๋ฅผ ์ถ๊ฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ฌ๋ผ์ด๋๋ฅผ ์คํฌ๋กคํ ๋ ์ด๋์ ์๋์ง๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ํ๋ด๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
์คํฌ๋กค๋ฐ๋ฅผ ์จ๊ธธ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. true
๋ก ์ค์ ํ๋ฉด ์ฌ์ฉ์๊ฐ ๋ง์ฐ์ค๋ฅผ ์์ง์ผ ๋๋ง ์คํฌ๋กค๋ฐ๊ฐ ํ์๋ฉ๋๋ค.
์ฌ์ฉ์๊ฐ ์คํฌ๋กค๋ฐ๋ฅผ ์ง์ ์กฐ์ํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. true
๋ก ์ค์ ํ๋ฉด ์ฌ์ฉ์๊ฐ ์คํฌ๋กค๋ฐ๋ฅผ ๋๋๊ทธํ์ฌ ์ฌ๋ผ์ด๋๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค.
*Progress
์ ํผ๋ํ์ง ์๋๋ก ์ฃผ์ํด์ผ ํฉ๋๋ค.