코드 그라데이션
14. 변형 본문
transform과 변형 함수
2차원 변형과 3차원 변형
- 2차원 변형은 웹 요소를 평면에서 변형한다.
- x축은 오른쪽으로 갈수록 값이 커지고, y축은 아래로 내려갈수록 값이 커진다.
- 3차원 변형은 x축, y축에 원근감 주는 z축을 추가해서 변형한다.
- 3차원 변형에서 z축은 앞뒤로 이동하며, 보는 사람 쪽으로 다가올수록 값이 커지고, 뒤로 갈수록 값이 작아진다.
2차원 변형 함수
3차원 변형 함수
translate() 함수 : 웹 요소를 이동시킨다.
- translate( ) 함수는 x축이나 y축 또는 양쪽 방향으로 이동할 거리를 지정하면 해당 요소가 지정한 크기만큼 이동
예제
실행 결과
scale() 함수 : 요소를 확대/축소
- 괄호 안의 값 (sx, sy, sz)이 1보다 확대되고 1보다 작으면 축소된다.
예제
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8">
<title>Transform:scale</title>
<style>
#container{
width: 600px;
margin: 20px auto;
}
.origin {
width: 100px;
height: 100px;
border: 1px solid black;
float: left;
margin: 40px;
}
.origin > div {
width: 100px;
height: 100px;
background-color: orange;
}
#scalex:hover{
transform: scaleX(2); /* x축으로(가로) 2배 확대 */
}
#scaley:hover{
transform: scaleY(1.5); /* y축으로(세로) 2배 확대 */
}
#scale:hover{
transform: scale(0.7); /* x, y축으로(가로, 세로) 0.7배 확대 */
}
</style>
</head>
<body>
<div id="container">
<div class="origin">
<div id="scalex"></div>
</div>
<div class="origin">
<div id="scaley"></div>
</div>
<div class="origin">
<div id="scale"></div>
</div>
</div>
</body>
</html>
실행 결과
2차원 rotate() 함수
- rotate( ) 함수를 2차원에서 사용할 때는 각도만 지정하면 된다.
- 함수는 웹 요소를 지정한 각도만큼 오른쪽(시계 방향)이 나 왼쪽(시계 반대 방향)으로 회전시킨다.
기본형
transform: rotate(각도)
- rotate( ) 함수에서 지정할수 있는 각도의 값은 일반적인 각도나 래디안을 사용하는데 , 이 때 1 래디안은 <180/파이>.를 의미한다.
- 회전 각도가 양수일 경우 오른쪽으로 회전하고, 음수일 경우 왼쪽으로 회전.
예제
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>rotateTest</title>
<style>
#container{
width:1800px;
margin:20px auto;
}
.origin {
width:200px;
height: 100px;
float: left;
margin: 300px;
}
#rotate1:hover {
transform: rotate(50deg); /* 시계 방향(오른쪽)으로 50도 회전 */
}
#rotate2:hover {
transform: rotate(-50deg); /* 시계 반대 방향(왼쪽)으로 50도 회전 */
}
</style>
</head>
<body>
<div id="container">
<div class="origin" id="rotate1">
<img src="images/LCD.png">
</div>
<div class="origin" id="rotate2">
<img src="images/LCD.png">
</div>
</body>
</html>
실행 결과
3차원 rotate() 함수
- x축이나 y축, z축을 기준으로 회전시킨다.
- perspective 속성을 함께 사용해서 원근감을 추가해 주면 회전 형태를 입체적으로 표현할 수 있다.
- perspective 속성은 3차원 변형에서 사용하는데, 원래 있던 위치에서 사용자가 있는 방향이나 혹은 반대 방향으로 잡아당기거나 밀어내어 원근감을 표현한다.
- perspective 속성 사용값은 0보다 커야 하며, 원래 있던 위치에서 사용자가 있는 쪽으로 얼마나 이동하는지를 픽셀 크기로 나타낸다.
- 값이 클수록 사용자로부터 멀어진다.
예제
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Roatate3D Test</title>
<style>
#container{
width:800px;
margin:20px auto;
}
.origin {
width: 100px;
height: 100px;
margin: 40px;
float: left;
border: 1px solid black;
perspective: 200px; /* 원근감 추가 */
}
.origin > div {
width:100px;
height:100px;
background-color:pink;
transition:all 2s; /* 2초 동안 회전하도록 트랜지션 적용 */
}
#rotatex:hover {
transform: rotateX(55deg); /* x축으로 55도 회전 */
}
#rotatey:hover {
transform: rotateY(55deg); /* y축으로 55도 회전 */
}
#rotatez:hover {
transform: rotateZ(55deg); /* z축으로 55도 회전 */
}
#rotatexyz:hover {
transform: rotate3d(2.5, 1.2, -1.5, 55deg); /* x,y,z축으로 55도 회전 */
}
#skewx:hover{
transform: skewX(40deg);
}
#skewy:hover{
transform: skewY(15deg);
}
#skewxy:hover{
transform: skew(-35deg, -15deg); /*x축으로 -35도 y축으로 -15도 비틀기*/
}
</style>
</head>
<body>
<div id="container">
<div class="origin">
<div id="rotatex"></div>
</div>
<div class="origin">
<div id="rotatey"></div>
</div>
<div class="origin">
<div id="rotatez"></div>
</div>
<div class="origin">
<div id="rotatexyz"></div>
</div>
<div class="origin">
<div id="skewx"></div>
</div>
<div class="origin">
<div id="skewy"></div>
</div>
<div class="origin">
<div id="skewxy"></div>
</div>
</div>
</body>
</html>
실행 결과
예제 2
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>PerspectiveTest</title>
<style>
.origin{
width:200px;
height:180px;
border:1px solid black;
margin:550px;
float:left;
}
.origin > div {
width:152px;
height:180px;
}
.rotatex:hover {
transform: rotateX(60deg); /* x축으로 60도 회전 */
}
#pers {
perspective:750px; /* 원근감 추가 */
}
</style>
</head>
<body>
<h4>원본 이미지</h4>
<div class="origin">
<img src="images/pandas.jpg" alt="">
</div>
<div class="origin">
<div class="rotatex">
<img src="images/pandas.jpg" alt="">
</div>
</div>
<div class="origin" id="pers">
<div class="rotatex">
<img src="images/pandas.jpg" alt="">
</div>
</div>
</body>
</html>
실행 결과
요소를 비틀어 왜곡하는 skew() 함수
- 지정한 각도만큼 요소를 비틀어 왜곡한다.
- 양쪽 방향으로 비틀거나 한쪽 방향으로만 비틀 수도 있다.
예제
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8">
<title>Transform</title>
<style>
#container{
width:600px;
margin:20px auto;
}
.origin {
width: 100px;
height: 100px;
border: 1px solid black;
float: left;
margin: 40px;
}
.origin > div {
width:100px;
height:100px;
background-color:orange;
}
#skewx:hover {
transform: skewX(30deg); /* x축 기준으로 30도 비틀기 */
}
#skewy:hover {
transform: skewY(15deg); /* y축 기준으로 15도 비틀기 */
}
#skewxy:hover {
transform: skew(-25deg, -15deg); /* x축 기준으로 -25도, y축 기준으로 -15도 비틀기 */
}
</style>
</head>
<body>
<div id="container">
<div class="origin">
<div id="skewx"></div>
</div>
<div class="origin">
<div id="skewy"></div>
</div>
<div class="origin">
<div id="skewxy"></div>
</div>
</div>
</body>
</html>
실행 결과
- skewX() 함수는 각도값이 양수면 왼쪽이 올라가고 오른쪽이 내려가는 형태
- skewY() 함수는 각도값이 양수면 오른쪽이 올라가고 왼쪽이 내려가는 형태
728x90
'Front > Mega-CSS' 카테고리의 다른 글
16. 에니메이션 (0) | 2023.06.04 |
---|---|
15. 트랜지션 (6) | 2023.06.03 |
13. 가상 클래스와 가상 요소 (0) | 2023.05.17 |
12. 속성 선택자 (0) | 2023.05.16 |
11. 연결 선택자 (0) | 2023.05.15 |
Comments