변형 (Transform)
- transform 속성을 사용하여 HTML 요소의 모양, 크기, 위치 등을 바꿀 수 있다
- 제공하는 동작 : 요소를 움직이거나, 회전시키거나, 크기를 변경하거나, 기울이기
> CSS 좌표 체계
- CSS 좌표 체계에서 기준점은 브라우저의 왼쪽 상단
> 2D 변형 (transform)
- CSS3 2D transform 속성
속성 | 설명 |
transform | 요소에 2D 또는 3D transform을 적용함 |
transform-origin | 요소에 transform을 적용하는 변환 중심을 설정 |
- CSS3 2D transform 메소드
메소드 | 설명 |
matrix(n,n,n,n,n,n) | 모든 2D transform 메소드를 한 번에 설정 |
translate(x,y) | 해당 요소를 주어진 x, y축 거리만큼 이동 |
translateX(n) | 주어진 x축 거리만큼 이동 |
translateY(n) | 주어진 y축 거리만큼 이동 |
rotate(각도) | 주어진 각도만큼 시계/반시계 반향으로 회전 |
scale(x,y) | 주어진 배율만큼 늘리거나 줄임 |
scaleX(n) | x축 크기를 주어진 배율만큼 늘리거나 줄임 |
scaleY(n) | y축 크기를 주어진 배율만큼 늘리거나 줄임 |
skew(x축각도, y축각도) | 주어진 각도만큼 각각 x축과 y축 방향으로 기울임 |
skewX(각도) | 주어진 각도만큼 x축 방향으로 기울임 |
skewY(각도) | 주어진 각도만큼 y축 방향으로 기울임 |
> 3D 변형 (transform)
- CSS3 3D transform 속성
속성 | 설명 |
transform | 요소에 2D / 3D 변환 적용 |
tranform-origin | 변환을 적용하는 변환 중심 설정 |
transform-style | 변환이 자식(child) 요소들에게도 적용될지 설정 |
perspective | 원근감 표현할 때 사용할 픽셀 수 설정 |
perspective-origin | 원근감 표현할 때 사용할 기준 축 설정 |
backface-visibility | 요소의 앞면만을 표현(뒷면 표현 안함) 여부를 설정 |
- CSS3 3D transform 메소드
메소드 | 설명 |
matrix3d(n x 16) | 4x4 행렬을 이용한 16개 매개변수로 모든 3D 변형 메소드 한 번에 설정 |
rotate3d(x,y,z angle) | 주어진 각도만큼 x,y,z축 기준으로 회전 |
rotateX(angle) | 주어진 각도만큼 x축을 기준으로 회전 |
rotateY(angle) | - |
rotateX(angle) | - |
translate3d(x,y,z) | 현재 위치에서 주어진 x,y,z축의 거리만큼 이동 |
translateX(x) | 주어진 x축의 거리만큼 이동 |
translateY(y) | - |
translateZ(z) | - |
scale3d(x,y,z) | 주어진 배율만큼 x,y,z축 방향으로 늘리거나 줄임 |
scaleX(x) | 주어진 매율만큼 x축 방향으로 늘리거나 줄임 |
scaleY(y) | - |
scaleZ(z) | - |
perspective(n) | 3D 요소에 원근감을 표현할 때 사용할 픽셀 수 설정 |
전환 (transition)
- 정해진 시간 동안 요소의 속성값을 부드럽게 변화시킬 수 있다
- 전환을 위해 제공되는 속성
1. transition 속성
- 추가할 CSS 스타일 전환 효과를 설정 → 전환 효과가 지속될 시간을 설정
- 여러 속성을 동시에 변경할 수도 있다
- (예) 마우스를 올려놓으면 너비, 높이를 변경하는 예제
<style>
#resize {
height: 100px;
width: 150px;
-webkit-transition: width 1s, height 3s;
transition: width 1s, height 3s;
}
#resize:hover { width: 300px; height: 500px; }
</style>
2. transition-property 속성
- 추가할 전환 효과 설정
3. transition-duration 속성
- 전환 효과가 지속될 시간 설정
4. transition-timing-function 속성
- 전환 효과의 시간당 속도
- 설정할 수 있는 값 : linear, ease, ease-in, ease-out, ease-in-out, cubic-bezier(n,n,n,n)
5. transition-delay 속성
- 전환 효과가 나타나기 전까지의 지연 시간 설정
- 전환 효과는 이 메소드의 설정 시간이 지난 후에 비로소 시작된다
Animation
- 요소의 현재 스타일을 다른 스타일로 천천히 변화시킨다
> @keyframes 규칙
- 키 프레임(keyframe)에는 특정한 시간에 해당 요소가 가져야 할 CSS 스타일을 명시한다
- @keyframes 규칙안에 CSS 규칙을 설정하여, 해당 요소의 스타일은 특정 시간까지 새로운 스타일로 천천히 변화할 것이다
- 애니메이션 효과가 동작하기 위해서는 먼저 animation-name 속성을 이용해 요소와 키 프레임을 연결해야 한다
<style>
p {
-webkit-animation-name: movingPara;
-webkit-animation-duration: 3s;
animation-name: movingPara;
animation-duration: 3s;
}
@keyframes movingPara {
from { margin-left: 100%; }
to { margin-left: 0%; }
}
</style>
- from 키워드에는 처음 스타일, to 키워드에는 마지막 스타일 명시
- 더 복잡한 애니메이션 효과를 나타내기 위해 from / to 키워드 대신 퍼센트를 사용할 수 있다. 0%에는 처음 스타일, 100%에는 마지막 스타일을 명시한다.
<style>
p {
-webkit-animation-name: movingPara;
-webkit-animation-duration: 4s;
animation-name: movingPara;
animation-duration: 4s;
}
@-webkit-keyframes movingPara {
0% { border-color: red; }
20% { border-color: orange; }
40% { border-color: yellow; }
50% { border-color: green; }
60% { border-color: blue; }
80% { border-color: navy; }
100% { border-color: purple; }
}
</style>
- 재생이 끝난 애니메이션 효과는 맨 처음 스타일로 요소를 되돌려 놓는다
> CSS3 animation 속성
속성 | 설명 |
animation | 모든 animation 속성을 이용한 스타일을 한 줄에 설정 |
animation-name | 애니메이션 효과 이름 설정 |
animation-duration | 재생할 시간 설정 (기본값 0초) |
animation-delay | 효과가 나타나기까지의 지연 시간 설정 |
animation-iteration-count | 몇 번 반복될지 설정 |
animation-direction | 진행 방향 설정 ( 속성값 : reverse(반대 방향), alternate(반복될 때마다 반향 변경)) |
animation-timing-function | 시간당 속도를 설정 (속성값 : linear, ease, ease-in, ease-out, cubic-bezier(n,n,n,n) |
animation-fill-mode | 애니메이션이 재생 중이 아닐 때 스타일을 설정 |
animation-play-state | 애니메이션 효과의 재생 상태를 설정 |
- 애니메이션 축약 표현 : 모든 애니메이션 속성을 한 줄에 설정
<!-- 문법 -->
div { animation: myShorthand 3s ease-in-out 1s 3 alternate; }
<style>
div {
animation-name: myShorthand;
animation-duration: 3s;
animation-timing-function: ease-in-out;
animation-delay: 1s;
animation-iteration-count: 3;
animation-direction: alternate;
}
</style>
<!-- 위, 아래 코드는 같은 애니메이션 효과 표현 -->
<style>
#long {
-webkit-animation-name: myShorthand;
-webkit-animation-duration: 3s;
-webkit-animation-timing-function: ease-in-out;
-webkit-animation-delay: 1s;
-webkit-animation-iteration-count: 3;
-webkit-animation-direction: reverse;
animation-name: myShorthand;
animation-duration: 3s;
animation-timing-function: ease-in-out;
animation-delay: 1s;
animation-iteration-count: 3;
animation-direction: reverse;
}
#short {
-webkit-animation: myShorthand 3s ease-in-out 1s 3 reverse;
animation: myShorthand 3s ease-in-out 1s 3 reverse;
}
</style>
[참고] http://tcpschool.com/css/intro
'Web > HTML & CSS' 카테고리의 다른 글
[CSS] 티스토리 코드블럭 여백, 테두리 없애기 : pre / !important (0) | 2022.09.30 |
---|---|
[CSS] CSS3 (4) : 버튼, UI, 다중 칼럼 레이아웃, 플렉서블 박스 레이아웃, 미디어 쿼리 (0) | 2021.07.10 |
[CSS] CSS3 (2) : 그림자 효과, 배경, 테두리, 텍스트, 웹 글꼴 (0) | 2021.07.07 |
[CSS] CSS3 (1) : CSS3 모듈, 벤더 프리픽스, 색, 그래디언트 (0) | 2021.07.07 |
[CSS] CSS 고급 (2) : Form 요소, @규칙 (0) | 2021.07.05 |