img
), sementara daftar
jelas dibuat menggunakan elemen list. Bagaimana dengan tabel? HTML
memiliki elemen khusus untuk membuat tabel, yaitu table
.Pembuatan Tabel
Sebuah tabel selalu terdiri dari dua elemen utama, yaitu baris dan kolom. Tentunya HTML memiliki elemen untuk membuat baris dan kolom dari sebuah tabel, tetapi sebelum membuat baris dan kolom dari tabel kita harus membuat tabelnya terlebih dahulu. Pembuatan tabel dimulai dari inisialisasi tabel, menggunakan elementable
:<table>
<!-- Data -->
</table>
tr
:<table>
<tr>
<!-- Isi Baris Tabel -->
</tr>
<tr>
<!-- Isi Baris Tabel -->
</tr>
</table>
td
, seperti berikut:<table>
<tr>
<td>NIM</td>
<td>Nama</td>
</tr>
<tr>
<td>23511000</td>
<td>Alex Xandra Albert Sim</td>
</tr>
</table>
td
berada di dalam elemen tr
. Browser secara otomatis akan menambahkan jumlah kolom sesuai dengan jumlah elemen td
yang terbanyak pada sebuah tr
dalam HTML.Header dari Tabel
Sebuah tabel umumnya memiliki bagian header, untuk memberikan keterangan mengenai data yang ditampilkan ke pengguna. Sebuah header dari tabel dapat berada di atas (baris pertama) dari tabel, ataupun berada pada ujung kiri (kolom pertama) dari tabel. Gambar di bawah memberikan contoh kedua jenis header tabel pada umumnya.Langkah pertama dalam membuat header tabel pada HTML ialah dengan menggunakan elemen
th
, yang digunakan selayaknya kita menggunakan td
. Misalnya, jika ingin membuat baris pertama pada tabel sebagai header, kita dapat mengisikan baris pertama dengan elemen th
seluruhnya:<table>
<tr>
<th>NIM</th>
<th>Nama</th>
</tr>
<tr>
<td>23511000</td>
<td>Alex Xandra Albert Sim</td>
</tr>
</table>
th
akan secara otomatis memberikan kedua gaya tampilan tersebut. Jika
ingin membuat setiap kolom pertama menjadi header, tentunya kita harus
mengisikan kolom pertama pada tiap baris dengan elemen th
:<table>
<tr>
<th> </th>
<th>Senin</th>
<th>Selasa</th>
<th>Rabu</th>
</tr>
<tr>
<th>TI-A</th>
<td>Basis Data</td>
<td>Desain Web</td>
<td>Matematika</td>
</tr>
<tr>
<th>TI-B</th>
<td>Desain Web</td>
<td>Struktur Data</td>
<td>Basis Data</td>
</tr>
<tr>
<th>TI-C</th>
<td>Struktur Data</td>
<td>Pemrograman</td>
<td>Matematika</td>
</tr>
</table>
scope
dan headers
. Atribut scope
digunakan untuk menghubungkan data dengan kolom atau baris dari elemen yang bersangkutan. Misalkan jika pada tabel di gambar Demo Header Vertikal di atas kita memberikan scope
pada salah satu header (TI-A) seperti berikut:<table>
<tr>
<th> </th>
<th>Senin</th>
<th>Selasa</th>
<th>Rabu</th>
</tr>
<tr>
<th scope="row">TI-A</th>
<td>Basis Data</td>
<td>Desain Web</td>
<td>Matematika</td>
</tr>
<tr>
<th>TI-B</th>
<td>Desain Web</td>
<td>Struktur Data</td>
<td>Basis Data</td>
</tr>
<tr>
<th>TI-C</th>
<td>Struktur Data</td>
<td>Pemrograman</td>
<td>Matematika</td>
</tr>
</table>
scope
hanya memberikan makna semnatik maka kita tidak akan ada perubahan tampilan. Atribut scope
dapat diisikan dengan nilai col
, colgroup
, row
, dan rowgroup
. Nilai col
dan row
cukup jelas, sementara colgroup
dan rowgroup
akandi jelaskan pada bagian berikutnya.Sampai di sini, kode untuk membuat tabel beserta makna semantiknya yang ideal ialah sebagai berikut:
<table>
<tr>
<th> </th>
<th scope="col">Senin</th>
<th scope="col">Selasa</th>
<th scope="col">Rabu</th>
</tr>
<tr>
<th scope="row">TI-A</th>
<td>Basis Data</td>
<td>Desain Web</td>
<td>Matematika</td>
</tr>
<tr>
<th scope="row">TI-B</th>
<td>Desain Web</td>
<td>Struktur Data</td>
<td>Basis Data</td>
</tr>
<tr>
<th scope="row">TI-C</th>
<td>Struktur Data</td>
<td>Pemrograman</td>
<td>Matematika</td>
</tr>
</table>
headers
sendiri memiliki fungsi yang sama dengan atribut scope
,
tetapi lebih banyak digunakan untuk tabel-tabel kompleks yang banyak
memerlukan penggabungan beberapa sel. Penjelasan mengenai atribut ini
akan diberikan ketika pembahasan mengenai penggabungan sel dilakukan.Pembatas (Border) Tabel
Pembuatan tabel yang telah kita lakukan sampai pada titik ini merupakan tabel yang tidak memiliki pembatas antar sel tabel. Tampilan standar yang diberikan HTML seperti ini sangat jarang dijumpai di dalam dokumen pada umumnya. Biasanya, tabel yang kita jumpai selalu memiliki batas antar setiap sel, sehingga membuat tabel tanpa batas akan menjadi aneh dan membingungkan pengguna.Untungnya, CSS telah memberikan fasilitas untuk memberikan tabel pada elemen-elemen yang ada, melalui properti
border
. Kita dapat menggunakan properti ini untuk memberikan garis pembatas antar setiap sel pada tabel, seperti berikut:<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Table Test</title>
<style type="text/css">
table {
border: 1px solid #C6C6C6;
}
</style>
</head>
<body>
<table>
<tr>
<th> </th>
<th>Senin</th>
<th>Selasa</th>
<th>Rabu</th>
</tr>
<tr>
<th scope="row">TI-A</th>
<td>Basis Data</td>
<td>Desain Web</td>
<td>Matematik</td>
</tr>
<tr>
<th>TI-B</th>
<td>Desain Web</td>
<td>Struktur Data</td>
<td>Basis Data</td>
</tr>
<tr>
<th>TI-C</th>
<td>Struktur Data</td>
<td>Pemrograman</td>
<td>Matematika</td>
</tr>
</table>
</body>
</html>
border
tidak
dapat menghasilkan pembatas pada sel tabel secara otomatis! Untuk
menanggulanginya, kita perlu menambahkan kode border tersebut pada
elemen td
dan th
juga, sehingga kode CSS menjadi seperti berikut:table, td, th {
border: 1px solid #C6C6C6;
}
border-spacing
, yang hanya dapat digunakan untuk elemen table
. Tambahkan kode CSS baru berikut untuk melihat contoh penggunaan border-spacing
:table {
border-spacing: 15px;
}
border-collapse
, yang sama seperti border-spacing
hanya dapat digunakan pada elemen table
. Properti border-collapse
dapat diisikan dengan dua nilai, yaitu separate
dan collapse
. Nilai standar dari browser ialah separate
, yang akan menghasilkan jarak antar sel. Nilai collapse
, seperti yang telah dapat ditebak, akan menghilangkan segala jarak antar sel.table {
border-collapse: collapse;
}
Menggabungkan Beberapa Sel
Dalam membuat tabel, seringkali kita akan memerlukan penggabungan beberapa sel sekaligus. Mungkin saja nilai dari sel pada beberapa baris adalah sama. Bisa juga penggabungan dilakukan untuk memperindah tampilan tabel. HTML menyediakan fasilitas untuk menggabungkan beberapa sel dengan menggunakan atributcolspan
dan rowspan
pada elemen td
atau th
.Seperti namanya,
colspan
digunakan untuk menggabungkan beberapa kolom sekaligus, dan rowspan
digunakan untuk menggabungkan beberapa baris sekaligus. Nilai yang
diisikan pada kedua atribut ini ialah berapa banyak sel yang ingin
digabungkan. Misalnya jika ingin menggabungkan tiga kolom, maka kita
dapat menuliskan colspan="3"
. Setelah menggabungkan sel, tentunya kita harus menuliskan lebih sedikit baris atau kolom pada bagian tabel berikutnya.Untuk mempermudah ilustrasi, perhatikan kode berikut:
<table>
<tr>
<th rowspan="2">Teams</th>
<th colspan="3">Scores</th>
</tr>
<tr>
<th scope="col">Win</th>
<th scope="col">Draw</th>
<th scope="col">Lost</th>
</tr>
<tr>
<th scope="row">Na'Vi</th>
<td>4</td>
<td>1</td>
<td>3</td>
</tr>
<tr>
<th scope="row">invictus Gaming</th>
<td>6</td>
<td>1</td>
<td>1</td>
</tr>
</table>
th
berbeda pada baris pertama dan baris kedua, sesuai dengan penggabungan kolom yang dilakukan. th
pertama pada baris pertama memiliki atribut rowspan="2"
yang berarti sel yang bersangkutan akan bergabung dengan sel pada kolom yang sama di baris berikutnya, sehingga tr
untuk baris kedua hanya memiliki tiga buah th
. Selanjutnya, th
kedua pada baris pertama memiliki atribut colspan="3"
, yang berarti tiga kolom selanjutnya akan digabungkan ke dalam satu kolom, sehingga hanya terdapat dua th
pada baris ini (dua th
selanjutnya tidak perlu dituliskan lagi karena telah digabungkan pada th
kedua).Perhatikan juga bagaimana atribut
scope
digunakan pada th
yang relevan (memiliki arti langsung pada data) seperti jumlah
kemenangan dan nama tim, tetapi browser tidak dapat secara langsung sel
yang bersangkutan merupakan nilai kombinasi. Browser dapat mengetahui
bahwa sebuah tim memiliki empat kemenangan, dan Na’vi memiliki skor
4/1/3, tetapi browser tidak dapat mengetahui bahwa Na’vi memiliki empat
kemenangan.Jika kita dapat secara langsung melihat tabel hasil penampilan browser tentunya hal ini tidak menjadi masalah. Tetapi untuk pengguna yang menggunakan alat bantu seperti screen reader, kita perlu memberitahukan secara khusus ke browser sel-sel yang relevan terhadap sebuah nilai. Pemberian makna semantik seperti ini dapat dilakukan dengan memanfaatkan atribut
headers
pada elemen td
.Atribut
headers
menerima nilai berupa id
dari sel bersangkutan yang memberikan arti pada tabel tersebut. Karena
model dari tabel yang mengharuskan kita melihat beberapa sel sekaligus,
maka kita dapat mengisikan beberapa id
sekaligus ke dalam atribut ini, dengan pemisah berupa spasi. Misalnya, kita dapat memberikan id
pada setiap th
yang ada pada tabel seperti berikut:<table>
<tr>
<th id="team" rowspan="2">Teams</th>
<th id="score" colspan="3">Scores</th>
</tr>
<tr>
<th id="win" scope="col">Win</th>
<th id="draw" scope="col">Draw</th>
<th id="lost" scope="col">Lost</th>
</tr>
<tr>
<th id="navi" scope="row">Na'Vi</th>
id
yang relevan terhadap nilai tersebut, seperti berikut: <td headers="team navi win score">4</td>
<td headers="team navi draw score">1</td>
<td headers="team navi lost score">3</td>
</tr>
Struktur Tabel
Meskipun terlihat sederhana, pembangunan tabel yang telah kita lakukan sampai sejauh ini masih merupakan sebuah tabel yang hanya menyimpan data. Data yang disimpan dan ditampilkan sendiri tidak memiliki strukutr, sehingga tidak terdapat organisasi data yang baik. Pengorganisasian data yang baik dan benar pada sebuah tabel HTML akan sangat membantu kita dalam mengembangkan aplikasi web, terutama jika tabel yang ingin dibangun harus bersifat dinamis.Penambahan kolom dan baris tabel saja tidak cukup untuk mengorganisasikan data pada tabel, karena kita tidak dapat secara langsung mengetahui mana bagian dari tabel yang merupakan data, mana yang merupakan isi data, dan mana yang merupakan nilai agregasi dari data. Kita juga tidak dapat mengetahui tujuan atau deskripsi dari sebuah tabel dengan hanya baris dan kolom tabel. HTML menyediakan beberapa elemen yang dikhususkan untuk memenuhi beberapa hal yang disebutkan sebelumnya, yaitu elemen
caption
, thead
, tfoot
, dan tbody
.Table Head, Body, dan Foot
Sebuah tabel dapat dibagi menjadi beberapa bagian, biasanya header, footer, dan body. Header dari tabel digunakan untuk mendeskripsikan data, body tabel untuk menampilkan isi data, dan footer dari tabel digunakan untuk menampilkan agregasi dari data tersebut.Elemen-elemen HTML yang digunakan untuk membuat masing-masing bagian dari tabel tersebut yaitu
thead
, tbody
, dan tfoot
. Elemen paling pertama yang harus diletakkan setelah caption
ialah thead
, dan setelah thead
, kita bebas meletakkan tfoot
atau tbody
terlebih dahulu.<table>
<caption>...</caption>
<thead>
...
</thead>
<tbody>
...
</tbody>
<tfoot>
...
</tfoot>
</table>
0 komentar:
Posting Komentar