반응형

 

 

ScrollMagic

Let's start showing off some magic

 

이번 포스팅은 ScrollMgic 라이브러리 '설치방법과 동작 원리' 이어서 이전 포스팅에 설명드리고 간단하게 보여드렸던,

예제를 바탕으로 문법 작성 방법을 순서대로 상세하게 설명드리고,

Scene 옵션에 대해 하나씩 파 해쳐 보도록 하겠습니다.

이전 포스팅에서도 말씀드렸지만 GSAP(TweenMax)로 애니메이션 오브젝트를 구현하기 때문에

GSAP(TweenMax)를 잘 모르실 경우 현재 블로그 포스팅 글 참조 부탁드립니다.

GSAP(TweenMax)는 현재 맑은커뮤니케이션 블로그에 포스팅되어 있기 때문에 따로 진행하지 않겠습니다.

 

 

 

 

ScrollMagic 기본 문법 작성방법

 

기본 문법은 전 편에 설명드렸던 동작원리를 순서대로 작성하시면 쉽습니다.

전 편의 예제 파일을 기본으로 동작원리 순서대로 문법을 세분화하여 공부해 보겠습니다.

 

 

기본 문법 코드 작성방법   

Ⅰ. ScrollMagic 애니메이션을 실행하기 위한 Controller를 생성합니다.

       new 키워드를 이용하여 새로운 인스턴스를 생성합니다.

var controller = new ScrollMagic.Controller();

 

. 스크롤 될때 필요한 애니메이션 오브젝트를 생성합니다.

       GSAP(TweenMax) 라이브러리를 사용하여 애니메이션 코드를 작성합니다.

var tween = TweenMax.to('#animate', 0.5, {
	backgroundColor: "#6431ff",
	scale: 2.5,
	rotation: 360,
	x: 600,
	y: 500
});

 

. ScrollMagic 상세 옵션 설정을 위한 Scene 오브젝트를 생성합니다.

var scene = new ScrollMagic.Scene();

 

. Scene 오브젝트에 어떠한 객체에서 동작해야 할 상세 스크롤(애니메이션 등)을 위한 옵션 설정을 합니다.

       첫째, 어떠한 객체(ex - .trigger 또는 #trigger)에서 Scene 이 발생할지 트리거를 설정해 주어야 합니다. 

       쉽게 말해서, 어떠한 객체에 스크롤이 닿으면 애니메이션이 발생할지 지정해 주는것 입니다. 

       트리거 설정(Scene 메서드 옵션) :  triggerElement: 'class 또는 ID' 

       둘째, GSAP(TweenMax) 애니메이션 오브젝트()를 Scene 오브젝트()에 추가 설정합니다.

       쉽게 말해서, 어떠한 객체에 스크롤이 닿으면 발생할 만들어둔 애니메이션 GSAP 오브젝트()를 넣어 줍니다. 

       애니메이션 실행 설정 메서드 :  setTween( ) 

       셋째, 마지막으로 Scene 오브젝트에 ScrollMagic Controller()를 추가하여 실행 설정 하는것 입니다.

       여기까지 오타없이 진행하셨다면, 스크롤에 따라서 애니메이션이 동작합니다. 

       Controller 실행 설정 메서드 :  addTo( ) 

       넷째, 디버깅을 위해서 인디케이터를 추가합니다.

       디버깅 후에는 삭제 합니다.

       디버깅 실행 설정 메서드 :  addIndicators( ) 

 

 

기본 문법 최종코드 및  결과물  

html + css + js + result 최종 결과물 코드 뷰 입니다.

 

 

 

 

 

ScrollMagic Scene 옵션 및 메서드

 

위에 기본 문법을 설명하면서 가장 기본 옵션 이라고 할 수 있는 'triggerElement(scene 메서드 옵션)', 'setTween', 'addTo' 메서드에 대하여 알아보았습니다.

그 외 Scene 옵션 및 메서드에 대하여 설명과 예제를 통해서 공부해 보겠습니다.

 

 

duration( scene  옵션 )

트리거의 애니메이션 시작지점부터 종료지점까지 재생시간을 나타내는 scene 메서드의 옵션 입니다.

단위는 숫자이며, 예를들어 'duration: 100' 이라고 코드를 작성하면 트리거 시작지점에서 종료지점은 y축으로 100px 스크롤 되는동안 애니메이션이 실행됩니다. 

트리거의 애니메이션 재생시간이 'duration: 100%' 일 경우 화면 높이에 따라 유동적으로 재생시간이 변화합니다.

재생시간 설정 옵션 문법 :  duration: 재생시간 

  ScrollMagic - 'duration' 예제 실습 파일  

scrollmagic-2-duration.zip
0.00MB

 

 

reverse( scene  옵션 )

트리거의 애니메이션 시작지점부터 종료지점까지 키값을 한번만 실행시키는 scene 메서드의 옵션 입니다.

기본값은 true로 애니메이션의 키값은 스크롤 될때마다 실행되지만, 트리거의 키 값 애니메이션을 한번만 보여주고 싶을 경우에는 값을 false로 설정하면 됩니다.

트리거의 키값을 한번만 실행시키기 위한 옵션 문법 :  reverse: true 또는 false 

  ScrollMagic - 'reverse' 예제 실습 파일  

scrollmagic-2-reverse.zip
0.00MB

 

 

triggerHook( scene  옵션 )

스크롤 시 트리거 팁이 뷰포트에 대해 상대적으로 어느 시점에 애니메이션을 보여줄지 설정하는 scene 메서드의 옵션 입니다.

기본값은 onCenter(0.5)이며, 0 ~ 1 사이의 숫자 또는 문자열로 작성할 수 있습니다.

  • 'onEnter' 1
  • 'onCenter'  0.5
  • 'onLeave'  0

트리거 팁이 어느 시점에 보여야 하는지 설정을 위한 옵션 문법 :  triggerHook: 숫자 또는 문자열 

  ScrollMagic - 'triggerHook' 예제 실습 파일  

scrollmagic-5-triggerHook.zip
0.00MB

 

 

offset( scene  옵션 )

트리거의 애니메이션 시작 지점 트리거를 빠르거나 늦게 동작 시키는 scene 메서드의 옵션 입니다.

기본값은 0 이며, 양수값을 작성하면 시작 지점 트리거의 스크롤 애니메이션을 늦게 동작하며, 음수값을 작성하면 시작 지점 트리거의 스크롤 애니메이션이 빨리 시작됩니다.

예제는 아래 setPin 메서드 설명 후 offset 옵션과 같이 사용하여 보여드리겠습니다.

트리거의 시작 지점을 변경 시키는 옵션 문법 :  offset: 양수 또는 음수 

 

 

setPin   

트리거의 애니메이션 시작지점부터 종료지점까지 요소를 고정시키는 메서드입니다.

재생시간 동안  애니메이션 요소가 fixed 고정 상태가 되며, 애니메이션 재생 지점을 벗어나면  fixed 해제 상태가 되어 스크롤 됩니다. 

요소를 고정시키는 메서드 문법 :  setPin('고정 시키고자 하는 요소의 class 또는 ID') 

  ScrollMagic - 'offset, setPin' 예제 실습 파일  

scrollmagic-3-setPin,offset.zip
0.00MB

 

 

setClassToggle   

트리거의 애니메이션 시작지점부터 종료지점까지 어떠한 대상에 클래스를 넣었다 뺏다(토글)하는 메서드입니다.

애니메이션 재생시간 동안 클래스가 토글되며,  jQuery의 toggleClass와 같다고 생각하시면 됩니다.

대상의 클래스를 토글하는 메서드 :  setClassToggle('클래스 넣어줄 대상', ' 넣어줄 클래스 이름') 

  ScrollMagic - 'setClassToggle' 예제 실습 파일  

scrollmagic-4-setClassToggle.zip
0.00MB

 

 

 

 

 

마치며...

 

ScrollMagic Scene 옵션 및 그 외 메서드에 대하여 모두 알아보았습니다.

이번 포스팅 내용을 잘 이해하셨다면, 웹퍼블리싱 프로젝트에서 왠만한 스크롤 애니메이션은 구현 가능하다고 생각됩니다.

ScrollMagic은 생각보다 외울것도 없고 어렵지도 않습니다.

애니메이션을 위해서 GSAP(TweenMax) 라이브러리와 커스텀 문제만 잘 이해하시면 됩니다.

다음 포스팅은 ScrollerMagic의 controller에서 전역함수처럼 global 설정하는 방법과 응용예제 몇가지를 공부해 보도록 하겠습니다.

 

감사합니다.

 

 

반응형
반응형

 

 

ScrollMagic

Let's start showing off some magic

 

웹퍼블리싱 프로젝트를 하다 보면 고객사의 요청에 의해 스크롤에 따른 애니메이션(동적인 화면)을 구현해야 할 경우가 있습니다.

완성도 높고 화려한 메인 페이지를 만들기 위해서 스크롤 애니메이션을 요청하는 경우도 있습니다.

 

저의 경우를 말씀드리자면,

서브페이지의 스크롤 애니메이션 또는 간단한 스크롤 애니메이션은 AOS 라이브러리를 사용하고,

메인 페이지의 완성도 높고 복잡한 스크롤 애니메이션을 구현해야 할 경우

ScrollMagic GSAP(TweenMax)를 이용해서 웹퍼블리싱 합니다.

AOS 라이브러리 사용법은 블로그에 포스팅 되어 있습니다.  

 

이번 포스팅은 ScrollMagic의 설치 방법과 동작 원리

다음 편에는 ScrollMagic 옵션에 대하여 2편으로 나누어 다루어 보겠습니다.

참고로 ScrollMagic을 공부하시려면, GSAP(TweenMax) 라이브러리를 먼저 아셔야 합니다.

블로그에 작성되어 있으며, 어렵지 않으니 걱정하지 마시고 GSAP(TweenMax) 글을 보고 선행학습 부탁드립니다.

 

 

 

 

 

ScrollMagic 설치 방법

 

ScrollMagic 공식 사이트에서 제공하는 라이브러리 사용 방법은 CDN, Bower, NPM, Download 4가지입니다.

포스팅은 CDN 방법으로 진행할 예정이며, 각자 편한 방법으로 라이브러리 초기 설정을 하시면 됩니다.

 

 

CDN 사용 방법

<script src="//cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.7/ScrollMagic.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.7/plugins/debug.addIndicators.min.js"></script>

위에 debug.addIndicators.min.js 파일은 스크롤매직을 구현한 화면에 인디케이터를 표시하여,

스크롤매직 라이브러리 웹퍼블리싱 마크업을 좀 더 편안하게 할 수 있도록 도와줍니다.

 

 

 

 

 

ScrollMagic 동작 원리 문법

 

ScrollMagic 동작 원리를 이해할 수 있다면, 문법 작성 또한 어렵지 않을 것입니다.

코드를 설명하기 전에, 동작원리를 쉽게 풀어서 설명하자면 다음과 같습니다.

  • 1. ScrollMagic 애니메이션을 실행하기 위한 Controller 를 생성합니다.
  • 2. GSAP(TweenMax) 애니메이션 오브젝트를 생성합니다.
  • 3. ScrollMagic 상세 옵션 설정을 위한 Scene 오브젝트를 생성합니다.
  • 4. GSAP(TweenMax) 애니메이션 오브젝트(2번)를 Scene 오브젝트(3번)에 추가 설정합니다.
  • 5. Controller(1번)을  Scene 오브젝트(3번)에 추가 설정합니다.

 

 

 

 

 

ScrollMagic 동작 원리 맛보기 예제

 

다음 포스팅에 ScrollMagic 본격적인 옵션 설명과 예제를 다루기에 앞서서, 위에서 설명한 동작 원리로 간단하게 만든 ScrollMagic 예제는 아래와 같습니다.

 

 

ScrollMagic Script

$(function(){
	var controller = new ScrollMagic.Controller();	// 1. ScrollMagic 컨트롤러 생성

	var tween = TweenMax.to('#animate', 0.5, {	//2. animation object 생성
		backgroundColor: "#6431ff",
		scale: 2.5,
		rotation: 360,
		x: 600,
		y: 500
	});

	var scene = new ScrollMagic.Scene({	//3. Scene object 생성
		triggerElement: '#trigger1',	//스크롤 애니메이션 시작 지점 설정
		duration: '100%',	//애니메이션 재생 시간 '100%'지정하면 화면 높이에 따라 유동적으로 end위치가 정해짐
	})
	.setTween(tween)	//4. 2번을 3번에 추가
	.addTo(controller)	//5. 1번(controller)을 3번에 추가
	.addIndicators();
});

 

 

ScrollMagic Result + HTML + CSS + ScrollMagic Script 

  ScrollMagic - '기본 동작 원리' 예제 실습 파일  

scrollmagic-1.zip
0.00MB

 

 

 

 

 

마치며...

 

ScrollMagic 포스팅 계획은 올해 초반부터 계획하고 있었는데, 연말에 시작하게 되었습니다.

요즘 웹사이트 웹퍼블리싱 하다보면 스크롤 애니메이션은 자주 구현해야 하는 트렌드가 되었다고 생각됩니다.

그래서 더욱더 빨리 포스팅하고 싶었지만 늦었지만... 그래도 시작이 반이다??

AOS 라이브러리도 좋지만 위에 만들어서 보여드린 ScrollMagic의 간단한 동작 원리만 보셔도,

AOS 라이브러리에서는 구현할 수 없는 스크롤 애니메이션이라는 것을 확인하실 수 있습니다.

ScrolllMagic과 AOS 라이브러리를 상황에 맞게 사용하신다면, 웹퍼블리셔로서 커다란 본인만의 무기를 가지게 되는 것이라 생각됩니다.

다음 편 포스팅은 ScrollMagic의 옵션에 대하여 상세한 설명과 예제를 통해서 진행하도록 하겠습니다.

감사합니다.

 

 

반응형
반응형

 

 

AOS

Animate On Scroll Library

 

프로젝트에서 퍼블리싱 작업 중 세로로 긴 콘텐츠의 메인 또는 서브페이지를 코딩하다 보면,

고객사의 요청에 의해 스크롤되었을 때 콘텐츠 요소의 애니메이션 효과를 퍼블리싱해야 할 경우가 있습니다.

그럴 경우  AOS 또는 ScrollMagic 라이브러리를 사용하면 쉽게 스크롤 애니메이션 효과를 구현할 수 있습니다.

두 가지 모두 사용하기 쉽고, 좋은 스크롤  애니메이션 라이브러리입니다.

저는 이 두 가지 라이브러리를 프로젝트 상황에 따라 사용합니다.

ScrollMagic 라이브러리의 경우 GSAP TweenMax를 알아야 사용하기 편리합니다.

또한 자바스크립트와  jQuery를 알아야 합니다.

애니메이션 효과나 제어를 직접 해야 하기 때문에 시간 소요가 더 많이 됩니다.

그렇기에 AOS 라이브러리보다 애니메이션(속도, 시작 위치, 곡선 등)을 자유롭게 구현할 수 있습니다.

그러나 프로젝트의 시간이 촉박할 경우, ScrollMagic 라이브러리로 퍼블리싱하다 보면 야근이 눈에 훤하죠?

그럴 경우 AOS 라이브러리를 사용하면 쉽게 스크롤 애니메이션을 코딩할 수 있습니다.

AOS 라이브러리는 자바스크립트를 몰라도 쉽게 사용할 수 있습니다.

 또한 많은 효과를 제공하기 때문에 ScrollMagic 라이브러리에 뒤떨어지지 않습니다.

'시간 투자 대비 가성비는 모든 스크롤 애니메이션 라이브러리 중 최고'라고 생각됩니다.

제가 왜 두 가지 라이브러리를 상황에 따라 골라서 사용하는지 AOS와 ScrollMagic 라이브러리의 차이를 아시겠죠?

그럼 지금부터 이번 포스팅의 주제인 AOS 라이브러리에 대해 알아보겠습니다. 

 

 

 

 

 

Installation

 

기본적으로 <head> 태그 안에 aos.js와 aos.css 라이브러리 파일을 불러옵니다.

jQuery 라이브러리도 필요합니다.

aos.js, jQuery.js는 CDN으로 불러오겠습니다.

<head>
	<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css"> 
	<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script> 
	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> 
</head>

 

그다음 <header>, <body>, 스크립트 영역 중 한 곳에 AOS 라이브러리를 사용하기 위한 초기화 스크립트를 작성합니다.

여기까지가 AOS 라이브러리를 사용하기 위한 준비과정입니다.

<script> 
	AOS.init();
	/* 주석부분과 같이 AOS API - Global Setting 가능
	AOS.init({
		offset: 120,
		delay: 0,
		duration: 400,
		easing: 'ease',
		once: false,
		mirror: false,
		anchorPlacement: 'top-bottom'
	});    
	*/
</script>

 

 

 

 

 

 사용방법(How to use AOS?)

 

기본 완성된 기본 사용방법은 아래와 같습니다.

<!DOCTYPE html>
<html>
    <head>
        <title>AOS Animation</title> 
        <!-- AOS 라이브러리 불러오기-->
        <link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css"> 
        <script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script> 
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> 
    </head>
    <body>
        <!-- AOS 스크립트 초기화 -->
        <script> 
            AOS.init(); 
        </script>
        <!-- //AOS 스크립트 초기화 -->
        <div aos="fade-up" data-aos-offset="200" data-aos-easing="ease-out-cubic" data-aos-duration="500">
            <!-- 애니메이션 객체 요소 -->
            <!-- //애니메이션 객체 요소 -->
        </div>
    </body>
</html>

※ AOS 라이브러리 애니메이션은 블록 태그(Block Tag)에만 적용 가능합니다. 인라인 태그(Inline Tag)에는 효과가 적용되지 않습니다.

 

 

 

 

 

data-aos 옵션 속성

 

AOS 라이브러리 코드 사용방법을 알았으니, 이제 API 옵션에 대해 알아보겠습니다. 

옵션 속성이 무엇인지 정확히 알아야 제대로 사용할 수 있기 때문입니다.

옵션 속성도 정확히 모른 상태에서 사용방법만 안다는 것은 무의미하겠죠?

API API 핵심내용
data-aos 사용할 애니메이션 효과명
data-aos-easing 애니메이션 시간흐름에 따른 속도설정 옵션(default: ease)
data-aos-anchor 특정한 객체에 anchor를 설정하여,
어떤 객체를 기준으로 애니메이션이 시작 될지를 설정
data-aos-delay 애니메이션 재생 대기시간 설정(default: 0)
data-aos-offset 애니메이션 효과가 시작될 객체의 위치 설정
data-aos-duration 애니메이션의 재생시간 설정(default: 400)
data-aos-anchor-placement 애니메이션이 어느 위치에서부터 적용될지 설정(default: top-bottom)
data-aos-once 스크롤 할때마다 애니매이션이 재생될지를 설정(default: false) 

※ delay와 duration은 0부터 3000까지 최대값을 설정할 수 있고, 50 단위로 설정 변경이 가능합니다.

 

 

data-aos : Attribute Value

Fade animation
  • fade
  • fade-up
  • fade-down
  • fade-left
  • fade-right
  • fade-up-left
  • fade-up-right
  • fade-down-left
  • fade-down-right
Flip animation
  • flip-up
  • flip-down
  • flip-left
  • flip-right
Slide animation
  • slide-up
  • slide-down
  • slide-left
  • slide-right
Zoom animation
  • zoom-in
  • zoom-in-up
  • zoom-in-down
  • zoom-in-left
  • zoom-in-right
  • zoom-out
  • zoom-out-up
  • zoom-out-down
  • zoom-out-left
  • zoom-out-right

 

 

data-aos-easing : Attribute Value

  • linear
  • ease
  • ease-in
  • ease-out
  • ease-in-out
  • ease-in-back
  • ease-out-back
  • ease-in-out-back
  • ease-in-sine
  • ease-out-sine
  • ease-in-out-sine
  • ease-in-quad
  • ease-out-quad
  • ease-in-out-quad
  • ease-in-cubic
  • ease-out-cubic
  • ease-in-quart
  • ease-out-quart
  • ease-in-out-quart

 

 

data-aos-anchor-placement : Attribute Value

  • top-bottom
  • top-center
  • top-top
  • center-bottom
  • center-center
  • center-top
  • bottom-center
  • bottom-top

 

 

 

 

 

AOS  라이브러리 예제 및 다운로드

 

AOS Library  공식 사이트 :  https://michalsnik.github.io/aos/

 

AOS - Animate on scroll library

AOS Animate On Scroll Library Scroll down

michalsnik.github.io

 

 

AOS Library  Github : https://github.com/michalsnik/aos

 

GitHub - michalsnik/aos: Animate on scroll library

Animate on scroll library. Contribute to michalsnik/aos development by creating an account on GitHub.

github.com

 

 

 

 

 

마치며...

 

여러 가지 스크롤 애니메이션 라이브러리가 있지만, 저는 AOS 라이브러리가 가장 사용하기 쉽다고 생각합니다.

자바스크립트를 잘 몰라도 쉽게 사용할 수 있기에 사용자의 범위도 신입부터 경력자까지 범용성 또한 좋다고 생각합니다.

시간이 촉박한 프로젝트에서 스크롤 애니메이션 퍼블리싱을 구현해야 할 경우, 작업시간이 부족해서 헤매지 마시고 AOS Library로 멋있고 동적인 사이트를 쉽게 만들어 보시기 바랍니다.

맑은커뮤니케이션 저희 퍼블리셔 직원분들도 파이팅!!

감사합니다.

 

 

 

반응형

+ Recent posts