- 2차원 변형
- 수평이나 수직으로 웹 요소 변형
- x 축은 오른쪽으로 갈 수록, y축은 아래로 갈 수록 값이 커짐
- 크기나 각도만 지정하면 됨
- 2차원 좌표 사용
- 3차원 변형
- x축과 y축에 원근감 추가
- z축은 앞뒤로 이동(입체감을 느낄 수 있음)
- translate() 함수
- transform:translate(tx, ty) - x축 방향으로 tx만큼, y축 방향으로 ty만큼 이동
- transform:translate3d(tx, ty, tz) - x축 방향으로 tx만큼, y축 방향으로 ty만큼, z축 방향(앞뒤)으로 tz만큼 이동
- transform:translateX(tx) - x축 방향으로 tx만큼 이동
- transform:translateY(ty) - y축 방향으로 ty만큼 이동
- transform:translateZ(tz) - z축 방향으로 tz만큼 이동
- scale 함수
- transform:scale(sx, sy) - x축 방향으로 sx만큼, y축 방향으로 sy만큼 확대 예) scale(2.0) = scale(2) = scale(2, 2) : 요소를 두 배로 확대.
- transform:scale3d(sx, sy, sz) - x축 방향으로 sx만큼, y축 방향으로 sy만큼, z축 방향으로 sz만큼 확대
- transform:scaleX(sx) – x축 방향으로 sx만큼 확대
- transform:scaleY(sy) - y축 방향으로 sy만큼 확대
- transform:scaleZ(sz) -z축 방향으로 sz만큼 확대
- rotate 함수 : 각도만큼 웹 요소를 회전 / 시계 방향 +값, 반 시계 방향 -값 // 일반 각도(degree)나 래디안(radian) 값 사용
<style>
……
#rotate1:hover {
transform: rotate(40deg);
}
#rotate2:hover {
transform: rotate(-40deg);
}
</style>
- transform-origin 속성 : rotate 트랜스폼은 요소의 중앙을 중심으로 회전 / transform-origin으로 중심점을 지정
<style>
……
#rotate1:hover {
transform: rotate(40deg);
}
#rotate2:hover {
transform-origin: left top;
transform: rotate(40deg);
}
#rotate3:hover {
transform-origin: 30px 30px;
transform: rotate(40deg);
}
#rotate4:hover {
transform-origin: 0% 100%;
/* transform-origin: left bottom */
transform: rotate(40deg);
}
</style>
- 3차원 rotate() 함수
- transform: rotate(rx, ry, 각도)
- transform: rotate3d(rx, ry, rz, 각도)
- transform: rotatex(각도)
- transform: rotatey(각도)
- transform: rotatez(각도)
- perspective 속성 : 입체감을 표현, 변형하는 요소의 부모 요소에 정의해야 함
.rotatex:hover {transform: rotateX(50deg); }
/3차원회전인데 입체감 없음/
.rotatex:hover {
transform: rotateX(50deg);
}
#pers {
perspective:300px;
} /*3차원회전에 입체감을 줌*/
- skew 함수 : 요소를 지정한 각도만큼 비틀어 왜곡
- transform:skewX(ax) – x축을 따라 당김
- transform:skewY(ay) – y축을 따라 당김
- transform:skew(ax, ay) – 첫 번째 각도는 x축, 두번째 각도는 y축(없으면 0으로 간주함)
<style>
……
#skewx:hover {
transform: skewX(30deg);
}
#skewy:hover {
transform: skewY(15deg);
}
#skewxy:hover {
transform: skew(-25deg, -15deg);
}
</style>
.box {
width:500px;
height:80px;
background-color:#222;
transform: skewX(15deg); /* box전체 비틀기-굴자포함 */
}
h1 {
color:#fff;
font-weight:bold;
line-height: 80px;
text-align: center;
transform: skewX(-15deg); /* 굴자를 원래대로 */
}
- CSS로 도형 그리기
- 사각형
<div class="square"></div>
.square {
width: 100px;
height: 100px;
background: #b8005c; }
- 원
<div class="circle"></div>
.circle {
width: 100px;
height: 100px;
background: #b8005c;
border-radius: 50%;}
- 삼각형
<div class=”triangle"></div>
.triangle {
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 100px solid #b8005c; }
- 평행사변형
<div class=”parallel"></div>
.paralle {
width: 100px;
height: 100px;
transform: skew(15deg);
background: #b8005c; }
- 마름모
<div class=”diamond"></div>
.diamond {
width: 100px;
height: 100px;
transform: rotate(45deg);
background: #b8005c; }
웹 요소의 스타일 속성이 조금씩 자연스럽게 바뀌는 것
- 트랜지션에서 사용하는 속성들
- transition-property 속성 : 트랜지션을 적용할 속성(ex, 크기, 색상) 선택
transition-property: all | none | <속성이름>
transition-property: width;
- transition-duration 속성 : 트랜지션 진행 시간 지정 / 초(seconds) 또는 밀리초(milliseconds) //여러 개라면 쉼표(,)로 구분해 진행 시간 지정
<style>
.box {
……
transition-property: all;
transition-duration: 2s;
}
…
</style>
- transition-timing-function 속성 : 트랜지션의 시작과 중간, 끝에서의 속도 지정
- ease : 처음엔 천천히 > 빨라지다 > 마지막 천천히 / 기본값
- linear : 똑같은 속도로
- ease-in : 느리게 시작
- ease-oot : 느리게 끝냄
- ease-in-out : 느리게 시작하고 느리게 끝냄
- cubic-bezier(n, n, n, n) : 베지에 함수를 정의해서 사용(n = 0~1)
- transition-delay 속성 : 지연 시간 지정
#ex:hover .box{
margin-left: 420px;
transform:rotate(720deg);
transition-duration: 3s; }
- transition 속성 : 트랜지션 관련 속성을 한꺼번에 지정
transition: <transition-property값> | <transition-duration값> | <transition-timing-fuction값> | <transition-delay값>
transition: 0.5s ease-in;
- opacity 속성, overflow 속성
- opacity 속성 : 요소의 불투명도를 설정(0~1)
- overflow 속성 : 내용이 더 클 때 어떻게 표시할 것인지 설정 /사용 값 : visible, hidden, scroll, auto
- 이미지 위로 마우스 커서를 올리면 설명 표시하기
.prod-list li:hover .caption {
opacity: 1;
transform: translateY(-200px); }
- 상품 설명글에 스타일 지정하기
.prod-list .caption {
position: absolute;
top: 200px;
width: 300px;
height: 200px;
padding-top: 20px;
opacity: 0;
z-index: 10;
background:rgba(0,0,0,0.6); }
.prod-list li:hover .caption {
……
}
.prod-list .caption h2,
.prod-list .caption p {
color: #fff;
text-align: center;}
- 설명글이 부드럽게 등장하도록 해보자
.prod-list .caption {
position: absolute;
top: 200px;
width: 300px;
height: 200px;
padding-top: 20px;
opacity: 0;
z-index: 10;
background:rgba(0,0,0,0.6);
transition: all 0.6s ease-in-out; }