2022년 CSS를 새롭게 작성하는 방법이 많이 나왔다. 새로운 방법은 다양한 곳에 많이 작성되어 알 수 있었지만, 오늘 내가 말하고 싶은 내용은 아직 작성된 곳이 많이 없어 이렇게 직접 작성을 하게 되었다.
CSS를 아는 사람이라면 반드시 알아야 되는 속성입니다.
transform
속성은 요소를 변형하거나 변환하는 데 사용되는 속성입니다.
요소를 x축과 y축으로 이동시킵니다. 양수 값은 오른쪽 및 아래 방향으로 이동시키고, 음수 값은 왼쪽 및 위 방향으로 이동시킵니다.
요소를 주어진 각도만큼 회전시킵니다. 양수 값은 시계방향으로 회전하고, 음수 값은 반시계방향으로 회전합니다.
요소의 크기를 x축과 y축으로 조절합니다. 값이 1.0일 경우 원래 크기를 유지하며, 값이 작아지면 축소되고, 값이 커지면 확대됩니다.
요소를 x축과 y축 방향으로 기울입니다. 양수 값은 오른쪽 아래 방향으로 기울이고, 음수 값은 왼쪽 위 방향으로 기울입니다.
2D 변환 매트릭스를 직접 지정할 수 있습니다. 각각의 매개변수는 변환 행렬의 요소를 나타냅니다.
tranform을 사용 시 다양한 변환함수를 사용하는 경우, 아래와 같이 작성을 해야된다.
<style>
.my_test {
transform: translate(50px, 50px) rotate(45deg) scale(1.5);
}
</style>
위의 코드를 보게되면, 하나의 transform에 다양한 변환함수를 적어서 한 줄로 사용하게 된다.
다양한 변환 함수를 키프레임 애니메이션에 적용하는 예시를 확인해보면 아래와 같다.
<style>
.animated_box {
width: 100px;
height: 100px;
background-color: blue;
animation: transformAnimation 4s infinite;
}
@keyframes transformAnimation {
0% {
transform: translateX(0) rotate(0deg) scale(1);
}
25% {
transform: translateX(200px) rotate(90deg) scale(1.2);
}
50% {
transform: translateX(400px) rotate(180deg) scale(0.8);
}
75% {
transform: translateX(200px) rotate(270deg) scale(1.5);
}
100% {
transform: translateX(0) rotate(360deg) scale(1);
}
}
</style>
위의 코드와 같이 변형이되는 요소를 모두 작성을 해야만한다.
만약, translateX
변환함수가 고정이 되더라도, 우리는 transform의 속성을 모두 작성을 해줘야한다.
그렇지 않으면 아래의 링크와 같은 이슈가 발생할 수 있다.
오늘은 한번 개술가가 되보겠습니다. - planic324.log
2023년 2월에 MDN에 기재된 syntax로 아래와 같이 사용하면, 중복되는 변환함수를 사용하지 않을 뿐더러, transform이라는 속성을 사용하지 않아도 된다.
<style>
.test_box{
translate: 50px 50px;
scale: 0.8;
rotate: 45deg;
}
</style>
해당 코드처럼 transform
을 적지 않고, 바로 translate
, scale
, rotate
속성을 그대로 사용하는 것이다.
다른 skew
, matrix
는 아직 사용할 수 없는 단점이 있다.
만약, X축으로만 이동하고 싶은 경우는 아래와 같이 사용하면 된다.
<style>
.test_box{
translate: x 50px;
rotate: y 45deg;
}
</style>
새로운 Syntax를 사용하면 아래와 같이 중복된 transform을 사용하지 않고 작성을 할 수 있다.
<style>
.animated_box {
width: 100px;
height: 100px;
background-color: blue;
animation: transformAnimation 4s infinite;
}
@keyframes transformAnimation {
0% {
translate : x 0px;
rotate : 0deg;
scale : 1;
}
25% {
rotate : 45deg;
scale : 1.5;
}
50% {
translate : x 45px;
}
75% {
scale : 2;
}
100% {
translate : x 100pxp;
rotate : 180deg;
}
}
</style>
이와 같이 변경이 필요한 속성만 단일적으로 작성하여 코드에 대한 간결성을 높힐 수 있다.
협업을 하다보면, 기존에 알고 있는 방법으로만 작업을 하는 성향이 있다. 물론 손에 익으면 작업이 훨씬 수월하지만, 이와같이 새로운 방법을 알고 안 사용하는 것과 모르고 사용을 못하는 것에는 자기 발전에 엄청난 영향을 준다고 생각한다.
오늘도 이렇게 새로 배우게되서 정말 다행이다.
이 글을 읽는 모든 이들이 오늘보다 내일 발전 하는 자신을 느끼길 바란다.
MDN : https://developer.mozilla.org/ko/docs/Web/CSS/transform-function/translate
mozilla : https://developer.mozilla.org/en-US/docs/Web/CSS/scale
mozilla : https://developer.mozilla.org/en-US/docs/Web/CSS/rotate