Cara memberi garis bawah pada teks di CSS
text-decoration: underline menggambar garis di bawah teks. Garis itu memakai warna teks, kecuali kamu memberinya warna sendiri.
Baris kedua memakai shorthand text-decoration untuk jenis garis, gaya, dan warnanya, lalu mengatur ketebalan dan offset-nya dengan property masing-masing. Spesifikasinya juga memperbolehkan ketebalan ditulis di dalam shorthand, tetapi Safari membuang seluruh deklarasinya kalau kamu melakukannya, jadi tulis text-decoration-thickness secara terpisah.
Property text-decoration
| Property | Nilai | Default |
|---|---|---|
text-decoration-line | underline, overline, line-through, none (bisa digabung) | none |
text-decoration-style | solid, double, dotted, dashed, wavy | solid |
text-decoration-color | Warna apa pun | currentColor (warna teks) |
text-decoration-thickness | Panjang, persentase, auto, from-font | auto |
text-underline-offset | Panjang, persentase, auto | auto |
text-decoration adalah shorthand untuk empat property pertama, tetapi jangan masukkan ketebalannya: Safari mengabaikan deklarasi text-decoration yang berisi ketebalan. text-underline-offset adalah property terpisah dan harus ditulis sendiri.
Gaya, warna, dan ketebalan
Memindahkan garis bawah: text-underline-offset
Secara default, garisnya berada dekat dengan huruf dan melompati bagian huruf yang turun ke bawah seperti g, p, dan y. text-underline-offset mendorongnya lebih ke bawah, yang sering kali terlihat lebih rapi pada judul dan link:
Celah di sekitar bagian huruf yang turun itu berasal dari text-decoration-skip-ink: auto, yang aktif secara default. Atur ke none untuk garis yang tidak terputus.
Menghapus garis bawah dari link
Link diberi garis bawah oleh stylesheet bawaan browser. text-decoration: none menghapusnya. Karena banyak pembaca mengenali link dari garis bawahnya, munculkan lagi garis itu saat hover dan saat fokus keyboard, dan beri link warna yang berbeda dari teks:
Bar navigasi dan tombol adalah tempat yang wajar untuk menghilangkan garis bawah, karena posisinya sudah menunjukkan bahwa itu "link". Di dalam paragraf teks, pertahankan garis bawahnya. Penjelasan lebih lanjut tentang state link ada di halaman hover.
Overline dan line-through
text-decoration-line juga bisa menggambar garis di atas teks atau mencoretnya, dan menerima lebih dari satu nilai:
.old-price { text-decoration: line-through; }
.both { text-decoration-line: underline overline; }
Coretan lewat CSS hanya bersifat visual. Kalau teksnya adalah konten yang dihapus (harga yang berubah, item yang dihilangkan), tandai dengan <s> atau <del>, seperti yang ditunjukkan di halaman HTML underline, supaya maknanya ada di markup, bukan hanya di styling.
Kesalahan yang sering terjadi
- Memakai
<u>untuk garis bawah sebagai gaya.<u>untuk teks yang ditandai berbeda, misalnya salah ketik. Untuk garis bawah sebagai gaya, pakai CSS. - Memberi garis bawah pada teks yang bukan link. Pembaca akan mencoba mengkliknya. Untuk penekanan, pakai huruf tebal, warna, atau background.
- Menghapus garis bawah link di teks paragraf tanpa penanda lain. Warna saja tidak cukup bagi pembaca yang tidak bisa melihat perbedaannya.
- Mencoba menghapus garis bawah elemen induk dari child. Garis itu tidak bisa dibatalkan dari dalam. Ubah elemen induknya atau jadikan child
inline-block. - Mengira
text-underline-offsetada di dalam shorthand. Itu property tersendiri. - Menaruh ketebalan di dalam shorthand.
text-decoration: underline 2pxberfungsi di Chrome dan Firefox, tetapi Safari membuang seluruh deklarasinya. Pakaitext-decoration-thickness.
Pertanyaan yang sering diajukan
Bagaimana cara memberi garis bawah pada teks di CSS?
Pakai text-decoration: underline; pada elemennya. Untuk tampilan garisnya, tambahkan text-decoration-color, text-decoration-style, text-decoration-thickness, dan text-underline-offset.
Bagaimana cara menghapus garis bawah dari link?
Atur text-decoration: none; pada elemen a. Pastikan link tetap menonjol dengan cara lain (warna ditambah garis bawah saat hover atau fokus), karena banyak pembaca mengandalkan garis bawah untuk mengenali link.
Bagaimana cara mengubah warna garis bawah?
Pakai text-decoration-color, atau shorthand-nya: text-decoration: underline #f59e0b;. Tanpa itu, garisnya memakai warna teks.
Bagaimana cara menambah jarak antara teks dan garis bawahnya?
Pakai text-underline-offset, misalnya text-underline-offset: 4px;. Nilai yang lebih besar memindahkan garisnya lebih jauh di bawah teks.
Kenapa aku tidak bisa menghapus garis bawah dari elemen child?
Garis bawah yang digambar oleh elemen induk dilukis melintasi child-nya dan tidak bisa dihapus dari dalam child. Hapus garis itu di elemen yang mengaturnya, atau ubah child menjadi display: inline-block, yang tidak terjangkau dekorasi elemen induk.