Front-End/Library

Library] Swiper

μ™•κ°€πŸ‘ 2023. 6. 29. 17:00
728x90
λ°˜μ‘ν˜•

Swiper

μ΄λ²ˆμ— ν”„λ‘œμ νŠΈ μ§„ν–‰ν•˜λ©΄μ„œ μ‚¬μš©ν•œ Swiper λΌμ΄λΈŒλŸ¬λ¦¬μ— λŒ€ν•΄ 적어보렀고 ν•©λ‹ˆλ‹€.

곡식 ν™ˆνŽ˜μ΄μ§€λŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

https://swiperjs.com/react

 

μ œκ°€ μš”μ¦˜μ€ React만 μ‚¬μš©ν•˜κ³  있기 λ•Œλ¬Έμ— Reactλ°©μ‹μœΌλ‘œ μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

 

 


 

 

μ„€μΉ˜

npm i swiper

 

 


 

 

κΈ°λ³Έ ꡬ성

 

곡식 ν™ˆνŽ˜μ΄μ§€μ— λ‚˜μ™€μžˆλŠ” μ†ŒμŠ€μ—μ„œ 이것저것 μˆ˜μ •ν•΄ λ΄€μŠ΅λ‹ˆλ‹€.

κ°„λ‹¨νžˆ μ„€λͺ…ν•˜κ³ , μ œκ°€ μ‚¬μš©ν–ˆλ˜ 방법 μ„€λͺ…ν•˜λ €κ³  ν•©λ‹ˆλ‹€.

 

  • modules : κΈ°λ³Έ Swiper 외에 λͺ¨λ“ˆμ„ μΆ”κ°€ν•˜μ—¬ λ””μžμΈμ„ μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    Navigation, Pagination, Scrollbar 총 3가지 λͺ¨λ“ˆμ„ μΆ”κ°€ν•œ μƒνƒœμž…λ‹ˆλ‹€.
    μ‚¬μš©λœ λͺ¨λ“ˆλ“€μ€ μΆ”κ°€λ‘œ μ˜΅μ…˜μ„ μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    μœ„ μ˜ˆμ‹œλ‘œλŠ” paginationκ³Ό scrollbar에 μ˜΅μ…˜μ΄ μΆ”κ°€λœ μƒνƒœμž…λ‹ˆλ‹€.
  • spaceBetween : μŠ¬λΌμ΄λ“œμ™€ μŠ¬λΌμ΄λ“œ 사이 κ°„κ²©μž…λ‹ˆλ‹€.
    μ›λž˜ slidesPerView 값이 없을 κ²½μš°μ—λŠ” μŠ¬λΌμ΄λ“œ ν•˜λ‚˜κ°€ 전체λ₯Ό μ°¨μ§€ν•˜κΈ° λ•Œλ¬Έμ—
    slidesPerView μ˜΅μ…˜μ„ μ‚¬μš©ν•  경우 μ‚¬μš©ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.
  • slidesPerView : ν•˜λ‚˜μ˜ 화면에 λͺ‡ 개의 μŠ¬λΌμ΄λ“œλ₯Ό 보여쀄지 μ •ν•΄μ€λ‹ˆλ‹€.
    값이 없을 경우 전체λ₯Ό ν•œ 개의 μŠ¬λΌμ΄λ“œκ°€ μ°¨μ§€ν•˜κ²Œ λ©λ‹ˆλ‹€.
  • navigation : navigationμ˜΅μ…˜ μ‚¬μš© μœ λ¬΄μž…λ‹ˆλ‹€.
  • pagination : paginationμ˜΅μ…˜ μ‚¬μš© μœ λ¬΄μž…λ‹ˆλ‹€. 
  • scrollbar : scrollbarμ˜΅μ…˜ μ‚¬μš© μœ λ¬΄μž…λ‹ˆλ‹€. 
  • onSwipeer : Swiperκ°€ μ‹€ν–‰ 됐을 λ•Œ, ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • onSlideChange : Slideλ₯Ό 바꿨을 λ•Œ, ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš©λœ μ˜΅μ…˜μ— λŒ€ν•œ μ„€λͺ…을 κ°„λ‹¨νžˆ ν•˜μ˜€κ³ , 훨씬 더 λ§Žμ€ μ˜΅μ…˜μ΄ μžˆλŠ”λ° μžμ„Έν•œ 사항은 μ•„λž˜ κ³΅ν™ˆμ— λ‚˜μ™€μžˆμŠ΅λ‹ˆλ‹€.

https://swiperjs.com/swiper-api

 

μœ„μ˜ λ‚΄μš©λ§ŒμœΌλ‘œλ„ 기본적인 Swiperλ₯Ό ꡬ성할 수 μžˆμ„ κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€.
κ³΅ν™ˆμ— Demo둜 μ˜ˆμ‹œλ„ λ‚˜μ™€μžˆμœΌλ‹ˆ μ°Έκ³ ν•˜μ‹œλ©΄ 될 λ“―ν•©λ‹ˆλ‹€.

 

 


 

 

적용 사둀

import { Mousewheel, Pagination } from 'swiper';
import { Swiper, SwiperSlide } from 'swiper/react';


import 'swiper/css';
import 'swiper/css/pagination';
import 'swiper/css/navigation';


function Swiper() {
    return (
    <Swiper
      direction="vertical"
      pagination={{
        clickable: true,
        el: '.customPagination',
        dynamicBullets: true,
        dynamicMainBullets: 5,
      }}
      mousewheel
      modules={[Pagination, Mousewheel]}
      allowTouchMove={false}
      onSlideChange={swiper => {
        dispatch(...);
      }}
      style={{
        width: `${String(80 * scale)}vh`,
        height: `${String(80 * scale)}vh`,
        minWidth: '482px',
        minHeight: '482px',
      }}
    >
      {data.map(value => (
        <SwiperSlide key={value.id}>
          <SlideComponent
            img={value}
            key={value.id}
            setActive={setActive}
          />
        </SwiperSlide>
      ))}
    </Swiper>
  );
}

export default Swiper;

 

μ‹€μ œλŠ” 더 λ³΅μž‘ν•˜μ§€λ§Œ, 많이 μƒλž΅ν•˜κ³  μ§€μ›Œμ„œ κ°„λ‹¨ν•˜κ²Œ Swiperμ†ŒμŠ€λ§Œ μ„€λͺ…ν•˜λ €κ³  ν•©λ‹ˆλ‹€.

μ²˜μŒμ— Swiper 라이브러리 μ‚¬μš©ν•  λ•Œ, λ­”κ°€ μ‹€μ œλ‘œ μ‚¬μš©ν•œ μ˜ˆμ‹œλ₯Ό μ°Ύκ³  μ‹Άμ—ˆλŠ”λ° 많이 μ—†μ–΄μ„œ 쑰금 μ‹œν–‰μ°©μ˜€λ₯Ό κ²ͺμ—ˆκ³ , μ‘°κΈˆμ€ 더 도움이 λ˜μ§€ μ•Šμ„κΉŒ μ‹ΆμŠ΅λ‹ˆλ‹€.(λ‚˜μ€‘μ— λ‚΄κ°€ λ‹€μ‹œ μ‚¬μš©ν•  λ•Œλ„ 보면 μ’‹κ³ ...)

 

  • direction : 값을 'vertical'을 μ€˜μ„œ 기쑴에 κ°€λ‘œλ‘œ μ›€μ§μ΄λ˜ μŠ¬λΌμ΄λ“œλ₯Ό μ„Έλ‘œλ‘œ λ°”κΏ¨μŠ΅λ‹ˆλ‹€.
  • pagination : pagination을 μ‚¬μš©ν•˜μ˜€κ³ , 4가지 μ˜΅μ…˜μ„ μΆ”κ°€ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
    • clickable : pagination μ‚¬μš©μœΌλ‘œ 생긴 Bullet을 λˆŒλŸ¬μ„œ μŠ¬λΌμ΄λ“œλ₯Ό 이동할지에 λŒ€ν•œ μ˜΅μ…˜μž…λ‹ˆλ‹€.
    • el : 기본으둜 μ œκ³΅ν•˜λŠ” pagination을 μ»€μŠ€ν…€λ§ˆμ΄μ§•ν•˜λ €κ³  μΆ”κ°€ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 
    • dynamicBullets : μ‚¬μš©λ˜λŠ” Bullet을 κ°•μ‘°ν•˜κΈ° μœ„ν•˜ μ˜΅μ…˜μž…λ‹ˆλ‹€.
    • dynamicMainBullets : μœ„μ—μ„œ κ°•μ‘°ν•œ Bullet의 개수λ₯Ό μ •ν•΄μ€λ‹ˆλ‹€.
 <div className="customPagination" />
  • mousewheel : 마우슀 νœ μ„ μ‚¬μš©ν•΄μ„œ λ‹€μŒ μŠ¬λΌμ΄λ“œλ‘œ λ„˜μ–΄κ°ˆ 수 μžˆλ„λ‘ ν•΄μ€λ‹ˆλ‹€.
  • allowTouchMove : μŠ¬λΌμ΄λ“œλ₯Ό λ“œλž˜κ·Έν•΄μ„œ λ„˜κΈ°κ²Œ 되면 μŠ¬λΌμ΄λ“œκ°€ λ„˜μ–΄κ°€λŠ”λ°, 이λ₯Ό 막기 μœ„ν•΄ μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.
  • style : Swiper에 style을 μ€˜μ„œ 직접 cssλ₯Ό μˆ˜μ •ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

μΆ”κ°€λ‘œ Slideλ₯Ό Component둜 λ‚˜λˆ μ„œ κ°œλ°œν•˜μ˜€μŠ΅λ‹ˆλ‹€.

ν˜Ήμ‹œλ‚˜ CSSλ₯Ό μˆ˜μ •ν•˜λ €κ³  ν–ˆλŠ”λ° 적용이 μ•ˆλ˜μ‹œλŠ” 뢄듀은 μƒˆλ‘œ λ§Œλ“  css파일이 μ•„λ‹Œ global.css에 μ μš©ν•˜μ…¨λŠ”μ§€ ν™•μΈν•˜μ‹œκ³ , devtool μ°μ–΄λ³΄λ©΄μ„œ μ›ν•˜λŠ” μŠ€νƒ€μΌμ— !important μ μ–΄μ£Όμ‹œλ©΄ 될 κ²ƒμž…λ‹ˆλ‹€.

 

 


 

 

많이 μ‚¬μš©λ λ§Œν•œ λΌμ΄λΈŒλŸ¬λ¦¬μ΄μ§€ μ•Šλ‚˜ μ‹ΆμŠ΅λ‹ˆλ‹€.
μ›ΉνŽ˜μ΄μ§€ λŒμ•„λ‹€λ‹ˆλ‹€λ³΄λ©΄ 많이 λ³΄μ΄λŠ” κΈ°λŠ₯이기도 ν•˜κ³ , ν™œμš©λ„λ„ λ†’μ•„ λ³΄μž…λ‹ˆλ‹€.

 

728x90

'Front-End > Library' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

Library] SWR : μ‘μš©_Mutate & Revalidation  (0) 2023.07.03
Library] SWR : μ‘μš©  (0) 2023.07.03
Library] SWR  (0) 2023.07.03
Library] Axios : μ‘μš©  (0) 2023.06.28
Library] Axios  (0) 2023.06.27