Panduan lengkap CSS Masking & Shapes untuk efek visual kreatif
CSS Masking & Shapes memungkinkan Anda membuat efek visual kompleks dengan menutupi bagian elemen atau mengubah bentuk aliran konten.
/* Basic Clip Path */
.clipped {
clip-path: circle(50% at 50% 50%);
}
/* Image Mask */
.masked {
mask-image: url('mask.png');
mask-size: cover;
}
/* Shape Outside */
.shape {
shape-outside: polygon(0 0, 100% 0, 100% 100%);
float: left;
}
đ Penjelasan Detail:
âĸ clip-path
- Memotong elemen menjadi bentuk tertentu
âĸ mask-image
- Menerapkan mask menggunakan gambar/SVG
âĸ shape-outside
- Mengubah aliran konten di sekitar elemen
âĸ shape-margin - Menambahkan margin pada shape
/* Complex Clip Path */
.complex-clip {
clip-path: path('M10,10 L100,50 L50,100 Z');
}
/* Gradient Mask */
.gradient-mask {
mask-image: linear-gradient(to right, black, transparent);
}
/* Circle Shape */
.circle-shape {
shape-outside: circle(50%);
width: 200px;
height: 200px;
}
Clip-path: Chrome 55+, Firefox 54+, Safari 9.1+, Edge 79+. Shape-outside: Chrome 37+, Firefox 62+, Safari 10.1+, Edge 79+.
/* Basic Shape Functions */
.circle {
clip-path: circle(50% at center);
}
.ellipse {
clip-path: ellipse(25% 40% at 50% 50%);
}
.polygon {
clip-path: polygon(0% 0%, 100% 0%, 50% 100%);
}
.inset {
clip-path: inset(10% 20% 30% 40%);
}
đ Penjelasan Detail:
âĸ circle()
- Membuat bentuk lingkaran
âĸ ellipse()
- Membuat bentuk elips
âĸ polygon()
- Membuat bentuk poligon kustom
âĸ inset()
- Memotong bagian dalam elemen
âĸ path()
- Menggunakan path SVG untuk bentuk kompleks
/* Multiple Masks */
.complex-mask {
mask-image: url('mask1.png'), url('mask2.png');
mask-composite: exclude;
}
/* Shape with Margin */
.text-flow {
shape-outside: url('shape.png');
shape-margin: 20px;
}
/* Animated Clip Path */
.morphing-shape {
clip-path: polygon(0% 0%, 100% 0%, 100% 100%);
transition: clip-path 0.5s ease;
}
.morphing-shape:hover {
clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
}
Mask-composite: Chrome 73+, Firefox 53+, Safari 12.1+. Animated clip-path: Chrome 55+, Firefox 54+, Safari 12.1+.
Gunakan masking dan shapes untuk efek kreatif, tetapi selalu pertimbangkan fallback untuk browser yang tidak mendukung.
/* â
Good - With fallback */
.image-container {
border-radius: 50%; /* Fallback */
clip-path: circle(50% at center);
}
/* â
Good - Using @supports */
@supports (shape-outside: circle()) {
.advanced-shape {
shape-outside: circle(50%);
}
}
/* â Avoid - Overusing complex shapes */
body > * {
clip-path: polygon(0% 0%, 100% 0%, 100% 100%);
}
đ Penjelasan Detail:
âĸ Sediakan fallback - Gunakan border-radius sebagai fallback untuk clip-path
âĸ Gunakan @supports - Untuk fitur lanjutan yang mungkin tidak didukung semua browser
âĸ Optimalkan performa - Shape kompleks bisa mempengaruhi rendering
âĸ Pertahankan aksesibilitas - Pastikan konten tetap terbaca setelah diterapkan masking