ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CSS 변환과 애니메이션 - 인터랙티브 웹 개발 | 1분코딩
    DOM/CSS3 2020. 4. 20. 20:56
    반응형

    1. Transform

    # CSS Transform은 하드웨어 가속을 이용해서 성능이 좋다

    : 어떤 태그를 absolute 후 left로 이동하는 것 보다 translateX()를 이용하는 것이 훨씬 부드럽게 움직인다.

    * 하드웨어 가속을 이용한다는 것은 GPU를 사용한다.

     

    # CSS Transform은 브라우저가 지오메트릭을 다시 편성하는 과정(Reflow)에서 CSS 대상만 크기나 위치를 계산해서 렌더링하기 때문에 연산할 것도 적고 성능도 더 좋다.

     

     

    2. Transition

    : 값이 수치로 표현되는 속성이 값의 변화(수치로)가 있을 때 변화과정을 애니메이션으로 만들어준다.

     

    # transition-property : 속성

    # transition-duration : 재생시간

    # transition-delay : 지연시간

    # transition-timing-function : 가속운동

     * 베지어곡선 - x축 : 진행시간  |  y축 : 가속도

     

     

    3. Animation

    # keyframes : 애니메이션의 시작과 끝에서 변화가 있는 지점    * %로 지정

    # 타임라인 : 애니메이션 시작(0%, from)과 끝(100%, to)의 과정

    # animation-interation-count : 반복횟수    *infinite: 무제한

    # animation-direction : 애니메이션 뱡향    

     * alternate : 번갈아 하는  |   reverse : 시작을 반대로  |  alternate-reverse : 시작을 반대로 번갈아 하는

    # animation-fill-mode : 애니메이션이 끝난 후의 상태 지정

     * forwards : 끝난 지점에서 멈춤

    # animation-play-state :  애니메이션의 진행 상태를 설정

     * paused : 정지

     

    3-3. frame by frame animation

    : 셀 애니메이션 방식을 얘기하며, 장면 별로 하나하나 그려서 움직임을 표현함 

     

    # 이미지 스프라이트를 활용 : 배경이미지를 적용할 경우 각각의 요소에 들어가는 배경이미지를 낱개로 만들지 않고 비슷한 성격의 배경 이미지를 하나의 파일로 제작 후에  background-position을 이용하여 배경이미지를 배치하는 방법

    # 고해상도 이미지를 표현하기 위해선 실제 이미지의 크기를 적용 이미지의 크기보다 2배 크게 한다 

    # background-size는 background 속성에서 슬래시(/)로 구분    * background: #000 url() no-repeat 0 0 / auto 150px;

    # timing-function 속성 중 step을 이용

    - step-start : steps( 1, start )와 같습니다.

    - step-end : steps( 1, end )와 같습니다.

    - steps( n, start|end ) : n단계로 나누어서 변화시킵니다. start 또는 end를 입력하지 않음녀 end로 처리합니다.

    @keyframes frameby {
        to {
        	background-position: -2550px 0;    /* 스프라이트 이미지 width의 음수 */
        }
    }
    .frameby {
        width: 150px;
        height: 150px;
        background: url('스프라이트 이미지 경로') no-repeat 0 0 / auto 150px;
        animation : frameby 1s infinite steps(17); 
        /* steps(17) : 스프라이트 이미지 width 값 / 요소(.frameby) width 값 = 17 */
    }

    * frame by frame animation을 gif 이미지로 할 경우 단점 

    : gif 파일은 알파 채널이라 투명도가 적용되지 않는다. 또한 안티엘리어싱으로 부드럽게 표현된 반투명한 부분이 하얗게 표현돼서 이미지가 깨진 것 처럼 보인다.

    반응형

    댓글

Luster Sun