본문 바로가기

CSS

css 전환(Transitions)과 변환(Transforms)



전환(Transitions) : 전환 효과를 설정하여 중간에 애니메이션을  넣어준다

transition-property :  전환 효과를 부여할 css속성에 이름을 설정한다.
기본값:all
transition-property의 속성값 
1 all : 해당 요소에 모든 css속성에 전환 효과를 부여한다.
2 속성이름:  명시한 css속성에만 전환 효과를 부여한다

transition-duration : 전환 효과의 동작 시간을 설정한다
기본값:0s 

transition-duration의 속성값 
숫자를 이용하여 동작시간을 명시한다 ex) transition-duration : 5s;

transition-delay : 전환 효과의 대기시간을 설정한다
기본값:0

transition-delay의 속성 값:
숫자를 이용하여 동작시작을 지연시킨다  ex) transiton-delay : 3s;

transition-timing-function : 타이밍 함수를 지정한다 

타이밍 함수란? :  전환효과(transition)가 동작할 때 동작 시작과 끝의 속도를 설정하는 것을 의미함

기본값 : ease 

transition-timing-function의 속성값 :
ease : 애니메이션이 동작할때 시작 구간 = 빠르게, 끝 구간  = 느리게 동작한다.
linear: 애니메이션이 동작할때 모든 구간이 일정하게 동작한다.
ease-in: 애니메이션이 동작할때 시작 구간이 느리고 점점 빨라진다.
ease-out:애니메이션이 동작할때 시작 구간이 빠르고 점점 느려진다.
ease-in-out : 애니메이션이 동작할때 시작 구간 = 느리게, 중간구간 = 빠르게, 끝 구간 = 느리게 동작한다.

ex)

<style>
.box1{
  width: 100px;
  height:100px;
  background-color: red;
}
.box1:hover{
  width: 300px;
  height: 300px;
  
  transition-duration: 5s;  /*전환 효과의 동작시간을 설정 */
  transition-property: width;/* 전환 효과를 부여할 css속성 설정 */
  transition-delay: 2s; /*전환 효과 동작 대기시간 설정 */
  transition-timing-function: linear; /*전환 효과 동작시 속도 설정 */
}
.box2{
  width: 100px;
  height:100px;
  background-color: blue;
}
.box2:hover{
  width: 300px;
  height: 300px;
  
  transition: 5s 2s width linear; /*box1과 동일하게 동작하고 transiton-duration,property,delay,timing-function을 한번에 설정한 예시 */
} 
  </style>
  <div class="box1">box1</div>
  <div class="box2"></div>


위코드에서 .box2:hover부분을 보면  단축 속성으로 transition을 한 번에 설정했는데 이때 duration과 delay의 표기법이 둘다s가 포함되어 있어 어떤 게 duration인지 어떤 게 delay인지
모를 수 있다고 생각하겠지만 브라우저는 앞에명시한 s를 duration 뒤에 명시한 s를 delay로 인식한다.

변환(transform) : 함수를 이용하여 요소의 변환 효과를 설정한다.

2D 변환(transform) 함수모음  (큰 틀로 보면 요소에 이동, 회전, 기울임, 크기를 설정한다)

translate(x, y): 요소를 x값(가로축), y값(세로축) 만큼 이동시킨다 이때 단위는 px ,%,em 등등을 사용한다
translateX: 요소를 x값(가로축)만큼 이동시킨다. 이때 단위는 px,%,em 등등을 사용한다
translateY: 요소를 y값(세로축)만큼 이동시킨다. 이때 단위는 px,%,em 등등을 사용한다.
scale(x, y): 요소를 x값(가로축), y값(세로축) 만큼 크기를 늘리고 줄인다 이때  숫자를 이용한 배수를 사용한다
scaleX: 요소를 x값(가로축)만큼 크기를 늘리고 줄인다 이때 숫자를 이용한 배수를 사용한다 
scaleY: 요소를 y값(세로축)만큼 크기를 늘리고 줄인다 이때 숫자를 이용한 배수를 사용한다.
rotate(deg): 요소를 ()안에 각도 값만큼 회전시킨다 이때 deg라는 단위를 사용하는데 deg는 각도를 나타낸다
skew(x-deg, y-deg) : 요소를 x-deg값(가로축), y-deg값(세로축) 만큼 기울인다 이때 deg는 각도를 나타낸다.
skewX(x-deg): 요소를 x-deg값(가로축)만큼 기울인다.
skewY(y-deg): 요소를 y-deg값(세로축)만큼 기울인다.

이때  모든함수에 x값은 양수일 때=오른쪽 음수일 때=왼쪽 y값은 양수일 때=아래쪽 음수일 때=위쪽으로 이동한다

ex)

 <style>
div{
  width: 100px;
  height: 100px;
  margin: 10px;
  /* 박스들이 공통적으로 가지는 크기와 외부여백 */
}
.box1{
  transform:translate(300px,30px);
  background-color: red;
  /* translate를 적용했을때 이동한 예시 */
}
.box2{
  transform: translateX(200px);
  background-color: orange;
}
/* translateX를 적용했을때 이동한 예시 */
.box3{
  transform: translateY(-100px);
  background-color: yellow;
  /* translateY를 적용했을때 이동한 예시 */
}
.box4{
  transform: scale(2,2);
  background-color: green;
  /* scale을 적용했을때 늘어난 크기에 대한 예시 */
}
.box5{
  transform:scaleX(3);
  background-color: blue;
}
/* scaleX를 적용했을때 늘어난 크기에 대한 예시 */
.box6{
  transform: scaleY(2);
  background-color: brown;
}
/* scaleY를 적용했을때 늘어난 크기에 대한 예시 */
.box7{
  transform: skew(30deg,10deg);
  background-color: blueviolet;
}
/* skew를 적용했을때 요소가 기울어진 예시 */
.box8{
  transform: skewX(30deg);
  background-color: pink;
}
/* skewX를 적용했을때 요소가 기울어진 예시 */
.box9{
  transform: skewY(20deg);
  background-color: black;
/* skewY를 적용했을때 요소가 기울어진 예시 */
}
.box10{
  transform:rotate(45deg);
  background-color: aqua;
  /* rotate를 적용했을때 요소가 회전한 예시 */
}

  </style>
  <div class="box1">translate(x,y)</div>
  <div class="box2">translateX</div>
  <div class="box3">translateY</div>
  <div class="box4">scale(x,y)</div>
  <div class="box5">scaleX</div>
  <div class="box6">scaleY</div>
  <div class="box7">rotate(deg)</div>
  <div class="box8">skew(x-deg,y-deg)</div>
  <div class="box9">skewX(x-deg)</div>
  <div class="box10">skewY(y-deg)</div>


3D 변환 함수 모음
translate(x,y,z): 요소를 x값(가로축), y값(세로축) z값만큼 이동시킨다 이때 단위는 px ,%,em 등등을 사용한다
translateZ: 요소를 z값만큼 이동시킨다. 이때 단위는 px,%,em 등등을 사용한다
scale(x, y, z): 요소를 x값(가로축), y값(세로축) z값만큼 크기를 늘리고 줄인다 이때  숫자를 이용한 배수를 사용한다
scaleZ: 요소를 z값 만큼 크기를 늘리고 줄인다 이때 숫자를 이용한 배수를 사용한다 
rotateX(deg): 요소에 x축을 기준으로 () 안에 각도 값만큼 회전시킨다 이때 deg라는 단위를 사용하는데 deg는 각도를 나타낸다
rotateY(deg): 요소에 y축을 기준으로 ()안에 각도 값만큼 회전시킨다. deg를 사용한다
rotateZ(deg): 요소에 z축을 기준으로 () 안에 각도 값만큼 회전시킨다 deg를 사용한다.
perspective(n): n에 값만큼 원근감을 설정한다 이때 ()안에 n값으로는 px,%,em 등등의 단위가 들어간다.

'CSS' 카테고리의 다른 글

css flex  (0) 2022.04.03
css 애니메이션 과 다단  (0) 2022.04.03
css background-  (0) 2022.04.03
css float와 position  (0) 2022.04.03
css 글꼴과 문자  (0) 2022.04.03