프로젝트/스타벅스 클론코딩
스타벅스 클론코딩-8 (MAIN CONTENT~ 애니메이션)
IT Blue
2021. 5. 19. 19:40
MAIN CONTENT~ 애니메이션
특징
- 각 section이 화면에서 80% 지점에 보이면 좌 또는 우측에서 날라오는 애니메이션
<!-- SEASON PRODUCT -->
<section class="season-product scroll-spy">
<div class="inner">
<img src="./images/floating3.png" alt="Icon" class="floating floating3" />
<img src="./images/season_product_image.png" alt="" class="product back-to-position to-right delay-0" />
<div class="text-group">
<img src="./images/season_product_text1.png" alt="" class="title back-to-position to-left delay-1" />
<img src="./images/season_product_text2.png" alt="" class="description back-to-position to-left delay-2" />
<div class="more back-to-position to-left delay-3">
<a href="javascript:void(0)" class="btn">자세히 보기</a>
</div>
</div>
</div>
</section>
<!-- RESERVE COFFEE -->
<section class="reserve-coffee scroll-spy">
<div class="inner">
<img src="./images/reserve_logo.png" alt="" class="reserve-logo back-to-position to-right delay-0" />
<div class="text-group">
<img src="./images/reserve_text.png" alt="" class="description back-to-position to-right delay-1" />
<div class="more back-to-position to-right delay-2">
<a href="javascript:void(0)" class="btn btn--gold">자세히 보기</a>
</div>
</div>
<img src="./images/reserve_image.png" alt="" class="product back-to-position to-left delay-3" />
</div>
</section>
<!-- PICK YOUR FAVORITE -->
<section class="pick-your-favorite scroll-spy">
<div class="inner">
<div class="text-group">
<img src="./images/favorite_text1.png" alt="" class="title back-to-position to-right delay-0" />
<img src="./images/favorite_text2.png" alt="" class="description back-to-position to-right delay-1" />
<div class="more back-to-position to-right delay-2">
<a href="javascript:void(0)" class="btn btn--white">자세히 보기</a>
</div>
</div>
</div>
</section>
<!-- RESERVE STORE -->
<section class="reserve-store">
<div class="inner">
<div class="medal">
<div class="front">
<img src="./images/reserve_store_medal_front.png" alt="" />
</div>
<div class="back">
<img src="./images/reserve_store_medal_back.png" alt="" />
<a href="javascript:void(0)" class="btn">매장안내</a>
</div>
</div>
</div>
</section>
<!-- Find STORE -->
<section class="find-store scroll-spy">
<div class="inner">
<img src="./images/find_store_texture1.png" alt="" class="texture1" />
<img src="./images/find_store_texture2.png" alt="" class="texture2" />
<img src="./images/find_store_picture1.jpg" alt="" class="picture picture1 back-to-position to-right delay-0" />
<img src="./images/find_store_picture2.jpg" alt="" class="picture picture2 back-to-position to-right delay-1" />
<div class="text-group">
<img src="./images/find_store_text1.png" alt="" class="title back-to-position to-left delay-0" />
<img src="./images/find_store_text2.png" alt="" class="description back-to-position to-left delay-1" />
<div class="more back-to-position to-left delay-2">
<a href="javascript:void(0)" class="btn">매장찾기</a>
</div>
</div>
</div>
</section>
.back-to-position {
opacity: 0;
transition: 1s;
}
.back-to-position.to-right {
/* 지정 요소 X축으로 이동 */
transform: translateX(-150px);
}
.back-to-position.to-left {
transform: translateX(150px);
}
.show .back-to-position {
opacity: 1;
transform: translateX(0);
}
.show .back-to-position.delay-0 {
/* 전환 효과가 나타나기 전까지의 지연 시간 */
transition-delay: 0s;
}
.show .back-to-position.delay-1 {
transition-delay: .3s;
}
.show .back-to-position.delay-2 {
transition-delay: .6s;
}
.show .back-to-position.delay-3 {
transition-delay: .9s;
}
const spyEls = document.querySelectorAll('section.scroll-spy');
spyEls.forEach(function (spyEl) {
new ScrollMagic
// Scene(감시할 장면) 메소드를 추가
.Scene({
// 보여짐 여부를 감시할 요소를 지정
triggerElement: spyEl,
// 화면의 80% 지점에서 보여지는 여부를 감시
triggerHook: .8
})
// 요소가 화면에 보이면 show 클래스 추가
.setClassToggle(spyEl, 'show')
// 컨트롤러에 장면을 할당
.addTo(new ScrollMagic.Controller());
});