퍼블리싱/html css js
[Javascript] swiper 크기만큼 이동시켜주기
임고미
2020. 9. 21. 11:41
728x90
300x250
1. html에 swiper를 만들어줍니다.
<div class="swiper-container-mainNav">
<div class="swiper-wrapper">
<div class="swiper-slide">
<div id="main1"></div>
</div>
<div class="swiper-slide">
<div id="main2"></div>
</div>
<div class="swiper-slide">
<div id="main3"></div>
</div>
<div class="swiper-slide">
<div id="main4"></div>
</div>
</div>
</div>
2. 원하는 크기를 설정해줍니다.
.swiper-container-mainNav .swiper-wrapper {
width: auto !important;
}
.swiper-container-mainNav .swiper-wrapper .swiper-slide {
width: 190px !important;
}
.swiper-container-mainNav .swiper-wrapper .swiper-slide:nth-child(3) {
width: 140px !important;
}
원래 스와이퍼에서 제공하는 css가 있어서, 내가 정한 크기가 무시될 수 있으므로
!important 를 넣어줍니다.
저는 190px과 140px 두가지 크기를 설정하였습니다.
3. js 설정해주기
var mySwiperMainNav = new Swiper('.swiper-container-mainNav', {
width: 190
});
( 1 ) swiper 플러그인을 적용시켜줍니다.
function swiperPositionSet(el, Xposition, index) {
$(el).attr(
'style',
'transform:translate3d(' + Xposition[index] + 'px ,0px,0px); transition-duration: 300ms;'
);
}
( 2 ) 얼만큼 이동해줄지 정해주는 함수를 생성합니다.
- el : 이 것의
- Xposition[index]: 이만큼 움직이겠다.
function mainSlideChangeStart () {
var swiper_position_X = [0, -190, -380, -520];
swiperPositionSet(
'.swiper-container-mainNav .swiper-wrapper',
swiper_position_X,
mySwiperMainNav.realIndex
);
}
( 3 ) swiper-slide 의 넓이가 각각 190, 190, 140, 190이므로,
- swiper_position_X에 설정값을 하나하나 차례로 더해 넣어줍니다. (190 + 190 = 380 / 380 + 140 = 520 )
- swiper에서 실질적으로 움직이는 것은 'swiper-wrapper'이므로, 2번째 인자로는 swiper-wrapper을 넣어줍니다.
- Xposition[index] 은, swiper_position_X의 몇번쨰값? 과 같은 의미인데 = 1,2,3,4 순서로 나아가야하니
swiper.realIndex를 그대로 적용시켜주면 됩니다.
mySwiperMainNav.on('slideChangeTransitionStart', mainSlideChangeStart);
( 4 ) 마지막으로, 슬라이드가 움직이기 시작하면 이 함수를 실행시켜주겠다고 적용하면 완성입니다.
+ 팁
var mySwiperMainNav = new Swiper('.swiper-container-mainNav', {
width: 190
});
swiper에서는 width 값은 설정해주는걸 지향하지 않습니다.
그러나 이걸 설정해주지 않으면, 스와이퍼 한번 옮길때마다 190 씩 움직이지 않게됩니다.
따라서 필요에따라 width값을 적용해주면 한번 스와이프할떄 190만큼 이동을 하게 됩니다.
728x90
300x250