Difficulty: Intermediate
What CSS transform functions are available? How do 3D transforms work?
CSS transform applies 2D or 3D spatial modifications without affecting document flow.
2D functions: translate(), rotate(), scale(), skew() 3D functions: translate3d(), rotate3d(), perspective()
Key points: - Transforms don't affect layout (other elements don't move) - GPU-accelerated for smooth performance - transform-origin changes the pivot point - perspective() creates depth for 3D effects - Transforms are composited (applied in order) - Multiple transforms on one line are applied right-to-left
/* Translate: move element */
.move {
transform: translateX(50px);
transform: translateY(-20px);
transform: translate(50px, -20px);
}
/* Rotate: spin element */
.rotate {
transform: rotate(45deg);
transform-origin: top left; /* pivot point */
}
/* Scale: resize element */
.grow {
transform: scale(1.5); /* 150% */
transform: scaleX(2); /* stretch horizontal */
}
/* Skew: slant element */
.skew {
transform: skew(10deg, 5deg);
}
/* Combining transforms (order matters!) */
.combined {
transform: translate(100px, 0) rotate(45deg) scale(0.8);
/* Applied right-to-left:
1. scale, 2. rotate, 3. translate */
}
/* Center with transform */
.center-absolute {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
Transform order matters because each transform changes the coordinate system. translate then rotate gives different results than rotate then translate.
/* Perspective on parent creates depth */
.scene {
perspective: 1000px;
/* Lower value = more dramatic 3D effect */
}
/* 3D card flip */
.card-container {
perspective: 800px;
width: 300px;
height: 200px;
}
.card {
width: 100%;
height: 100%;
position: relative;
transform-style: preserve-3d;
transition: transform 0.6s ease;
}
.card-container:hover .card {
transform: rotateY(180deg);
}
.card-front, .card-back {
position: absolute;
inset: 0;
backface-visibility: hidden;
}
.card-back {
transform: rotateY(180deg);
}
perspective on the parent creates 3D space. transform-style: preserve-3d keeps children in 3D. backface-visibility: hidden hides the back of flipped elements.
/* Hover lift effect */
.card {
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.card:hover {
transform: translateY(-4px);
box-shadow: 0 12px 24px rgb(0 0 0 / 0.15);
}
/* Image zoom on hover */
.image-container {
overflow: hidden;
border-radius: 0.5rem;
}
.image-container img {
transition: transform 0.3s ease;
}
.image-container:hover img {
transform: scale(1.1);
}
/* Tilt effect with perspective */
.tilt:hover {
transform: perspective(500px)
rotateX(5deg) rotateY(-5deg);
}
The hover lift and image zoom are the most common transform patterns in modern web design. Overflow: hidden on the container clips the scaled image.
Transform, Translate, Rotate, Scale, Perspective, 3D Transforms