본문 바로가기
엘리스 AI 트랙 4기/elice AI track

[1주차] transform, transition, animation

by _sweep 2022. 1. 13.

1월 13일 자 학습 내용 정리입니다.

 

 

✅ tramsform

특정 영역에서 object를 회전시키거나 위치 이동, 크기 변경이 필요할 때 사용한다.

 

rotate

transform: rotate(각도)

 

object에 대해 평면적인 회전을 할 때 사용한다.

음수와 양수 모두 가능하며 양수이면 시계방향, 음수이면 반시계방향으로 회전한다.

 

scale

transform: scale(width 비율, height 비율)

 

object의 크기를 조절할 때 사용한다.

2를 입력하면 object 기본 크기의 2배, 0.5를 입력하면 object 기본 크기의 0.5배가 된다.

 

skew

transform: skew(x축, y축)

 

object에 대해 입체적인 회전을 할 때 사용한다.

 

translate

transform: translate(x축, y축)

 

object의 위치를 이동할 때 사용한다.

 

 

위의 transform 속성을 사용한 예시는 다음과 같다.

 

div {
    transform: rotate(45deg);
    transform: scale(2, 3);
    transform: skew(10deg, 20deg);
    transform: translate(100px, 200px);
}

 

 

 

prefix(접두사)

최신 버전의 css를 사용할 때 간혹 해당 css 속성이 특정 브라우저 혹은 특정 버전에서 표준화 되지 않은 경우가 있다.

이때 표준화 되지 않은 브라우저에서도 실행하기를 원할 경우 prefix를 사용한다.

 

  • -webkit- : 크롬, 사파리
  • -moz- : 파이어폭스
  • -ms- : 익스플로러 9.0, 마이크로소프트 엣지
  • -o- : 오페라

 

prefix를 사용한 예시는 다음과 같다.

 

div {
    -webkit-transition: all 4s ease;
    -moz-transition: all 4s ease;
    -ms-transition: all 4s ease;
    -o-transition: all 4s ease;
    transition: all 4s ease;
}

 

 

 

✅ transition

변화하는 과정을 보여주고자 할 때 사용한다.

 

transition-property

효과를 적용하고자 하는 css 속성을 나타낸다.

all이 기본값으로 설정되어 있으며 width, height과 같은 특정 속성 값을 입력할 수 있다.

아무 속성도 transition 효과를 주고 싶지 않을 때는 none을 입력하면 된다.

 

div {
    transition-property: width;
}

 

transition-duration

효과가 나타나는데 걸리는 시간을 의미한다.

쉽게 말하자면 transition이 일어나는 지속 시간을 뜻하는 것이다.

 

div {
    transition-duration: 2s;
}

 

transition-timing-function

효과를 나타내는 속도 곡선을 의미한다.

transition-timing-function 속성을 통해 transition 효과의 지속 시간 동안 속도를 변경할 수 있다.

 

  • ease : 기본값, 느리게 시작하다 빨라지고 다시 느리게 종료된다. cubic-bezier(0.25,0.1,0.25,1)과 같다.
  • linear : 시작부터 끝까지 동일한 속도이다. cubic-bezier(0,0,1,1)과 같다.
  • ease-in : 느리게 시작한다.
  • ease-out : 느리게 종료한다.
  • ease-in-out : 느리게 시작하고 느리게 종료한다.

 

div {
    transition-timing-function: linear;
}

 

transition-delay

transition 효과가 시작되는 때를 의미한다.

초(s) 또는 밀리초(ms)로 정의할 수 있으며 1s라면 transition 효과가 1초 후 나타남을 의미한다.

 

div {
    transition-delay: 1s;
}

 

 

 

transition은 이처럼 transition-property, transition-duration, transition-timing-function, transition-delay라는 4가지 속성을 가진다.

transition 속성을 서술할 때 위의 예시처럼 4가지를 각각 지정해도 되지만 transition 속성을 이용하여 한 줄로 정의할 수도 있다.

 

transition: property duration timing-function delay

 

한 줄로 정의할 때에는 위와 같은 순서를 따른다.

해당 속성을 주고 싶지 않은 경우 생략은 가능하지만 duration과 delay는 둘 다 시간을 지정하므로 이 둘의 구분은 필요하다.

따라서 무조건 앞서 정의된 시간이 duration을 의미하며 시간이 하나만 정의되어 있어도 이것은 duration을 의미한다.

 

 

✅ hover

가상 선택자로 css에서 미리 만들어 놓은 클래스이다.

마우스를 올렸을 때 라는 조건을 의미한다.

 

div {
    width: 100px;
    height: 100px;
    background-color: red;
    transition: width 1s linear 500ms;
}

div:hover {
    width:300px;
}

 

만약 위와 같이 css가 지정되어 있다고 할 때 div는 width, height가 각각 100px이고 빨간색인 상자이다.

이때 이 상자에 마우스 커서를 올리면 상자의 width가 천천히 변화해 300px이 된다.

 

 

 

Animation

특정 조건에 상관 없이 어떠한 이벤트를 적용하고자 할 때 사용한다.

 

animation-name

만들 애니메이션에 대한 이름을 의미하며 개발자가 임의로 작성할 수 있다.

 

div {
    animation-name: changeWidth;
}

 

animation-duration

애니메이션의 소요 시간을 의미한다.

기본값은 0이며 초(s) 또는 밀리초(ms) 단위로 지정할 수 있다.

 

div {
    animation-duration: 3s;
}

 

animation-timing-function

애니메이션의 속도 곡선을 지정한다.

transition과 같이 ease, linear, ease-in, ease-out, ease-in-out 등이 있다.

 

div {
    animation-timing-function: linear;
}

 

animation-delay

애니메이션 지연 시간을 의미한다.

초(s) 또는 밀리초(ms) 단위로 지정할 수 있다.

 

div {
    animation-delay: 1s;
}

 

animation-iteration-count

애니메이션의 반복 횟수를 의미한다.

숫자로 지정 시 해당 횟수만큼 반복한다.

 

  • number : 해당 number의 횟수만큼 반복한다.
  • infinite : 무한으로 반복한다.

 

div {
    animation-iteration-count: infinite;
}

 

animation-direction

애니메이션의 진행 방향을 의미한다.

 

  • normal : 기본값, from -> to의 단방향으로 애니메이션이 진행된다.
  • reverse : to -> from의 단방향으로 애니메이션이 진행된다.
  • alternate : from -> to -> from의 양방향으로 애니메이션이 진행된다.
  • alternate-reverse : to -> from -> to의 양방향으로 애니메이션이 진행된다.

 

div {
  animation-direction: alternate;
}

 

@keyframes

애니메이션의 진행 방식을 서술한다.

애니메이션 효과를 줄 object에 animation 속성을 지정한 후 아래에서 @keyframes를 통해 해당 애니메이션이 어떻게 진행될 것인지를 서술하면 된다.

from, to 대신 0%, 100% 처럼 비율 지정도 가능하다.

 

@keyframes 애니메이션 이름 {
    from { 변화를 줄 입력값 }
    to { 변화를 줄 입력값 }
}

 

 

 

transition 때와 마찬가지로 animation도 각각의 속성을 따로 지정해도 되지만 한 줄로 서술이 가능하다.

 

animation: name duration timing-function delay iteration-count direction

 

한 줄로 정의할 때는 위의 순서를 따르며 속성 일부를 생략할 수도 있다.

 

다음은 애니메이션을 정의한 예시이다.

 

div {
    width: 100px;
    height: 100px;
    background-color: blue;
    animation: changeWidth 1500ms linear 1s infinite alternate
}

@keyframes changeWidth {
    from { width: 100px }
    to { width: 600px }
}

 

 

 

🔍 참조

transform https://developer.mozilla.org/ko/docs/Web/CSS/transform

vendor prefix https://developer.mozilla.org/en-US/docs/Glossary/Vendor_Prefix

transition https://www.w3schools.com/cssref/css3_pr_transition.asp

animation https://www.w3schools.com/cssref/css3_pr_animation.asp

 

 

 

 

 

'엘리스 AI 트랙 4기 > elice AI track' 카테고리의 다른 글

[1주차] git 원격 저장소  (0) 2022.01.17
[1주차] git branch  (0) 2022.01.17
[1주차] git 명령어  (0) 2022.01.17
[1주차] git  (0) 2022.01.17
[1주차] 미디어쿼리  (0) 2022.01.13

댓글