← Galeri
Pesan
Demo oleh abcweb.id
Ngoding Santai Tutorial web untuk pemula
Menu

HTML & CSS Tingkat: Pemula 4 menit baca 4 contoh kode

Tata letak dengan flexbox: menjajarkan tanpa pusing

Membuat kepala halaman dengan menu sejajar dan deretan kartu yang turun sendiri saat layar sempit, cukup dengan beberapa properti flexbox.

Dimas Prakoso Terbit

Seri Halaman web pertama Bagian 4 dari 5

Lihat semua bagian seri ini
  1. Kerangka HTML pertamamu, baris demi baris
  2. Judul, daftar, tautan, dan gambar
  3. CSS pertamamu: warna, huruf, dan jarak
  4. Tata letak dengan flexbox: menjajarkan tanpa pusing (sedang dibaca)
  5. Membuat halaman nyaman di ponsel dengan media query
Daftar isi
  1. Wadah dan anak
  2. Sumbu utama dan sumbu silang
  3. Deretan kartu yang bisa turun
  4. Kapan flexbox bukan jawabannya
  5. Ringkasan
  6. Latihan

Yang akan dipelajari

  • Perbedaan wadah flex dan anak flex
  • Sumbu utama dan sumbu silang
  • Mengatur jarak dan perataan dengan gap, justify-content, dan align-items
  • Membuat kartu yang turun ke baris baru dengan flex-wrap

Prasyarat

Secara bawaan, elemen seperti paragraf dan judul tersusun dari atas ke bawah. Begitu ingin menaruh dua hal bersebelahan, misalnya nama di kiri dan menu di kanan, kita butuh alat tata letak. Flexbox adalah alat paling sederhana untuk pekerjaan itu.

Wadah dan anak

Flexbox selalu melibatkan dua pihak. Wadah adalah elemen yang diberi display: flex. Anak adalah elemen yang berada langsung di dalamnya. Properti flexbox sebagian dipasang di wadah, sebagian di anak; tertukar di antara keduanya adalah sumber kebingungan paling umum.

Mulai dari HTML kepala halaman. Tambahkan di awal <body>, sebelum <main>:

index.html HTML
<header class="kepala">
  <a class="merek" href="index.html">Rani Kusuma</a>
  <nav class="menu">
    <a href="index.html">Beranda</a>
    <a href="catatan.html">Catatan</a>
    <a href="kontak.html">Kontak</a>
  </nav>
</header>

Tanpa CSS, nama dan ketiga tautan menu tampil berurutan dalam satu alur teks. Sekarang jadikan .kepala sebagai wadah flex.

gaya.css CSS
.kepala {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
}

.menu {
  display: flex;
  gap: 16px;
}

.merek {
  font-weight: 700;
  text-decoration: none;
}

Muat ulang halaman. Nama berada di kiri, menu di kanan, dan keduanya sejajar di tengah secara vertikal. .menu juga kita jadikan wadah flex supaya jarak antartautan bisa diatur dengan gap.

Sumbu utama dan sumbu silang

Wadah flex punya dua sumbu. Sumbu utama adalah arah anak-anak dijajarkan; bawaannya mendatar dari kiri ke kanan. Sumbu silang tegak lurus terhadapnya. Dua properti perataan mengikuti sumbu ini:

  • justify-content mengatur perataan di sepanjang sumbu utama. Nilai space-between mendorong anak pertama dan terakhir ke kedua ujung.
  • align-items mengatur perataan di sumbu silang. Nilai center menengahkan anak secara vertikal ketika sumbu utamanya mendatar.
  • gap memberi jarak antaranak tanpa menambah jarak di tepi luar.

Deretan kartu yang bisa turun

Sekarang kita buat tiga kartu yang berjajar di layar lebar dan turun ke bawah di layar sempit. Tambahkan di dalam <main>:

index.html HTML
<section class="daftar-kartu">
  <article class="kartu">
    <h3>HTML</h3>
    <p>Struktur halaman.</p>
  </article>
  <article class="kartu">
    <h3>CSS</h3>
    <p>Tampilan halaman.</p>
  </article>
  <article class="kartu">
    <h3>JavaScript</h3>
    <p>Perilaku halaman.</p>
  </article>
</section>
gaya.css CSS
.daftar-kartu {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
}

.daftar-kartu .kartu {
  flex: 1 1 200px;
}

Ada dua hal baru di sini. flex-wrap: wrap mengizinkan anak pindah ke baris berikutnya ketika ruang tidak cukup. Tanpa properti ini, semua anak dipaksa muat dalam satu baris dan bisa tergencet.

flex: 1 1 200px adalah singkatan dari tiga hal: anak boleh membesar (angka 1 pertama), boleh mengecil (angka 1 kedua), dan lebar awalnya 200 piksel. Hasilnya, tiga kartu berbagi ruang sama rata di layar lebar. Saat lebar layar tidak cukup untuk tiga kali 200 piksel ditambah jaraknya, kartu terakhir turun ke baris baru dan melebar mengisi baris itu.

Coba sempitkan jendela peramban pelan-pelan dan perhatikan kartu berpindah baris satu per satu. Kita mendapat perilaku ini tanpa menulis satu pun aturan khusus untuk ukuran layar tertentu.

Kapan flexbox bukan jawabannya

Flexbox bekerja dalam satu arah: satu baris atau satu kolom. Untuk tata letak yang menuntut baris dan kolom sejajar sekaligus, misalnya galeri foto dengan kotak-kotak rapi, CSS punya alat lain bernama grid. Untuk kepala halaman, menu, deretan tombol, dan kartu sederhana, flexbox hampir selalu cukup.

Ringkasan

  • display: flex dipasang di wadah; yang dijajarkan adalah anak langsungnya.
  • justify-content bekerja di sumbu utama, align-items di sumbu silang.
  • gap memberi jarak antaranak dengan rapi.
  • flex-wrap: wrap dan flex: 1 1 200px membuat kartu turun sendiri di layar sempit.

Latihan

Kerjakan tanpa melihat contoh dulu. Buntu itu wajar; intip seperlunya.

  1. Ubah justify-content pada .kepala menjadi center, lalu flex-end, dan catat perbedaannya.
  2. Tambahkan kartu keempat dan amati pada lebar berapa kartu mulai turun.
  3. Ganti angka 200px menjadi 280px. Apa yang berubah pada jumlah kartu per baris?

Ditulis oleh Dimas Prakoso

Penulis HTML & CSS · 4 tutorial

Dulu belajar membuat halaman web dari buku pinjaman perpustakaan dan warung internet. Sekarang menulis tutorial yang ia harap dulu pernah ia temukan: runtut, tanpa lompatan, dan selalu bisa dicoba.

Tutorial lain dari Dimas

Tutorial terkait