- Di HTML, meskipun memakai nama tag yang tidak dikenali, browser akan tetap menanganinya sebagai elemen biasa
- Jika nama tag tersebut ditentukan sebagai selector di CSS, maka pemberian style dan kontrol tampilan bisa dilakukan
- Menggunakan nama yang mengandung tanda hubung (-) dapat mencegah benturan dengan standar HTML di masa depan
- Alih-alih
atau, memakai tag kustom yang bermakna dapat meningkatkan keterbacaan kode - Bahkan dalam struktur nested yang kompleks, struktur lebih mudah dipahami hanya dari nama tag, sehingga perawatan jadi lebih mudah
Pemanfaatan tag HTML kustom
-
Browser merender tag yang tidak dikenal seperti elemen blok biasa
- Ini adalah perilaku normal yang dijelaskan dalam standar HTML, dan tampilannya dapat dikendalikan secara visual jika style ditetapkan di CSS
- Sebagai contoh, tag seperti `` bisa didefinisikan dan dihias di CSS dalam bentuk
cool-thing { ... }
-
Jika nama tag menyertakan tanda hubung (-), maka tidak akan berbenturan dengan penambahan pada standar HTML di masa depan sehingga tidak ada risiko konflik
- Contoh:
,
- Contoh:
Peningkatan keterbacaan dan struktur
- Menggunakan tag dengan nama yang bermakna alih-alih
ataumembuat kode lebih mudah dipahami- Misalnya,
bisa diganti dengan
- Misalnya,
- Dalam struktur `` yang bertingkat, posisi tag penutup sulit dikenali, tetapi dengan nama tag yang eksplisit struktur menjadi lebih jelas
- Jika di dalam
ada, ``, dan sebagainya, maka struktur DOM lebih intuitif untuk dipahami
- Jika di dalam
Contoh kode
- Cara lama
Hello, World! - Cara dengan tag kustom
Hello, World!- Di CSS, style bisa ditetapkan dalam bentuk
cool-thing { display: block; font-weight: bold; text-align: center; ... }
- Di CSS, style bisa ditetapkan dalam bentuk
Kesimpulan
- Dengan memanfaatkan fitur definisi tag yang fleksibel yang diizinkan oleh standar HTML, kita bisa menulis markup struktural yang lebih mudah dibaca
- Namun, jika sudah ada tag bermakna yang didefinisikan, maka menggunakan tag yang sudah ada tetap menjadi prioritas
1 komentar
Pendapat Hacker News
Menekankan bahwa
bukanlah tag yang tidak dikenali Memperkenalkan [tulisan blog](https://dashed-html.github.io) miliknya, dan menjelaskan bahwadiperlakukan sebagai HTMLUnknownElement sampai WHATWG menambahkannya sebagai elemen baru, tetapiadalah **HTMLElement yang valid** sehingga berguna untuk layout dan styling Jika di-upgrade dengan JavaScript Custom Elements API, itu menjadi **custom element yang terdefinisi** Ini adalah perilaku standar di semua browser, dan W3C HTML Validator juga mengakui custom element yang mengandung dash sebagai HTMLElement Namun aturan `[hidden]{display:none}` dari stylesheet UA bawaan tidak diwariskan, jadi harus ditentukan sendiri Fakta bahwasecara default memilikidisplay:blockjuga berkat stylesheet UA, jadi untuk custom element kita perlu mengatur propertidisplaysendiri Dengan selector CSS:defineddan:not(:defined), elemen yang terdefinisi dan belum terdefinisi bisa dibedakan Declarative Shadow DOM (``) juga dengan cara yang sama membuat custom element yang belum terdefinisihiddenadalah atribut presentasional HTML (presentation attribute) Stylesheet UA diterapkan sama pada custom element, dan tidak ada aturan[hidden]hiddenadalah contoh di mana atribut itu sendiri ditafsirkan sebagai style, sepertialign="right"-), integrasi namespace XML akan terasa lebih alami Menyebut bahwa di nginx atau apache, titik dua pun bisa diubah menjadi tanda hubung Menutup dengan nada nostalgia, “kita tidak bisa kembali ke tahun 1999”Menunjukkan bahwa struktur nested
pada contoh kode terlalu berlebihan Menyarankan bahwa memakai **tag semantik** seperti,, danakan lebih tepatMembagikan pengalaman memakai custom element selama 3–4 tahun Idenya cerdas, tetapi rumit dalam praktik Jika terlalu banyak custom tag dipakai, keterbacaan menurun dan sulit membedakan blok dengan inline Dengan pendekatan yang seimbang, tag bawaan tetap dipakai apa adanya, dan custom tag hanya digunakan untuk elemen berbentuk komponen seperti
atauSubkomponen dibedakan lewat atribut slot, misalnya `` Mereka lebih suka membatasi class hanya untuk modifikasi dan kustomisasi, sementara struktur diekspresikan lewat slot< !app-header />juga diimplementasikan dengan trik comment nodeslotdi CSS cukup menulis sepertidiv[slot="hero-blurb"]Secara default custom tag berperilaku seperti `` Jika perlu, perilakunya bisa didefinisikan melalui Custom Element API
Memperkenalkan custom tag bernama
yang dibuat untuk menjalankan peran kebalikan dariSaat JS dinonaktifkan, area tertentu bisa disembunyikan Membagikan tautan proyek@media (scripting)bisa memberi efek yang sama hanya dengan CSS murni Melampirkan tautan referensi dokumen MDNMembagikan pengalaman pernah menciptakan ulang tag `` yang dulu dihapus dari browser Itu dibuat dengan jQuery dan manipulasi visibility, dan mereka terkejut mengetahui browser mengizinkan tag arbitrer Karena kodenya hanya sekitar 10 baris, mereka tidak mempublikasikannya, tetapi menduga banyak percobaan serupa sudah ada
blinkalih-alih.blink, efeknya akan diterapkan langsung ke tagMenunjukkan bahwa contoh seperti
dansebenarnya bisa diganti dengan tag HTML nyata Menggunakan,, dan `` akan lebih tepatCustom tag pada dasarnya dirender inline seperti ``, tetapi properti display default bisa ditentukan lewat CSS Dulu ini dihindari karena masalah namespace, tetapi setelah standar mengizinkan tanda hubung (
-), risiko bentrokan hilang Ini juga bekerja baik dalam selector CSS, dan bisa diakses lewatquerySelectorTerasa bahwa bahkan tanpa framework seperti Vue, HTML modern saja sudah cukup ekspresifJika ingin menetapkan style default untuk semua custom element, bisa dilakukan seperti berikut
Mengenang bahwa IE lama dulu tidak mengenali tag HTML5, jadi sekitar tahun 2010 mereka menyelesaikannya dengan skrip buatan sendiri Begitu tag dibuat sekali lewat JS, IE akan mengenalinya, dan setelah itu tidak masalah meski dihapus Dari situ mereka sadar bahwa tag arbitrer pun bisa dirender dengan cara ini Mereka juga membagikan tulisan blog saat itu