Apa itu tag HTML
Tag HTML adalah nama di dalam kurung sudut yang menandai sepotong konten. Kebanyakan tag datang berpasangan: tag pembuka seperti <p> dan tag penutup dengan garis miring seperti </p>. Semua yang ada di antaranya adalah konten, dan keseluruhannya disebut elemen.
Ganti <h1> menjadi <h2> (tag pembuka dan tag penutupnya) dan heading-nya menjadi lebih kecil. Nama tag-lah yang memberi tahu browser apa kontennya.
Anatomi: tag, atribut dan elemen
<a href="/docs/html/links" class="nav">Links</a>
| Bagian | Di contoh ini |
|---|---|
| Tag pembuka | <a href="/docs/html/links" class="nav"> |
| Nama tag | a |
| Atribut | href="/docs/html/links" dan class="nav" |
| Konten | Links |
| Tag penutup | </a> |
| Elemen | semua bagian di atas sekaligus |
Atribut selalu ditulis di tag pembuka, tidak pernah di tag penutup. Atribut dibahas di halaman atribut.
Nama tag tidak peka huruf besar dan kecil: <P> dan <p> sama saja. Tulis dengan huruf kecil.
Void tag: tanpa tag penutup
Beberapa elemen tidak bisa berisi apa pun, jadi hanya punya tag pembuka. Elemen ini disebut void element (orang juga menyebutnya self closing tag):
Daftar lengkapnya: area, base, br, col, embed, hr, img, input, link, meta, source, track, wbr.
Kamu boleh menulisnya sebagai <br /> dengan garis miring. Garis miring itu tidak berbuat apa-apa di HTML; garis miring diperbolehkan supaya kode bergaya XHTML tetap berfungsi. Garis miring pada tag biasa, seperti <div />, juga diabaikan, artinya div itu masih terbuka.
Nesting tag
Elemen bisa diletakkan di dalam elemen lain. Aturannya: tutup tag dalam urutan kebalikan dari saat kamu membukanya. Yang terakhir dibuka adalah yang pertama ditutup.
<p>This is <strong>very <em>important</em></strong>.</p> <!-- correct -->
<p>This is <strong>very <em>important</strong></em>.</p> <!-- wrong -->
Browser tidak menolak nesting yang rusak. Browser memperbaikinya, dan hasil perbaikannya tidak selalu sesuai maksudmu. Contoh ini memberikan dua potongan kode dengan nesting yang salah ke parser browser lalu mencetak struktur yang benar-benar dibuatnya:
Ada dua perbaikan yang terjadi. <b> dan <i> yang tumpang tindih dipecah menjadi elemen tambahan. Dan <p> tidak boleh berisi <div>, jadi browser menutup paragraf sebelum div lalu mengubah </p> yang tersisa menjadi paragraf baru yang kosong. Kalau CSS atau JavaScript berperilaku aneh, nesting yang rusak adalah salah satu hal pertama yang perlu diperiksa.
Elemen block dan inline
Kebanyakan tag masuk ke salah satu dari dua kelompok tampilan. Elemen block (div, p, h1 sampai h6, ul, section) dimulai di baris baru dan memakan seluruh lebar. Elemen inline (span, a, strong, em, code) berada di dalam baris teks dan hanya selebar isinya.
Kotak biru merentang sepanjang halaman; kotak kuning hanya membungkus teksnya. CSS bisa mengubah ini dengan property display, tapi setiap tag dimulai dengan nilai default-nya. Lihat div dan span untuk dua container umum itu.
Tag HTML yang paling umum
| Tag | Fungsinya |
|---|---|
<html>, <head>, <body> | Kerangka dokumen |
<title>, <meta>, <link> | Informasi halaman di head |
<h1> sampai <h6> | Heading |
<p> | Paragraf |
<a> | Link |
<img> | Gambar |
<ul>, <ol>, <li> | List |
<strong>, <em> | Teks penting dan teks yang ditekankan |
<br>, <hr> | Pindah baris, pemisah tematik |
<div>, <span> | Container block dan inline umum |
<table>, <tr>, <th>, <td> | Tabel |
<form>, <input>, <label>, <button> | Form |
<header>, <nav>, <main>, <footer>, <section>, <article> | Struktur halaman yang bermakna |
Untuk daftar satu halaman yang bisa kamu cetak, lihat cheat sheet HTML.
Tag yang tidak ada
Kalau kamu mengetik tag yang tidak dikenal browser, browser tidak gagal. Browser membuat elemen yang tidak dikenal, menampilkan kontennya, dan memperlakukannya sebagai inline:
Tag yang tidak dikenal tidak punya makna bagi mesin pencari atau screen reader, jadi utamakan tag sungguhan. Kalau kamu membuat komponen sendiri dengan JavaScript, beri nama dengan tanda hubung (user-badge): nama dengan tanda hubung dicadangkan untuk custom element dan tidak akan pernah bentrok dengan tag HTML di masa depan.
Kesalahan umum
- Lupa tag penutup.
</a>atau</strong>yang hilang membuat sisa halaman menjadi link atau tebal. Browser menutup beberapa tag untukmu (</p>,</li>), tapi tidak yang ini. - Menutup void tag.
</br>dan</img>tidak valid. Browser bahkan membaca</br>sebagai<br>pembuka, jadi<br></br>menghasilkan dua pindah baris. - Tag yang tumpang tindih. Tutup dalam urutan terbalik:
<b><i>x</i></b>, jangan pernah<b><i>x</b></i>. - Meletakkan block di dalam paragraf.
<div>, list atau heading di dalam<p>mengakhiri paragraf lebih awal. Pakai<div>sebagai container luarnya. - Memilih tag karena tampilannya. Pakai
<h2>karena itu heading, bukan karena ukurannya besar. Ukuran dan ketebalan adalah urusan CSS.
Pertanyaan yang sering diajukan
Apa perbedaan tag HTML dan elemen HTML?
Tag adalah markup yang kamu ketik, seperti <p> atau </p>. Elemen adalah keseluruhan yang dibuat browser darinya: tag pembuka, atributnya, kontennya dan tag penutupnya. <p>Hi</p> adalah dua tag yang membentuk satu elemen p.
Tag HTML apa saja yang tidak butuh tag penutup?
Void element tidak bisa punya konten, jadi tidak punya tag penutup: <br>, <hr>, <img>, <input>, <meta>, <link>, <source>, <track>, <wbr>, <area>, <base>, <col> dan <embed>.
Sebaiknya aku menulis <br> atau <br />?
Keduanya HTML yang valid. Garis miring di akhir boleh ditulis pada void element dan diabaikan oleh browser. Pada tag yang bukan void seperti <div />, garis miringnya juga diabaikan, jadi div itu tetap terbuka sampai ada </div>.
Apakah tag HTML peka huruf besar dan kecil?
Tidak. <P> dan <p> menghasilkan elemen yang sama, begitu juga campuran huruf besar dan kecil apa pun. Huruf kecil adalah gaya standar dan yang dihasilkan kebanyakan formatter.
Ada berapa banyak tag HTML?
Standar HTML saat ini mendefinisikan lebih dari 100 elemen, tapi halaman sehari-hari memakai sekitar 20 sampai 30 di antaranya: heading, paragraf, link, gambar, list, div, span, form dan tag layout semantik.
Apa yang terjadi kalau aku memakai tag yang tidak ada?
Browser tetap membuat elemen untuknya, menampilkan kontennya, dan memperlakukannya sebagai elemen inline tanpa makna khusus. Custom element diperbolehkan kalau namanya mengandung tanda hubung, seperti <user-card>.