swiper 시작하기

 

파일 다운받기(NPM)

https://swiperjs.com/get-started#installation

 

Getting Started With Swiper

Swiper is the most modern free mobile touch slider with hardware accelerated transitions and amazing native behavior.

swiperjs.com

 

링크 추가하기(CDN)

장점

- 간단하고 편함

- 업데이트 됐을 때 자동 적용

- 실무에서 보통 많이 사용

 

단점

- 이전버전을 쓰다 업데이트 됐을 경우 깨지거나 이슈가 있을 수 있음

(오류가 있다 수정된 경우/디자인이나 레이아웃 관련해선 적다고 함)

<head>
    <link rel="stylesheet" 
    		href="https://unpkg.com/swiper@7/swiper-bundle.min.css"/>
    <script src="https://unpkg.com/swiper@7/swiper-bundle.min.js"></script>
</head>

 

 

기본구조

head에 링크추가 후 body에 swiper 추가 해준다

해당 클래스명이 없으면 슬라이더 작동이 안되기 때문에 필요한 클래스는 꼭! 넣어줄 것

<body>
    <!-- Slider main container -->
    <!-- 해당클래스명이 없으면 슬라이더 작동 불가능 -->
    <div class="swiper-container">
        <!-- Additional required wrapper -->
        <div class="swiper-wrapper">
            <!-- Slides -->
            <div class="swiper-slide">Slide 1</div>
            <div class="swiper-slide">Slide 2</div>
            <div class="swiper-slide">Slide 3</div>
          ...
        </div>
        <!-- 페이징 필요시 추가 -->
        <div class="swiper-pagination"></div>
        <!-- 이전, 다음 버튼 필요시 추가 -->
        <div class="swiper-button-prev"></div>
        <div class="swiper-button-next"></div>
        <!-- 스크롤 필요시 추가 -->
        <div class="swiper-scrollbar"></div>
    </div>
</body>

 

 

기본 설정 및 옵션추가

body 맨 마지막에 스크립트를 열고 추가해줘야 함

<script>
const swiper = new Swiper('.swiper', {
    // 옵션
    direction: 'vertical',
    loop: true,
    slidesPerView: "auto",
    autoplay: {
    	delay: 3000,
    },
    // 페이징 출력 시 추가
    pagination: {
    	el: '.swiper-pagination',
    },
    // nav 화살표 출력 시 추가
    navigation: {
        nextEl: '.swiper-button-next',
        prevEl: '.swiper-button-prev',
    },
    // 스크롤 출력 시 추가
    scrollbar: {
    	el: '.swiper-scrollbar',
    },
});
</script>

 

- 옵션
    autoplay: {
    // 자동재생
      delay: 3000, 
      // 시간 설정
      disableOnInteraction: false, 
      // false로 설정 시 스와이프 후 자동 재생이 비활성화 되지 않음
    }
    allowTouchMove: true, 
    // false시 버튼으로만 슬라이드 조작
    ally: false, 
    // 접근성 매개변수 (이건 아직 잘 모르겠음)
    autoHeight: true, 
    // true로 설정시 슬라이더 래퍼가 현재 활성 슬라이드의 높이에 맞게 조정
    centeredSlides: true, 
    // 슬라이드 가운데 여부
    direction : 'horizontal',
    // 슬라이드의 진행방향(horizontal = 가로(기본), vertical = 세로)
    freeMode: false, 
    // 슬라이드 넘길 때 위치 고정 여부
    loop : true,   
    // 반복 여부, false 일 경우 슬라이더 수 만큼 보여준 후 첫번째로 돌아오지 않음
    loopAdditionalSlides : 1,
    // 슬라이드 반복시 마지막 슬라이드에서 다음 슬라이드가 보여지지 않는 현상 수정
    resistance: false, 
    // 슬라이드 터치에 대한 저항 여부
    slidesPerView : 5, 
    // 한 슬라이드에 보여지는 갯수
    spaceBetween : 10, 
    // 슬라이드 사이 여백
    slideToClickedSlide: true, 
    // 해당 슬라이드 클릭시 슬라이드 위치로 이동
    slidesOffsetBefore: 10, 
    // 슬라이드 시작 부분 여백
    slidesOffsetAfter: 10,
    // 슬라이드 마지막 부분 여백
    watchOverflow: true, 
    // 슬라이드가 1개일 때 페이징, 버튼 숨김 여부
    
    // 페이징버튼
    pagination: {
    	el: '.pagination',
        // 페이징 버튼 담을 태그 설정
        clickable: true, 
        // 버튼 클릭 여부
        type: 'bullets', 
        // 버튼 모양 선택(bullets, fraction)
    }
    // 반응형
    breakpoints: {
        720: {
        // width 값
            spaceBetween: 20,
        }
    }

 

 

활용 예시

<script>
    const swiper = new Swiper('.swiper', {
        direction: 'vertical',
        loop: true,
    });

    // 변수 활용 예시
    var slideSetting = {
        slidesPerView: "auto", 
        spaceBetween: 10,
    }
    					// 변수
    const swiper = new Swiper('.swiper', slideSetting);
</script>

 

 

메소드

// ex) slide.autoplay.start()
.slideTo(index, speed, runCallbacks)
// 해당 슬라이드로 이동
.slidePrev(index, speed, runCallbacks)
// 이전 슬라이드로 이동
.slideNext(index, speed, funCallbacks)
// 다음 슬라이드로 이동
.autoplay.start();
// 자동 재생 시작
.autoplay.stop();
// 자동 재생 정지
.destroy();
// 슬라이드 제거

 

 

 

참고

https://swiperjs.com/swiper-api

 

Swiper API

Swiper is the most modern free mobile touch slider with hardware accelerated transitions and amazing native behavior.

swiperjs.com

 

지원되는 브라우저

chrome1.0+, firefox1.0+, internet explorer8.0+, opera7.0+, safari1.0+

 

어디서부터 특정해서 보여줄 지 나타냄

 

clip 문법

 

clip: auto;

 

auto - 요소의 모든 부분

shape - 특정부분

initial - 기본 값

inherit - 부모 요소의 값 상속

unset - 초기화

 

position 속성 값이 absolute, fixed 일 때 적용 가능

rect(top, right, bottom, left)

 

top이 0일 때 맨 위에서부터 보여줌

bottom이 0일 때 맨 아래에서부터 보여줌

left이 0일 때 왼쪽부터 보여줌

right가 0일 때 안보이지만 이미지 크기만큼 줄 경우 다 보여줌

 

예시 

이미지 크기 320*240 라고 할 때

<!DOCTYPE html>
<html lang="ko">
<head>
    <title>clip 알아보기</title>
</head>
<style>
    .test{
        position: absolute;
        width: 320px; height: 240px;
        border: 1px solid black;
        
        clip: rect(0px, 320px, 240px, 0px);
    }
    .test img{
        width: 100%; height: 100%;
    }
</style>
<body>
    <div class="test">
        <img src="대충이미지.jpg" />
    </div>
</body>
</html>

요렇게 왼쪽에서 오른쪽으로 340, 밑에서 위로 240을 줌

위와 왼쪽은 0부터 시작

 

 

.test {
    position: absolute;
    width: 320px;
    height: 240px;
    border: 1px solid black;
    
    clip: rect(0px, 100px, 240px, 0px);
}

rect right 를 100px 만큼 주게되면

요렇게 100만큼 보인다

 

 

.test {
    position: absolute;
    width: 320px;
    height: 240px;
    border: 1px solid black;
    
    clip: rect(0px, 100px, 240px, 50px);
}

오른쪽에서 100px 만큼 보이게

왼쪽에서 50px 부터 시작

 

 

.test {
    position: absolute;
    width: 320px;
    height: 240px;
    border: 1px solid black;
    
    clip: rect(0px, 320px, 200px, 0px);
}

위에서 아래로 200px 만큼 보여주기

 

참고로

요즘은 잘 사용되지 않고 clip-path 로 대체

 

이유는

overflow: visible 작동x, 

직사각형 형태로만 적용가능,

position: absolute, fixed 적용되어야 사용가능

때문~

 

 

+ Recent posts