Categories: CSS

CSS transform 변형 알아보기

CSS transform 변형 이란?

CSS transform은 웹페이지에서 요소의 모양, 크기, 위치 등을 변형 시키기 위한 속성입니다.
주로 애니메이션 및 레이아웃 조정에 사용됩니다.

CSS transform 속성

CSS transform의 주요 속성과 종류에 대한 설명입니다.

  1. 이동(translate):
    • translateX(tx): X축 방향으로 이동합니다.
    • translateY(ty): Y축 방향으로 이동합니다.
    • translate(tx, ty): X와 Y축 방향으로 동시에 이동합니다.
  2. 회전(rotate):
    • rotate(angle): 주어진 각도만큼 요소를 회전시킵니다.
  3. 크기 조절(scale):
    • scaleX(sx): X축 방향으로 크기를 조절합니다.
    • scaleY(sy): Y축 방향으로 크기를 조절합니다.
    • scale(sx, sy): X와 Y축 방향으로 동시에 크기를 조절합니다.
  4. 기울이기(skew):
    • skewX(angle): X축 방향으로 기울입니다.
    • skewY(angle): Y축 방향으로 기울입니다.
    • skew(ax, ay): X와 Y축 방향으로 동시에 기울입니다.
  5. 원근법(perspective):
    • perspective(px): 3D 변형에 사용되는 원근법 설정입니다.
    • 해당 속성이 적용된 부모 요소의 하위 자식 요소에게 3D 변환 효과가 나타납니다.
    • 즉 perspective 속성은 부모 요소에 주어야 합니다.
  6. 행렬 변형(matrix):
    • matrix(a, b, c, d, tx, ty): 2D 변형을 행렬로 지정합니다.
    • a와 d는 각각 X와 Y축에서의 크기를 나타냅니다.
    • b와 c는 각각 X와 Y축에서의 기울임을 나타냅니다.
    • tx와 ty는 각각 X와 Y축에서의 이동을 나타냅니다.
  7. 복합 변형(combining transforms): 여러 변형을 조합하여 사용할 수 있습니다.

CSS transform 예제

설명

CSS transform 의 주요 속성에 대한 예제입니다.
아래는 예제에 공통적으로 적용되는 HTML 과 CSS 입니다.
비교를 위해 body에 border를 설정했습니다.

HTML
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>transform</title>
  <style>
    body {
      margin: 200px;
      border: 2px solid black;
    }
    .box {
      width: 300px;
      height: 300px;
      margin: 30px auto;
      text-align: center;
      font-size: 30px;
      background-color: orange;
      border: 2px solid black;
    }
  </style>
</head>
<body>
  <div class="box">
    <p>박스</p>
  </div>
</body>
</html>
HTML

transform 속성을 설정하기 전 입니다.

이동(translate)

translate 속성은 설정 값 만큼 요소를 이동 시킵니다.

CSS
.box {
  transform: translate(50px, 30px);
}
CSS

translate 속성으로 오른쪽으로 50px, 아래쪽으로 30px 이동 했습니다.

회전(rotate)

rotate 속성은 설정 값 만큼 요소를 회전 시킵니다.

CSS
.box {
  transform: rotate(45deg);
}
CSS

요소를 45도 각도로 회전 했습니다.

크기 조절(scale)

scale 속성은 설정 값 만큼 요소의 크기를 조절합니다.

CSS
.box {
  transform: scale(1.5);
}
CSS

요소의 크기를 1.5배 확대하였습니다.

기울이기(skew)

skew 속성은 설정 값 만큼 요소를 기울입니다.

CSS
.box {
  transform: skew(30deg, 20deg);
}
CSS

첫 번째 값(30deg): X축 방향으로 30도만큼 기울이고,
두 번째 값(20deg): Y축 방향으로 20도만큼 기울기를 주었습니다.

원근법(perspective)

perspective 속성은 원근법을 설정하는 데 사용되며,
해당 속성이 적용된 부모 요소의 하위 자식 요소에게 3D 변형 효과가 나타납니다.
즉 perspective 속성은 부모 요소에 주어야 합니다.

CSS
body {
  perspective: 1000px;
}
.box {
  transform: rotateY(45deg);
}
CSS

부모 요소인 body 에 perspective 속성을 주었고,
자식 요소인 .box 에 Y축을 기준으로 45도 만큼 회전하는 변형을 주었습니다.

행렬 변형(matrix)

matrix 속성은 matrix(a, b, c, d, tx, ty) 를 이용하여 2D 변형을 행렬로 적용합니다.
a와 d는 각각 X와 Y축에서의 크기를 나타냅니다.
b와 c는 각각 X와 Y축에서의 기울임을 나타냅니다.
tx와 ty는 각각 X와 Y축에서의 이동을 나타냅니다.

CSS
.box {
  transform: matrix(1, 0.5, -0.5, 1, 100, 100);
}
CSS

크기: X와 Y축 모두 1배씩 확대합니다. (a=1, d=1)
기울임: X축에서 0.5만큼, Y축에서 -0.5만큼 기울입니다. (b=0.5, c=-0.5)
이동: X와 Y축 모두 100만큼 이동합니다. (tx=100, ty=100)

복합 변형(combining transforms)

여러 변형을 한 줄에 조합 할 수 있습니다.

CSS
.box {
  transform: translate(20px, 20px) rotate(45deg) scale(1.2);
}
CSS

translate(20px, 20px): X축으로 20px, Y축으로 20px 이동합니다.
rotate(45deg): 45도만큼 시계 방향으로 회전합니다.
scale(1.2): 크기를 1.2배 확대합니다.

결론

CSS transform 을 이용하면 웹 요소에 다양한 변형 효과를 부여하여 동적이고 멋진 스타일을 만들 수 있습니다. 각 속성은 원하는 효과에 따라 조절하여 사용하며, 여러 속성을 조합함으로써 다양한 시각적 변화를 구현할 수 있습니다.

suover

Recent Posts

Java 자바 큐(Queue) 개념과 사용법

Queue란 무엇인가? Java에서 Queue는 데이터 구조의 일종으로, 데이터를 선입선출(FIFO, First-In-First-Out) 방식으로 처리합니다. 이 글에서는 Queue의…

4주 ago

Java 자바 스택(Stack) 개념과 사용법

Stack이란 무엇인가? Java에서 Stack은 자료구조의 한 종류로, 데이터를 순서대로 쌓아 올리는 형태로 운영됩니다. 컴퓨터 과학에서…

1개월 ago

Java 자바 Map – HashMap, TreeMap, LinkedHashMap 정리

소개 자바에서 Map 인터페이스는 키(Key)와 값(Value)의 쌍을 저장하는 자료구조입니다. 이는 연관 배열이라고도 불리며, 각 키는…

1개월 ago

Java 자바 Set – HashSet, TreeSet, LinkedHashSet 정리

소개 자바에서 Set은 중복을 허용하지 않는 데이터 집합을 의미합니다. List와 달리 동일한 요소를 여러 번…

2개월 ago

Java 자바 Hash 해시 제대로 이해하기

해시(Hash)란 무엇인가? 해시(Hash)는 자바 프로그래밍에서 빠르고 효율적인 데이터 저장 및 검색을 위한 핵심적인 개념입니다. 이…

2개월 ago

Java 자바 리스트 (List) 정리

List란 무엇인가? List는 자바 컬렉션 프레임워크의 핵심 인터페이스 중 하나로, 순서가 있는 데이터를 다루는 데…

2개월 ago