swiper 슬라이드 탭안에서 기능이 안먹혀요..
본문
안녕하세요..
이틀동안 해결이 안되서 온 초보 퍼블리셔입니다..ㅠㅠ
각 슬라이드를 탭안에 넣었는데
첫번째 탭만 작동하고 두번째부터는 swiper 기능이 안먹힙니다 ㅠ.
display:none; 때문이라고 하는데,
탭을 눌렀을때 swiper reload 하는방법이 있을까요..
opacity로 해봐도 해결이 안되고, 너무 답답해요 ㅠㅠ
** 스와이퍼 사용 함
<script>
function touchSlide(){
$('.swiper2').each(function(){
var swiper2 = new Swiper('.swiper2', {
navigation: {
nextEl: '.swiper-button-next2',
prevEl: '.swiper-button-prev2',
},
});
});
};
</script>
** 탭메뉴 사용함
$(function(){ // jQuery 준비
$('ul.tab > li').eq(0).addClass('selected');
$('.tab_box > div').hide();
$('.tab_box > div').eq(0).show();
$('ul.tab > li').click(function(){
$('ul.tab > li').removeClass('selected');
$(this).addClass('selected');
$('.tab_box > div').hide();
$('.tab_box > div').eq($(this).index()).show();
touchSlide.reload(); //탭버튼 누를때마다 슬라이드 함수 다시 호출
return false;
});
}); //jQuery 종료
!-->!-->
답변 1
두번째 탭은 display:none 이 되기 때문에,
슬라이더가 width 값을 0 으로 인식해서 그런 증상이 나타나구요.
해결방법은 width 값을 강제로 줘서 먹게하거나,
아래와 같이 swiper 옵션을 줘서 해결해야합니다.
observer: true,
observeParents: true,
이 두가지 옵션을 적어주면 해결됩니다.
slick 의 경우는 variableWidth: true; 로 해결해야합니다.
<script>
var swiper = new Swiper('.swiper-container', {
initialSlide : 0,
slidesPerView: 'auto',
observer: true,
observeParents: true,
loop: true,
pagination: {
el: '.swiper-pagination',
type: 'fraction',
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
});
</script>