Panduan lengkap CSS Media Queries untuk desain web responsif
Media Queries memungkinkan Anda menerapkan CSS berbeda berdasarkan karakteristik perangkat seperti lebar layar, orientasi, dan resolusi.
/* Breakpoint dasar */
@media (max-width: 768px) {
.container {
padding: 1rem;
}
}
/* Range lebar layar */
@media (min-width: 576px) and (max-width: 992px) {
.card {
width: 50%;
}
}
/* Orientasi perangkat */
@media (orientation: portrait) {
.header {
height: auto;
}
}
đ Penjelasan Detail:
âĸ @media
- Aturan untuk menentukan media queries
âĸ max-width
- Maksimum lebar viewport
âĸ min-width
- Minimum lebar viewport
âĸ orientation
- Portrait atau landscape
âĸ and
- Kombinasi multiple conditions
/* Mobile-first approach */
.container {
padding: 1rem;
}
@media (min-width: 768px) {
.container {
padding: 2rem;
}
}
/* Media query untuk print */
@media print {
.navbar {
display: none;
}
}
/* Media feature untuk dark mode */
@media (prefers-color-scheme: dark) {
--bg-color: #222;
--text-color: #fff;
}
Media Queries didukung di semua browser modern (Chrome 29+, Firefox 23+, Safari 9+, Edge 12+). Fitur prefers-color-scheme didukung Chrome 76+, Firefox 67+, Safari 12.1+.
/* Common Breakpoints (px) */
Mobile /* <576px */
Tablet /* 576-992 */
Desktop /* 992-1200 */
Large Desktop /* >1200 */
/* Media Features */
width, height /* Dimensi viewport */
aspect-ratio /* Rasio width/height */
orientation /* Portrait/landscape */
resolution /* Kepadatan piksel */
hover /* Dukungan hover */
đ Penjelasan Detail:
âĸ Breakpoints umum - Mobile (540px), Tablet (720px), Desktop (960px)
âĸ Pixel ratio - Untuk layar retina (@2x, @3x)
âĸ prefers-reduced-motion - Untuk pengguna yang sensitif terhadap animasi
âĸ hover/pointer - Deteksi jenis perangkat input
âĸ Gunakan unit relatif (em, rem, %) daripada piksel absolut
/* CSS Grid dengan media queries */
@media (min-width: 768px) {
.grid-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}
}
/* Media query bersarang */
@supports (display: grid) {
@media (min-width: 1024px) {
main {
display: grid;
grid-template-columns: 1fr 3fr;
}
}
}
/* Media query untuk JavaScript */
const mq = window.matchMedia('(min-width: 768px)');
if (mq.matches) { console.log('Desktop view') };
Grid dengan media queries didukung di semua browser modern. Fitur matchMedia() didukung di Chrome 9+, Firefox 6+, Safari 5.1+, Edge 12+.
Gunakan pendekatan mobile-first dan media queries untuk membangun pengalaman yang responsif.
/* â
Good - Mobile first approach */
.container {
padding: 1rem;
}
@media (min-width: 768px) {
.container {
padding: 2rem;
}
}
/* â Avoid - Desktop first */
.container {
padding: 2rem;
}
@media (max-width: 767px) {
.container {
padding: 1rem;
}
}
/* â
Good - Logical breakpoints */
@media (min-width: 40em) {
.content {
max-width: 75ch;
}
}
đ Penjelasan Detail:
âĸ Mobile-first - Mulai dari small screens baru ke larger screens
âĸ Gunakan em/rem - Lebih aksesibel daripada px untuk breakpoints
âĸ Minimal breakpoints - Gunakan hanya saat diperlukan
âĸ Content-based breakpoints - Sesuaikan dengan konten bukan perangkat
âĸ Test berbagai perangkat - Jangan hanya bergantung pada ukuran viewport