Transform (rotate, scale, translate)
CSS transform property нь элементийг хөдөлгөх, эргүүлэх, томруулах, налуулах боломж олгодог — бусад элементүүдэд нөлөөлөхгүйгээр.
transform яаж ажилладаг вэ?
transform нь элементийн дүрслэгдсэн байдлыг өөрчилдөг. Харин document flow-д хамаарахгүй — хөрш элементүүдийг шахдаггүй.
.хайрцаг {
transform: rotate(45deg);
}
translate() — байрлал өөрчлөх
Элементийг X ба Y тэнхлэгийн дагуу шилжүүлнэ:
.шилжих {
transform: translate(50px, 20px); /* баруун 50px, доош 20px */
}
/* Зөвхөн нэг тэнхлэгт */
.баруун {
transform: translateX(100px);
}
.доош {
transform: translateY(-30px); /* дээш 30px */
}
position: relative + top/left-ийн оронд translate() ашиглах нь илүү гүйцэтгэлтэй.
rotate() — эргүүлэх
Элементийг цагийн зүүний дагуу эргүүлнэ:
.эргэх {
transform: rotate(45deg); /* 45 градус */
}
.урвуу {
transform: rotate(-90deg); /* цагийн зүүний эсрэг */
}
.дугуй {
transform: rotate(180deg); /* урвуулах */
}
scale() — хэмжээ өөрчлөх
Элементийн хэмжээг томруулах буюу жижигрүүлэх:
.томруулах {
transform: scale(1.5); /* 1.5 дахин том */
}
.жижигрүүлэх {
transform: scale(0.5); /* хагас жижиг */
}
/* X ба Y тусдаа */
.өргөн {
transform: scale(2, 1); /* зөвхөн өргөн 2 дахин */
}
scale(1) — анхны хэмжээ. scale(0) — боломгүй жижиг (харагдахгүй).
skew() — налуулах
Элементийг налуулна (parallelogram хэлбэрт):
.налуу {
transform: skew(15deg); /* X тэнхлэгт налуулах */
}
.хоёр-тэнхлэг {
transform: skew(15deg, 10deg); /* X ба Y хоёуланд */
}
Олон transform давхарлах
Нэг transform-д хэд хэдэн функц зай тавин бичнэ:
.олон {
transform: translate(50px, 0) rotate(45deg) scale(1.2);
}
Дараалал чухал! Transform-ууд баруунаас зүүн рүү биш — зүүнээс баруун рүү гүйцэтгэгддэг.
/* Эхлээд translate, дараа rotate */
.a {
transform: translate(100px, 0) rotate(45deg);
}
/* Эхлээд rotate, дараа translate — өөр үр дүн! */
.b {
transform: rotate(45deg) translate(100px, 0);
}
transform-origin — эргүүлэх цэг
Transform хаанаас эхлэхийг тодорхойлно. Анхдагч: center center (50% 50%):
.зүүн-дээд {
transform-origin: top left;
transform: rotate(45deg); /* зүүн дээд буланд зогсоод эргэнэ */
}
.доод-дундаас {
transform-origin: bottom center;
transform: rotate(-30deg);
}
/* Пиксел буюу хувиар */
.тодорхой {
transform-origin: 20px 80%;
}
Hover дээр transform ашиглах
.товч {
background: #a78bfa;
padding: 12px 24px;
transition: transform 0.2s ease;
}
.товч:hover {
transform: scale(1.05) translateY(-2px);
}
.товч:active {
transform: scale(0.98);
}
3D transform танилцуулга
CSS нь 3D transform-ийг дэмждэг. Эхлээд perspective тодорхойлно:
.хамтлаг {
perspective: 500px; /* 3D орон зайн гүн */
}
.картуудын-3d {
transform: rotateY(45deg); /* Y тэнхлэгт эргэх */
}
.хазайсан {
transform: rotateX(30deg); /* X тэнхлэгт эргэх */
}
.гүн {
transform: translateZ(50px); /* ойртох */
}
Өргөн хэрэглэгддэг 3D жишээ — картны хөрвүүлэлт:
.карт {
width: 200px;
height: 120px;
transform-style: preserve-3d;
transition: transform 0.6s;
}
.карт:hover {
transform: rotateY(180deg);
}
.урд,
.ар {
position: absolute;
backface-visibility: hidden;
}
.ар {
transform: rotateY(180deg);
}
matrix() — нэгдсэн transform
Бүх transform-ийг нэг математик матрицад нэгтгэдэг. Практикт ховор хэрэглэгддэг — JS animation library-нууд дотор ашигладаг:
/* translate(50px, 20px) rotate(10deg) scale(1.2) — нэг матрицаар */
.матрикс {
transform: matrix(1.18, 0.21, -0.21, 1.18, 50, 20);
}
Бодит жишээ: Загварлаг карт
.карт {
background: #0f172a;
border: 1px solid #1e293b;
border-radius: 12px;
padding: 24px;
transition:
transform 0.3s ease,
box-shadow 0.3s ease;
}
.карт:hover {
transform: translateY(-8px) scale(1.01);
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4);
}
Дараагийн хичээлд:
box-shadow ба text-shadow — элемент болон текстэд сүүдэр нэмэх аргуудыг судална.