CSS BIGINNER
I. Langkah pertama Menguasai CSS
apa itu CSS
CSS adalah bahasa untuk menggambarkan bagaimana dokumen HTML ditampilkan secara vissual. bagaimana mereka diatur dan ditata, CSS singaktan dari Cascading Style Sheets, CSS ini mempermudah untuk mendesain halamaan. tapi semakin properti yang digunakan , bisa jadi bingung cara pakainya.
Aturan CSS
Hampir seluruhnya ditulis dengan cara seperti ini:
elector {
property: value;
}
beberapa contoh penulisan CSS :
- membuat semua h1 berwarna biru
- membuat semua ukuran element gambar dengan lebar 100 px dan tinggi 200 px
tapi cari dulu apa yang di butuhkan dalam kebutuhan web
bisa cari googling banyak sintax CSS yang bisa di cari untuk di pelajari.
Menggunakan CSS dengan benar
ada 3 cara penulian CSS yang bisa di gunakan tetapi yang benar dan paling di rekomendasikan dan sesuai tandart adalah menggunakan External StyleSheet.
berikut contoh dari beberapa cara menulisan CSS :
Inline style
yaitu penulisan style css yang langsung pada element yang dituju. (sangat tidak disarankan)
<style> element
yaitu menggunakan element style di element. lebih baik, tetapi tidak bisa digunakan di banyak dokumen. (Tidak di sarankan)External Stylesheet
yaitu memisahkan file css dari html. (direkomendasikan)Mengenal Properti Color dan Background Color
dalam propert CSSyang paling umum sebernya ada 3 properti warna yaitu color, background-color dan border-color. masing-masing properti memiliki fungsinya masing-masing contoh:
didalam gambartersebut saya menggunakan color untuk tulisan pada button dengan warna darkviolet dengan penulisan code nama warnanya sedangkan untuk merubah background-color buttonnya saya menggunakan warna wheat (gandum) dengan penulisan code menggunakan code warna #f5deb3; ,sedangkan border color digunakan untuk mewarnai garis tepi.
Sistem warna RGB dan Sistem warna Hexadesimal
ada 3 jenis penulisan dalam pewarnaan CSS
- memanggil dengan nama warnanyah1 {color :darkred;}
- pewarnaan dengan RGBp {color:rgb(0, 99, 0);}
- menggunakan hexadesimalh2 {color :#00008b;}
Jangan Lupa, Titik Koma (semi colon)
kebanyakan programmer frontend saat melakukan stylis pada HTML sering kali terlupakan dengan semi colon (;), semi colon ini penting karena jika properti tidak ada ; maka style akan eror tidak terbaca.
Properti Text umum
CCS properti untuk text umumnya memiliki 5 bagian yaitu:
- Text-align
digunakan untuk menaruh dimana text itu ingin di tempatkan untuk perintahnya memiliki beberapa yaitu:
* Start : untuk di awal line
* End : untuk di akhir line
* center : untuk di tengah line
* justify : untuk meratakan paragraf
- font-weight
digunakan untuk mempertebal ketebalan huruf atau angka agar tidak menggunakan banyak <h1> sehingga menyalahi aturan semantix HTML
- text-decoration
digunakan untuk membuat garis di huruf atau angka yang di inginkan. bisa juga digunakan untuk mematikan decoration di elemen angker <a>.
- line-height
ini digunakan untuk jarak ketinggian antar paragrafnya.
- letter-spacing
ini digunakan untuk mengatur jarak antar huruf spasi
Mengenal ukuran pada css dengan Font
font size adalah satuan ukuran yang biasa di gunakan untuk mengatur suatu ukuran di element di dalam web, ada dua jenis penggunaan dalam CSS yaitu:
Relative
relative digunakan pada website yang responsive jadi ukurannya dari suatu gambar tidak baku atau tidak fix disitu saja tetapi bisa berubah menyesuaikan ukuran layar penggunanya. format dari ukuran ini itu ada :
- em
- rem
- vh
- wm
- %
- etc
Absolute
absolute benar benar di gunakan di fix hitungannya pas tidak berubah. format dari ukuran ini itu ada :
- px
- pt
- cm
- in
- mm
II. Mengenal apa itu selector dan cara kerjanya di CSS
Selector Menggunakan Element HTML
elemen selector adalah selector yang menggunakan tag dari HTMLnya jadi kita panggil elemen HTML untuk di ubah di CSS.
selector menggunakan Attribute ID
atribut selector yaitu mengaikan css dengan atribut Id
selector menggunakan atribut class
atribut selector yang menggunakan class untuk mengaitkannya
Mengenal Descendant Selector
Selector ini hanya memililih elemen yang merupakan anak langsung dari induk elemennya. elemen cucu atau keturunan yang lebih dalam tidak akan terkena efeknya.
li a {
color: blue;
}
Mengenal Direct Descendant dan Ajdacent Selctor
selector ini digunakan untuk memilih sebuah elemen yang letaknya tepat setelah elemen lain, selama keduanya memiliki induk yang sama
Mengenal Attribute Selector
Attribute selector itu adalah cara memilih elemen berdasarkan "apa yang ada di dalam tag-nya", bukan cuma nama tag atau class-nya
Mengenal Pseudo Classes
kata kunci yang ditambahkan pada selector untuk memilih element secara spesifik pada kondisi tertentu
- :active
- :checked
- :first
- :hover
- :nth-child()
- :nth-of-type()
Mengenal Pseudo Elements
kata kunci yang ditambahkan pada selector untuk memilih bagian element yang dipilih:
- :after
- :before
- :first-letter
- :first-line
- :selection
Box Model CSS - Menubah Ukuran Element dengan CSS
Mengenal Bagian Box Model pada Element
ini materi paling penting di CSS, jika sudah memahami materi ini nantinya kita bisa dengan mudah mengatur tata letak (layout) apa pun dengan gampang.
bayangkan setiap element HTML (seperti div, h1, atau p) adalah sebuah paket kado kotak.
terdapat 4 lapisan box model yaitu:
- konten/isi
ini dalah bagian isi konten. bisa berupa teks, gambar, atau video. - Padding/bantalan
ini seperti bubble wrap di dalam kardus. jarak antara isi dengan pinggiran kardus. kalau padding ditambah, ruang di dalam elemen jadi lebih lega. - border/kardus
ini adalah garis tepi atau dinding pembatas elemen. kamu bisa atur ketebalan dan warnanya. - Margin/jarak luar
ini adalah jarak antara kardus kamu dengan kardus tetangga. margin tidak punya warna, gunanya cuma buat kasih jarak antar elemen supaya enggak dempet-dempetan.
Mengenal properti border pada CSS
border itu initinya adalah "garis tepi" dari sebuah elemen. ada 3 elemen utama untuk membuat berder yaitu :
- width / tebal
digunakan utuk ketebalan garis bordernya - Style / bentuk
digunakan untuk berbentuk apa bordernya ada solid untuk garis lurus, dashed untuk putus-putus, dotted untuk titik-titik. - Color / warna
digunakan untuk mewarnai garis bordernya
Mengenal properti padding pada CSS
jika border adalah kardus maka padding adalah bantalan jarak antara kardus tersebut dengan isian didalamnya. padding digunakan untuk memberikan"ruang napas" di dalam sebuah elemen. Tanpa padding, teks atau gambar akan menempel ketat di pinggiran border elemen tersebut, yang biasanya membuat desain terlihat sesak dan tidak rapi.
Cara kerja Padding
padding bersifat internal. Dia menambah ruang di bagian dalam elemen, sehingga jika elemen tersebut memiliki warna latar belakang, warna itu juga akan mengisi area padding tersebut.
Mengenal Properti Margin pada CSS
margin adalah jarak antara kardus kamu dengan kardus tetangga, margin ini diibratkan "ruang kosong" di luar kardus. Gunanya supaya kardus-kardus elemen di website kamu enggak saling bertabrakan atau nempel banget.
sifat Utama margin :
- Transparan: Margin nggak punya warna, dan tidak bisa diberikan warna. dia cuman ruang hampa.
- Mendorong: Margin fungsinya mendorong kardus lain supaya menjauh.
Cara Mengatur Jarak Margin
Sama persis dengan cara pasang padding, kita bisa pakai rumus jarum jam :- Cara satu persatu
- margin-top: Kasih jarak ke tetangga atas.
- margin-bottom: kasih jarak ke tetangga bawah.
- margin-left: kasih jarak ke tetangga kiri.
- margin-right: kasih jarak ke tetangga kanan.
- Cara Cepat
- margin: 50px; semua sisi menjauh 50px dari tetangganya.
- margin: 10px 20px: Atas-Bawah jaraknya 10px, kiri-kanan jaraknya 20px
- Trik Spesial
Mengenal Properti Display
Materi Display ini adalah "pengatur sifat" kardus kamu. properti ini menentukan bagaimana kardus tersebut berbaris dan berperilaku terhadap kardus di sebelahnya.
Dalam CSS, ada tiga nilai display yang paling dasar dan wajib kamu tahu:
display: block;
ini sifat bawaan (default) dari tag seperti <div>, <h1>, atau <p>.
- sifatnya maruk. dia akan memakan seluruh lebar satu baris dari kiri sampai kanan, meskipun isinya cuma sedikit.
- hasilnya kardusnya dipaksa turun ke baris baru di bawahnya.
- bisa diatur bebas mengatur width, height, margin dan paddingnya.
display: inline;
ini adalah sifat bawaan tag seperti <span> atau <a>.
- sifatnya ngirit dia hanya memakan lebar sesuai ukuran isinya saja.
- hasilnya kardus lain bisa ikut berbaris di sebelahnya selama ruangnya masih cukup.
- kekurangannya tidak bisa diatur widht dan height. margin atas-bawah juga sering tidak berfungsi normal.
display: inline-block;
ini adalah gabungan kekuatan dari keduanya.
- sifatnya dia bisa berbaris ke samping seperti inline tetapi tetap bisa diatur width, height, margin, dan paddingnya secara penuh seperti block.
- sangat cocok untuk membuat elemen seperti tombol atau kartu produk yang ingin kamu susun berjajar ke samping namun ukurannya tetap presisi.
display: none;
Jangan lupakan nilai ini karena fungsinya sangat krusial untuk interaksi pengguna.
- sifatnya elemen akan benar-benar hilang dari halaman.
- efeknya berbeda dengan hanya transparan, display: none; membuat elemen tersebut tidak lagi memakan ruang. kardus di bawahnya akan naik mengisi posisi yang kosong tersebut.
- digunakan untuk membuat menu dropdown yang hanya muncul saat dilik atau pop-up peringatan.
Flexbox Dasar
Apa itu Flexbox
Flexible Box Layout adalah model layout 1-dimensi dalam CSS yang dirancang untuk mendistribusikan ruang antar elemen di dalam sebuah container, bahkan ketika ukurannya tidak diketahui atau dinamis.
- Konsep Parent & Child
- Flex Container: Elemen yang diberi properti display: flex; atau display: inline-flex;
- Flex Items: Semua elemen yang menjadi anak langsung direct children dari Flex Container.
- Sumbu Utama (Main Axis dan Cross Axis)
- Main Axis: Sumbu Utama (defaultnya horizontal/baris). Diatur dengan flex-direction.
- Cross Axis: Sumbu yang tegak lurus dengan Main Axis (defaultnya Vertikal/kolom)
- Properti Utama pada container (Parent)
- flex-direction: Menentukan arah main axis (row, row-reverse, colom, column-reverse).
- Justify-Content: Mengatur perataan elemen di sepanjang Main Axis (flex-start, flex-end, space-between, space-around, space-evenly).
- align-items : Mengatur perataan elemen di sepanjang Cross Axis (stretch, flex-start, flex-end, center, baseline).
- flex-wrap : Menentukan apakah elemen harus dipaksa dalam satu baris atau boleh pindah ke baris baru jika ruang tidak cukup (nowrap, wrap, wrap-reverse).
- Properti Pada Items (child)
Setiap anak bisa mengatur ukurannya sendiri secara dinamis :
- flex-grow : Kemampuan elemen untuk melebar mengisi sisa ruang (nilai angka, default 0).
- flex-shrink : Kemampuan elemen untuk menyusut jika ruang kontainer lebih kecil dari ukuran elemen (default 1).
- flex-basis : Ukuran awal elemen sebelum sisa ruang didistribusikan.
- align-self : Meng-Override properti align-items dari parent untuk elemen spesifik tersebut.
Mengatur Urutan Elemen Dengan Flex Direction
Properti flex-direction digunakan untuk menentukan arah sumbu utama (Main Axis) di dalam sebuah flex container. Properti ini secara otomatis mengatur urutan visual elemen tanpa mengubah struktur kode HTML
- Row
- Row Reverse
- Column
Elemen disusun menumpuk dari atas ke bawah
- Column Reverse
Membagi Rata jarak Horizontal Dengan Justify Content
berikut adalah breakdown teknis nilai-nilai untuk pembagian jarak:
1. space-between
Elemen didistribusikan secara merata di dalam kontainer.
- Item pertama dipaksa menempel ke awal / start line.
- item terakhir dipaksa menempel ke akhir / end line.
- sisa ruang dibagikan hanya di antara elemen-elemen yang ada.
2. space-around
Elemen didistribusikan sehingga setiap item memiliki ruang yang sama di kedua sisinya.
- jarak antar elemen adalah 2 unit
- jarak antara tepi kontainer dengan elemen pertama/terakhir adalah 1 unit
- Secara visual, jarak di tengah terlihat lebih lebar dari pada jarak di pinggir.
3. space-evenly
Elemen didistribusikan sehingga jarak antara dua item mana pun, serta jarak ke tepi kontainer adalah sama persis.
- Semua celah memiliki lebar yang identik
Menampilkan Elemen Dengan Ukuran Sebenarnya Pada Flex
Secara teknis, elemen didalam FlexBox sering kali dipaksa menyusut atau melebar untuk menyesuaikan ruang kontainer. Untuk memastikan elemen tampil dengan ukuran sebenarnya, kamu perlu mengontrol 3 properti pada level Flex Item (child)
1. Mematikan Fitur Penyusutan (flex-shrink: 0)
2. Mematikan Fitur Pelebaran (flex-grow: 0)
3. Mengatur Ukuran Dasar (flex-basis)
- flex-basis: auto; :mengambil ukuran dari properti width/height atau ukuran konten asli.
- flex-basis: content; :Menyesuaikan ukuran berdasarkan konten di dalamnya (tidak peduli pada width).
Cara tercepat: Shorthand (flex: none)
Mengatur Perataan Secara Vertikal Dengan Align Item
1. stretch (default)
- Syaratnya Elemen tidak boleh memiliki height yang ditentukan secara manual agar efek stretch terlihat.
2. flex-start
3. flex-end
4. Center
Salah satu nilai yang paling sering digunakan. Elemen akan diposisikan tepat di tengah-tengah antara batas atas dan batas bawah kontainer.
5. baseline
Perbedaan Teknis antara align-items dengan align-content
Mengatur Jarak Cross Axis dengan Align Content dan align self
1. Align content : Mengatur baris-baris flex
Syarat Utama: Properti ini hanya berfungsi jika
flex-wrapbernilaiwrapatauwrap-reverseDAN terdapat lebih dari satu baris elemen.Analogi Teknis: Jika
justify-contentmengatur jarak antar elemen dalam satu baris, makaalign-contentmengatur jarak antar baris dalam satu kotak.
Nilai-Nilai Utama:
flex-start: Baris-baris ditumpuk ke awal kontainer.flex-end: Baris-baris ditumpuk ke akhir kontainer.center: Baris-baris dikelompokkan di tengah kontainer.space-between: Baris pertama di atas, baris terakhir di bawah, sisanya dibagi rata.space-around: Memberi ruang rata di sekitar setiap baris.stretch(Default): Baris-baris ditarik untuk mengisi sisa ruang yang ada.
2. Align Self: Mengatur Individu (Anak)
align-self adalah properti yang dipasang pada Flex Item (Child), bukan pada container. Ini memungkinkan satu elemen spesifik untuk "memberontak" dari aturan align-items yang ditetapkan oleh induknya.
Fungsi: Meng-override (menindih) perintah perataan vertikal dari parent hanya untuk elemen itu sendiri.
Nilai-Nilai Utama:
Nilainya sama persis dengan align-items (flex-start, flex-end, center, baseline, stretch), ditambah nilai auto (mengikuti induk).
Contoh Kasus:
Bayangkan induknya menyuruh semua anak rata atas (flex-start), tapi kamu ingin satu tombol tetap di tengah secara vertikal.
Mengubah ukuran elemen Flex
Untuk mengubah ukuran elemen di dalam Flexbox secara dinamis dan presisi, kamu harus menguasai tiga properti utama yang bekerja pada level Flex Item (anak).
Ketiga properti ini biasanya disingkat dalam satu baris kode yaitu properti flex.
1. flex-grow (Kemampuan Melebar)
Properti ini menentukan berapa besar elemen akan "tumbuh" untuk mengisi sisa ruang kosong di dalam kontainer.
Nilai default:
0(elemen tidak akan melebar meskipun ada sisa ruang).Nilai angka (1, 2, dst): Jika semua item diberi
flex-grow: 1, mereka akan membagi sisa ruang secara merata. Jika satu item diberiflex-grow: 2, maka item tersebut akan mengambil sisa ruang dua kali lebih banyak dibanding yang lain.
2. flex-shrink (Kemampuan Menyusut)
Properti ini menentukan bagaimana elemen menyusut jika total ukuran semua item lebih besar daripada ukuran kontainer (terjadi overflow).
Nilai default:
1(elemen akan otomatis menyusut agar muat di dalam kontainer).Nilai
0: Elemen dipaksa tidak menyusut dan mempertahankan ukuran aslinya (bisa menyebabkan elemen keluar dari kontainer).
3. flex-basis (Ukuran Dasar)
Ini adalah ukuran ideal elemen sebelum sisa ruang didistribusikan oleh grow atau shrink.
Nilai default:
auto(mengambil ukuran dariwidth/heightatau konten).Nilai absolut: Bisa diisi
px,%,em, ataurem.
Properti Shorthand: flex
Sangat disarankan untuk menggunakan properti gabungan agar kode lebih bersih dan menghindari bug kalkulasi manual.
Sintaks: flex: [flex-grow] [flex-shrink] [flex-basis];
| Kode | Penjelasan Teknis |
flex: 1; | Sama dengan flex: 1 1 0;. Elemen akan melebar dan menyusut secara fleksibel. |
flex: 0 0 200px; | Elemen kaku. Tidak bisa melebar, tidak bisa menyusut, ukuran tepat 200px. |
flex: none; | Sama dengan flex: 0 0 auto;. Elemen menggunakan ukuran konten asli dan tidak fleksibel. |
flex: auto; | Sama dengan flex: 1 1 auto;. Elemen fleksibel dengan basis ukuran konten. |
Contoh Implementasi: Sidebar & Main Content
Skenario umum di mana sidebar memiliki lebar tetap, dan konten utama mengambil sisa layar yang tersedia:
Flex Dengan sintaks yang lebih ringkas
flex-grow, flex-shrink, dan flex-basis) secara terpisah sering kali dianggap tidak efisien. Praktik terbaik (best practice) secara teknis adalah menggunakan properti gabungan yaitu flex.1. Sintaks Shorthand flex
Sintaks ini menggabungkan tiga properti menjadi satu baris:
flex: [flex-grow] [flex-shrink] [flex-basis];
2. Nilai Preset yang Sering Digunakan
CSS menyediakan beberapa kata kunci (keywords) sebagai jalan pintas untuk kebutuhan layout yang paling umum:
| Sintaks Ringkas | Ekivalen Teknis | Perilaku Elemen |
flex: initial; | 0 1 auto | Default. Tidak melebar, bisa menyusut jika kontainer sempit, ukuran sesuai konten. |
flex: 1; | 1 1 0 | Fleksibel. Melebar mengisi sisa ruang, bisa menyusut, ukuran awal dianggap 0. |
flex: auto; | 1 1 auto | Fleksibel + Content. Melebar dan menyusut, tapi ukuran awal didasarkan pada konten/lebar elemen. |
flex: none; | 0 0 auto | Kaku. Tidak bisa melebar maupun menyusut. Ukuran tetap sesuai lebar asli/konten. |
3. Contoh Kasus Implementasi
Membagi Ruang Sama Rata
Jika kamu ingin semua item memiliki lebar yang sama persis tanpa mempedulikan isi konten di dalamnya:
Skenario di mana ada satu kolom tetap (seperti sidebar atau icon) dan satu kolom yang menghabiskan sisa ruang:
4. Mengapa Harus Pakai Sintaks Ringkas?
Reset Otomatis: Saat kamu menulis
flex: 1;, CSS secara otomatis mengaturflex-shrink: 1danflex-basis: 0. Ini mencegah bug layout yang tidak diinginkan.Keterbacaan: Memudahkan debugging saat inspeksi kode di browser (DevTools).
Standar W3C: W3C merekomendasikan penggunaan shorthand
flexkarena lebih efektif menangani kalkulasi distribusi ruang oleh browser.
Pengetahuan Responsinve Design dan Media Query
Gemini berkata
Dalam pengembangan web modern, Responsive Web Design (RWD) adalah pendekatan teknis agar tampilan situs web dapat beradaptasi secara otomatis pada berbagai ukuran layar (desktop, tablet, hingga smartphone) tanpa mengubah basis kode HTML.
Senjata utama untuk mencapai hal ini adalah Media Query.
1. Dasar Konsep Media Query
Media Query adalah modul CSS yang memungkinkan penerapan blok gaya (style) hanya jika kondisi perangkat tertentu terpenuhi, seperti lebar layar (viewport), orientasi (landscape/portrait), atau resolusi.
Sintaks Dasar:
screen (untuk layar digital).max-width atau min-width.2. Strategi: Mobile First vs. Desktop First
Dalam alur kerja teknis, ada dua pendekatan utama:
A. Mobile First (Rekomendasi Modern)
Menulis kode untuk layar kecil terlebih dahulu, lalu menggunakan min-width untuk menambahkan fitur pada layar yang lebih besar.
Keuntungan: Performa lebih ringan di HP karena CSS yang dimuat lebih sedikit di awal.
B. Desktop First
Menulis kode untuk layar besar dahulu, lalu menggunakan max-width untuk "merampingkan" tampilan saat layar mengecil.
3. Breakpoints Standar
Breakpoints adalah titik batas lebar layar di mana layout akan berubah. Tidak ada aturan baku, tetapi berikut adalah standar yang sering digunakan (mengikuti framework seperti Bootstrap/Tailwind):
| Perangkat | Range Lebar | Breakpoint (Min-width) |
| Mobile | < 576px | (Default/Base) |
| Tablet | ≥ 768px | @media (min-width: 768px) |
| Laptop/Desktop | ≥ 992px | @media (min-width: 992px) |
| Large Monitor | ≥ 1200px | @media (min-width: 1200px) |
4. Meta Tag Viewport (Wajib)
Media Query tidak akan bekerja secara akurat di perangkat mobile jika kamu tidak menyertakan meta tag berikut di dalam bagian <head> HTML kamu:
5. Best Practice Teknis
Gunakan Unit Relatif: Hindari
pxuntuk lebar kontainer besar. Gunakan%,vw, atauremagar lebih fleksibel sebelum terkena breakpoint.Jangan Terpaku pada Device: Buatlah breakpoint berdasarkan kapan konten terlihat berantakan, bukan berdasarkan seri iPhone atau Samsung tertentu.
Kombinasikan dengan Flexbox/Grid: Media Query berfungsi sebagai pemicu, sedangkan Flexbox/Grid berfungsi sebagai pengatur alirannya.
Memulai Kehebatan Media Query
Setelah memahami dasar-dasar responsif, saatnya masuk ke implementasi teknis bagaimana Media Query bekerja sebagai pengendali logika layout berdasarkan spesifikasi perangkat.
Berikut adalah langkah-langkah teknis untuk memulai implementasi Media Query secara efektif:
1. Menentukan Target Spesifikasi
Media Query bekerja dengan memeriksa fitur media perangkat. Properti yang paling sering digunakan dalam pengembangan web adalah:
width/height: Lebar atau tinggi viewport.min-width/max-width: Ambang batas minimal atau maksimal lebar layar (paling umum digunakan).orientation: Mendeteksi apakah perangkat dalam posisiportraitataulandscape.resolution: Untuk menangani layar dengan kepadatan pixel tinggi (Retina Display).
2. Struktur Penulisan di Dalam File CSS
Ada dua cara teknis untuk memisahkan gaya responsif:
A. Internal Media Query (Disarankan)
Menuliskan query di bawah gaya standar dalam satu file CSS yang sama agar lebih mudah dipantau.
B. External Media Query
Memisahkan file CSS berdasarkan perangkat. Browser akan mengunduh semua file, tetapi hanya menerapkan yang sesuai kondisi.
3. Logika Operator (And, Or, Not)
Kamu bisa membuat kondisi yang lebih spesifik menggunakan operator logika:
and: Menggabungkan beberapa kondisi.Contoh:
@media (min-width: 768px) and (max-width: 1024px)(Hanya untuk tablet).
,(Comma/Or): Salah satu kondisi terpenuhi.Contoh:
@media (max-width: 600px), (orientation: portrait)
not: Membalikkan kondisi.
4. Implementasi Praktis: Transformasi Layout Flexbox
Mari kita terapkan logika ini pada struktur kardus Flexbox yang sudah kita pelajari sebelumnya.
Skenario: Sebuah container yang berisi 3 elemen. Di HP mereka menumpuk (column), di Desktop mereka berjejer (row).
5. Tips Teknis untuk Mahasiswa
Gunakan DevTools: Tekan
F12di browser, klik ikon Device Toggle Toolbar untuk mensimulasikan berbagai ukuran layar saat melakukan debugging Media Query.Unit
ematauremuntuk Breakpoints: Pakar CSS menyarankan penggunaanemuntuk breakpoints (misal:48emdaripada768px) agar layout lebih konsisten saat pengguna mengubah skala font di browser mereka.Visualisasikan Breakpoint: Gunakan warna latar belakang yang berbeda pada
bodydi setiap breakpoint saat tahap pengembangan untuk memastikan query kamu sudah "terbakar" (aktif).
Membuat Responsive Navigation
Membuat Responsive Navigation adalah penerapan teknis yang menggabungkan struktur HTML semantik, Flexbox untuk perataan, dan Media Query untuk perubahan layout antar perangkat.
Berikut adalah langkah-langkah teknis untuk membangun navbar yang berubah dari mode horizontal (Desktop) menjadi mode vertikal/tersembunyi (Mobile).
1. Struktur HTML Semantik
Gunakan tag <nav> dan <ul> untuk memastikan aksesibilitas (SEO & Screen Reader) yang baik.
2. Base Style: Desktop First (Gaya Dasar)
Pada layar lebar, kita menggunakan Flexbox untuk menata logo di kiri dan menu di kanan secara horizontal.
3. Implementasi Media Query (Mobile Mode)
Saat layar di bawah 768px, kita ubah perilaku flex container dan posisi menu.
4. Logika Interaksi (JavaScript Ringkas)
Karena CSS Media Query hanya mengatur tampilan, kita butuh sedikit JavaScript untuk memicu perubahan class saat tombol hamburger diklik.
| Komponen | Desktop (Base) | Mobile (< 768px) |
flex-direction | row | column |
position | static | absolute (untuk overlay) |
display (Menu) | flex | none (sampai di-toggle) |
width | auto | 100% (memenuhi layar) |
Tips Optimasi:
Transition: Tambahkan
transition: 0.3s ease;pada.nav-linksjika kamu menggunakan properti sepertimax-heightatauopacityuntuk memberikan efek animasi saat menu muncul.Accessibility: Pastikan tombol hamburger memiliki atribut
aria-label="Toggle navigation"untuk pengguna tuna netra.


