K

Command Palette

Search for a command to run...

Daftar

Tabel

Punya data yang perlu ditampilin secara terstruktur dalam baris dan kolom? Tabel HTML solusinya! Kayak spreadsheet, tapi di web.

Tabel HTML: Menyusun Data Jadi Gampang dan Rapi!

Pernah lihat daftar harga produk, jadwal pelajaran, statistik perbandingan, atau data keuangan yang ditampilin rapi dalam baris dan kolom? Nah, kemungkinan besar itu dibuat pake Tabel HTML. Tabel adalah cara yang efektif buat nyajiin data tabular (data yang secara alami cocok ditaruh di petak-petak) di halaman web.

Penting di Awal: Duluuu banget, sebelum CSS secanggih sekarang, tabel HTML sering disalahgunain buat ngatur layout halaman web (misalnya, bikin sidebar, header, footer). JANGAN LAKUKAN INI SEKARANG! Praktik ini udah kuno, bikin kode susah di-maintain, dan buruk buat aksesibilitas. Tabel itu hanya untuk data tabular, bukan buat layout visual. Buat layout, kita punya Flexbox dan Grid di CSS yang jauh lebih powerful dan bener. Oke, janji ya? 😉

Sekarang, yuk kita bedah cara bikin tabel yang bener!

Struktur Dasar Tabel: <table>, <tr>, <td>, <th>

Membangun tabel di HTML itu kayak nyusun puzzle, ada beberapa elemen utama yang saling melengkapi:

  1. <table>: Ini adalah tag pembungkus utama yang nandain awal dan akhir dari keseluruhan tabel. Semua elemen tabel lain harus ada di dalem sini.

  2. <tr> (Table Row / Baris Tabel): Tag ini dipake buat bikin satu baris di dalam tabel. Setiap <tr> akan ngehasilin baris baru.

  3. <td> (Table Data / Sel Data Tabel): Tag ini dipake buat bikin sel data standar di dalam satu baris (<tr>). Ini adalah tempat kamu naruh data atau konten sebenernya. Jumlah <td> di setiap baris biasanya nentuin jumlah kolom di tabelmu.

  4. <th> (Table Header / Sel Kepala Tabel): Tag ini mirip <td>, tapi khusus buat sel yang berfungsi sebagai kepala atau judul untuk kolom atau baris. Teks di dalem <th> biasanya otomatis jadi tebal (bold) dan rata tengah (centered) oleh browser. <th> ini penting buat ngasih makna ke data di bawahnya atau di sampingnya.

Mari kita lihat contoh sederhananya:

html
<h2>Daftar Harga Buah-buahan</h2>
 
<table>
    <tr> <!-- Baris pertama: Header Kolom -->
        <th>Nama Buah</th>
        <th>Harga per Kg</th>
        <th>Stok</th>
    </tr>
    <tr> <!-- Baris kedua: Data buah pertama -->
        <td>Apel</td>
        <td>Rp 25.000</td>
        <td>50 Kg</td>
    </tr>
    <tr> <!-- Baris ketiga: Data buah kedua -->
        <td>Jeruk</td>
        <td>Rp 18.000</td>
        <td>75 Kg</td>
    </tr>
    <tr> <!-- Baris keempat: Data buah ketiga -->
        <td>Mangga</td>
        <td>Rp 30.000</td>
        <td>Habis</td>
    </tr>
</table>

Penjelasan Contoh:

  • Kita punya satu <table> yang ngebungkus semuanya.
  • Baris pertama (<tr>) berisi tiga <th> (Nama Buah, Harga per Kg, Stok). Ini jadi kepala kolom.
  • Baris-baris berikutnya (<tr>) berisi tiga <td> yang sesuai dengan kepala kolomnya, nampilin data untuk setiap buah.

Kalau kamu jalanin kode di atas di browser, kamu bakal liat tabel sederhana dengan data buah-buahan. Mungkin belum ada garisnya, tapi strukturnya udah bener. (Urusan garis dan styling lain itu kerjaan CSS ya!)

Mengelompokkan Konten Tabel (Semantik & Styling): <thead>, <tbody>, <tfoot>

Biar tabelmu lebih terstruktur secara semantik (punya makna yang lebih jelas) dan lebih gampang di-style pake CSS, HTML nyediain tiga elemen buat ngelompokin bagian-bagian tabel:

  1. <thead> (Table Head / Kepala Tabel):

    • Ngebungkus baris-baris yang jadi kepala tabel (biasanya berisi <th>).
    • Satu tabel idealnya punya satu <thead>.
    • Ini ngasih tau browser dan teknologi asistif, "Hei, ini lho bagian judul-judul kolomnya!"
  2. <tbody> (Table Body / Isi Tabel):

    • Ngebungkus baris-baris yang jadi isi atau data utama tabel (biasanya berisi <td>, tapi bisa juga <th> kalau ada header baris).
    • Satu tabel bisa punya beberapa <tbody> kalau datanya mau dikelompokin lebih lanjut, tapi umumnya satu aja cukup.
  3. <tfoot> (Table Foot / Kaki Tabel):

    • Ngebungkus baris-baris yang jadi kaki tabel, misalnya buat nampilin total, ringkasan, atau catatan kaki.
    • Satu tabel idealnya punya satu <tfoot>.
    • Walaupun kamu tulis <tfoot> di awal atau tengah (setelah <thead> tapi sebelum <tbody>), browser pinter biasanya bakal nampilinnya tetep di bagian paling bawah tabel. Ini berguna buat tabel panjang yang datanya di-generate server.

Penting: <thead>, <tbody>, dan <tfoot> tidak mempengaruhi layout tabel secara visual tanpa CSS, tapi mereka sangat penting buat struktur semantik dan bisa membantu browser untuk, misalnya, mengulang header tabel (<thead>) di setiap halaman saat tabel dicetak.

Contoh dengan <thead>, <tbody>, <tfoot>:

html
<table>
    <thead>
        <tr>
            <th>Produk</th>
            <th>Jumlah</th>
            <th>Harga Satuan</th>
            <th>Subtotal</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Buku Tulis Super</td>
            <td>2</td>
            <td>Rp 5.000</td>
            <td>Rp 10.000</td>
        </tr>
        <tr>
            <td>Pensil 2B Pro</td>
            <td>5</td>
            <td>Rp 2.000</td>
            <td>Rp 10.000</td>
        </tr>
        <tr>
            <td>Penghapus Anti Salah</td>
            <td>1</td>
            <td>Rp 3.000</td>
            <td>Rp 3.000</td>
        </tr>
    </tbody>
    <tfoot>
        <tr>
            <td colspan="3">Total Keseluruhan</td> <!-- colspan akan kita bahas -->
            <td>Rp 23.000</td>
        </tr>
    </tfoot>
</table>

Walaupun di kode <tfoot> bisa ditulis sebelum <tbody>, hasilnya akan tetep di bawah.

<caption>: Ngasih Judul atau Deskripsi ke Tabel

Elemen <caption> dipake buat ngasih judul atau deskripsi singkat buat tabelmu. <caption> ini harus ditaruh langsung setelah tag <table> pembuka, dan sebelum <thead>, <tbody>, <tfoot>, atau <tr> pertama.

<caption> ini penting buat aksesibilitas karena ngasih konteks ke pengguna (terutama pengguna screen reader) soal isi tabelnya sebelum mereka "masuk" ke datanya.

Contoh dengan <caption>:

html
<table>
    <caption>Laporan Penjualan Bulanan - Juli 2024</caption>
    <thead>
        <tr>
            <th>Tanggal</th>
            <th>Produk Terjual</th>
            <th>Pendapatan</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1 Juli 2024</td>
            <td>150 unit</td>
            <td>Rp 7.500.000</td>
        </tr>
        <!-- ... baris data lainnya ... -->
    </tbody>
</table>

Menggabungkan Sel: colspan dan rowspan

Kadang, kita butuh satu sel yang "membentang" lebih dari satu kolom atau lebih dari satu baris. Nah, buat ini kita pake atribut colspan dan rowspan di dalem tag <td> atau <th>.

  1. colspan (Column Span / Rentang Kolom):

    • Atribut ini nentuin berapa banyak kolom yang mau "dimakan" atau digabung oleh satu sel.
    • Nilainya adalah angka yang nunjukin jumlah kolom yang digabung.
    • Contoh: colspan="2" artinya sel itu bakal makan tempat selebar 2 kolom.
  2. rowspan (Row Span / Rentang Baris):

    • Atribut ini nentuin berapa banyak baris yang mau "dimakan" atau digabung oleh satu sel.
    • Nilainya adalah angka yang nunjukin jumlah baris yang digabung.
    • Contoh: rowspan="3" artinya sel itu bakal makan tempat setinggi 3 baris.

Contoh Penggunaan colspan dan rowspan:

html
<table>
    <caption>Jadwal Pelajaran Senin</caption>
    <thead>
        <tr>
            <th>Waktu</th>
            <th colspan="2">Mata Pelajaran & Guru</th> <!-- Sel ini gabung 2 kolom -->
        </tr>
    </thead>
    <tbody>
        <tr>
            <td rowspan="2">07:00 - 08:30</td> <!-- Sel ini gabung 2 baris -->
            <td>Matematika</td>
            <td>Bu Ani</td>
        </tr>
        <tr>
            <!-- Kolom pertama udah "dimakan" sama rowspan di atas -->
            <td>Fisika</td>
            <td>Pak Budi</td>
        </tr>
        <tr>
            <td>08:30 - 09:00</td>
            <td colspan="2">Istirahat</td> <!-- Sel ini gabung 2 kolom -->
        </tr>
        <tr>
            <td>09:00 - 10:30</td>
            <td>Bahasa Indonesia</td>
            <td>Bu Citra</td>
        </tr>
    </tbody>
</table>

Pake colspan dan rowspan emang agak tricky awalnya, butuh sedikit visualisasi dan trial-error biar pas.

Atribut scope pada <th>: Memperjelas Hubungan Header dan Data (Aksesibilitas)

Untuk tabel yang lebih kompleks, atribut scope pada elemen <th> bisa bantu teknologi asistif (kayak screen reader) buat ngerti hubungan antara sel header dan sel data yang terkait dengannya.

Nilai umum buat scope:

  • scope="col": Nunjukin kalau <th> itu adalah header untuk kolom di bawahnya.
  • scope="row": Nunjukin kalau <th> itu adalah header untuk baris di sampingnya.
  • scope="colgroup": Header untuk sekelompok kolom (dipake bareng <colgroup>).
  • scope="rowgroup": Header untuk sekelompok baris (dipake bareng <tbody>, <thead>, <tfoot>).

Contoh sederhana dengan scope:

html
<table>
    <thead>
        <tr>
            <th scope="col">Nama</th>
            <th scope="col">Usia</th>
            <th scope="col">Kota</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <th scope="row">Andi</th> <!-- Ini header untuk baris Andi -->
            <td>25</td>
            <td>Jakarta</td>
        </tr>
        <tr>
            <th scope="row">Siti</th> <!-- Ini header untuk baris Siti -->
            <td>30</td>
            <td>Bandung</td>
        </tr>
    </tbody>
</table>

Ini praktik yang bagus buat aksesibilitas, terutama buat tabel yang strukturnya gak sesederhana "header di atas, data di bawah".

Styling Tabel dengan CSS

Seperti yang udah disinggung, HTML itu ngurusin struktur tabelnya. Buat bikin tabelmu keliatan cantik (ada garis, warna background, padding, dll), itu semua tugasnya CSS.

Beberapa properti CSS yang sering dipake buat styling tabel:

  • border: Buat ngasih garis ke tabel, baris, atau sel.
  • border-collapse: Nentuin apakah border sel itu gabung jadi satu atau pisah.
  • padding: Ngasih jarak antara isi sel dengan bordernya.
  • text-align: Ngatur perataan teks di dalam sel (kiri, kanan, tengah).
  • vertical-align: Ngatur perataan vertikal isi sel (atas, tengah, bawah).
  • background-color: Ngasih warna latar belakang.
  • Striped tables (baris belang-seling) pake :nth-child() selector.

Kita gak akan bahas detail CSS di sini, tapi penting buat tau kalau styling itu urusan CSS.


Wih, lumayan juga ya materi tabel ini! Tapi dengan elemen-elemen ini (<table>, <tr>, <td>, <th>, <thead>, <tbody>, <tfoot>, <caption>) dan atribut kayak colspan, rowspan, scope, kamu udah punya alat lengkap buat nyajiin data tabular dengan cara yang terstruktur, semantik, dan aksesibel.

Ingat, tabel itu buat data ya, bukan buat layout! 😉

Selanjutnya, kita bakal masuk ke salah satu bagian paling interaktif di web: Formulir (Form) HTML! Siap-siap bikin form kontak, login, dll.

Kuis Tabel HTML

Pertanyaan 1 dari 4

Elemen HTML apa yang digunakan sebagai pembungkus utama untuk keseluruhan sebuah tabel?