<div class="card-background">
<div class="card-box img1">
<img src="img/phone-card1.png" alt="" />
</div>
<div class="card-box">
<img src="img/phone-card2.png" alt="" />
</div>
<div class="card-box">
<img src="img/phone-card3.png" alt="" />
</div>
</div>
position: sticky;
top: 400px;
.card-background {
height: 3000px;
margin-top: 800px;
margin-bottom: 1600px;
}
.card-box {
position: sticky;
top: 400px;
margin-top: 200px;
transition: all 0.2s;
}
.card-box img {
display: block;
margin: auto;
max-width: 80%;
}
css()
css 직접 변경하여, 투명도와 크기를 조절하였음$(window).scrollTop()
스크롤 탑이 650에서 1150으로 바뀔때, 투명도는 연속적으로 1에서 0으로 바뀌어야한다
let opacity1 = (-1 / 500) * $(window).scrollTop() + 115 / 50;
$(window).on("scroll", function () {
let opacity1 = (-1 / 500) * $(window).scrollTop() + 115 / 50;
$(".card-box").eq(0).css("opacity", opacity1);
if ($(window).scrollTop() >= 650 && $(window).scrollTop() <= 1150) {
let scale1 = -0.0002 * $(window).scrollTop() + 1.13;
$(".card-box").eq(0).css("transform", `scale(${scale1})`);
}
});
<script
src="https://cdnjs.cloudflare.com/ajax/libs/hammer.js/2.0.8/hammer.min.js"
integrity="sha256-eVNjHw5UeU0jUqPPpZHAkU1z4U+QFBBY488WvueTm88="
crossorigin="anonymous"
></script>
let 현재이미지 = 1;
let 이미지1 = document.querySelectorAll(".slide-box img")[0]
//첫번째 이미지 html 코드를 가져옴
let 매니저1 = new Hammer.Manager(이미지1);
//첫번째 이미지에 hammer.js 적용
매니저1.add(new Hammer.Pan({ threshold: 0 }));
//첫번째 이미지에 pan기능 적용
//pan 이벤트 설정할 수 있음
//pan기능이란 터치 슬라이드 인식
매니저1.on('pan',function(e){
if(e.deltaX < -1){
//e.deltaX 드래그한 거리의 길이
//왼쪽드래그하면, -값
//오른쪽드레그하면, +값
$(".slide-container").css("transform","translateX("+e.deltaX+"vw)")
//드래그한 거리만큼 이미지 컨테이너 이동시킴
if(e.isFinal && 현재이미지 === 1){
//현재이미지가 첫번째이미지면서 마우스 드래그를 놓으면 실행
$(".slide-container").addClass("transforming")
//transition이 담긴 클래스를 넣는다.
$(".slide-container").css("transform","translateX(-100vw)")
//2번째 사진으로 이동
setTimeout(function(){$(".slide-container").removeClass("transforming")},500)
//transtion 적용시간인 0.5초가 지난후 transtion속성 클래스 제거
현재이미지 += 1;
//2번째 이미지로 이동했다고 표시
}
}
})
hammer.js적용
& 터치기능 적용
을 해야지 여러가지 터치 기능을 이벤트 설정할 수 있다.설정해야할 이벤트리스너의 종류가 많다.
쌩 자바스크립트 사용시 모바일 브라우저간 호환성
이 그닥 좋지 않습니다.
호환성 잡기도 매우 귀찮습니다.