728x90
반응형
이런 캐러셀을 만들어 보자.
<div style="overflow: hidden">
<div class="slide-container">
<div class="slide-box">
<img src=car1.png>
</div>
<div class="slide-box">
<img src=car2.png>
</div>
<div class="slide-box">
<img src=car3.png>
</div>
</div>
</div>
<button class="slide-1">1</button>
<button class="slide-2">2</button>
<button class="slide-3">3</button>
<button class="next">다음</button>
사진을 담을 slide-container이 있고 그 안에 각각의 사진은 slide-box에 들어있다.
slide-container는 사진개수*100vm으로, 총 300vm의 너비로 설정하였고
slide-box는 각각 100vm으로, 가로로 정렬되도록 float: left로 설정하였다.
그리고 이 모든 박스를 둘러싸는 div를 만들고 style=overflow:hidden을 주어 화면 밖으로 튀어나간 부분은 안 보이도록 한다.
$('.slide-2').on('click', function() {
$('.slide-container').css('transform', 'translateX(-100vw)');
})
$('.slide-3').on('click', function() {
$('.slide-container').css('transform', 'translateX(-200vw)');
})
$('.slide-1').on('click', function() {
$('.slide-container').css('transform', 'translateX(-00vw)');
})
그리고 각각의 버튼을 누를 때마다,
translateX를 이용하여 사진을 이동시키면서 해당 이미지가 보이도록 해 주면 된다.
(애니메이션은 slide-container에 transition을 주면 된다)
var 지금사진=1;
$('.next').on('click', function() {
if(지금사진==1){
$('.slide-container').css('transform', 'translateX(-100vw)');
지금사진=2;
}
else if(지금사진==2){
$('.slide-container').css('transform', 'translateX(-200vw)');
지금사진=3;
}
else if(지금사진==3){
$('.slide-container').css('transform', 'translateX(-00vw)');
지금사진=1;
}
다음 버튼의 경우는
현재 보고 있는 사진의 다음 사진이 나오도록 자바스크립트 작성하였다.
그런데 이렇게 if-else문을 달면 반복된 내용이 많아진다.
var 지금사진 = 0;
$('.next').on('click', function() {
지금사진=(지금사진+1)%3;
$('.slide-container').css('transform', 'translateX(-'+지금사진+'00vw)');
이렇게 문자열 중간에 변수를 집어넣어서 간단하게 코드를 작성할 수 있다.
728x90
반응형
'웹개발 > JavaScript' 카테고리의 다른 글
[자바스크립트] for문 이용하여 탭 기능 만들어보기 (1) | 2023.01.30 |
---|---|
[자바스크립트] 스크롤 이벤트 (0) | 2023.01.25 |
[자바스크립트] 정규식으로 이메일형식 검증하기 (0) | 2023.01.24 |
[자바스크립트] 함수 만들기, setTimeout, setInterval (0) | 2023.01.21 |
[자바스크립트] 변수를 이용하여 다크모드 버튼 만들어 보기 (0) | 2023.01.19 |
댓글