HTML etiketleri doğrudan oluşturulup kullanılabilir
(maurycyz.com)- HTML'de tanınmayan etiket adları kullanılsa bile tarayıcı bunları genel öğeler olarak işler
- CSS'te ilgili etiket adı seçici olarak belirtilirse stil verme ve görüntüleme kontrolü mümkündür
- Ad içinde tire (
-) kullanmak, gelecekteki HTML standartlarıyla çakışmayı önleyebilir <div>veya<span>yerine anlamlı özel etiketler kullanmak kod okunabilirliğini artırır- Karmaşık iç içe yapılarda bile yalnızca etiket adlarıyla yapıyı anlamak kolaylaşır, bu da bakımı kolaylaştırır
Özel HTML etiketlerinin kullanımı
-
Tarayıcı, bilinmeyen etiketleri genel blok öğeleri gibi render eder
- Bu, HTML standardında belirtilen normal davranıştır ve CSS ile stil verilerek görsel olarak kontrol edilebilir
- Örneğin
<cool-thing>gibi bir etiket tanımlanabilir ve CSS'tecool-thing { ... }biçiminde biçimlendirilebilir
-
Etiket adında tire (
-) bulunursa, bunun gelecekte HTML standardına eklenme olasılığı olmadığı için çakışma riski yoktur- Örnek:
<main-article>,<quote-body>vb.
- Örnek:
Okunabilirlik ve yapı iyileştirmesi
<div>veya<span>yerine anlamlı ada sahip etiketler kullanmak kodun anlaşılmasını kolaylaştırır- Örneğin
<div class="article-header">yerine<article-header>kullanılabilir
- Örneğin
- İç içe geçmiş
<div>yapılarında kapanış etiketinin yerini anlamak zor olabilir; ancak açık etiket adları kullanılırsa yapı netleşir<main-article>içinde<article-header>,<article-quote>gibi öğeler kullanılırsa DOM yapısını kavramak sezgiselleşir
Örnek kod
- Geleneksel yöntem
<div class="cool-thing"> Hello, World! </div> - Özel etiket yöntemi
<cool-thing> Hello, World! </cool-thing>- CSS'te
cool-thing { display: block; font-weight: bold; text-align: center; ... }biçiminde stil verilebilir
- CSS'te
Sonuç
- HTML standardının izin verdiği esnek etiket tanımlama özelliği kullanılarak,
yüksek okunabilirliğe sahip yapısal işaretleme yazılabilir - Ancak mevcutta tanımlı anlamlı etiketler varsa, öncelik mevcut etiketlerin kullanımındadır
1 yorum
Hacker News yorumları
<tag-name>ifadesinin tanınmayan bir etiket olmadığını vurguluyorKendi blog yazısını tanıtarak,
<tagname>öğesinin WHATWG onu yeni bir öğe olarak ekleyene kadar HTMLUnknownElement olarak işlendiğini, ancak<tag-name>öğesinin düzen ve stilleme açısından kullanışlı, geçerli bir HTMLElement olduğunu açıklıyorJavaScript Custom Elements API ile yükseltilirse tanımlı bir custom element haline geliyor
Bunun tüm tarayıcılarda standart davranış olduğunu ve W3C HTML Validator'ün de tire içeren custom element'leri HTMLElement olarak kabul ettiğini belirtiyor
Ancak varsayılan UA stylesheet içindeki
[hidden]{display:none}kuralı miras alınmadığından bunun ayrıca belirtilmesi gerektiğini söylüyor<DIV>öğesinin varsayılan olarakdisplay:blockolmasının da UA stylesheet sayesinde olduğunu, bu yüzden custom element'lerdedisplayözelliğinin elle ayarlanması gerektiğini ekliyorCSS'teki
:definedve:not(:defined)seçicileriyle tanımlı/tanımsız öğelerin ayırt edilebildiğini belirtiyorDeclarative Shadow DOM (
<template shadowrootmode="open">) da aynı şekilde tanımlanmamış custom element oluşturuyorhiddenözelliğinin bir HTML presentation attribute olmasıyla ilgili olduğunu söyleyerek itiraz ediyorUA stylesheet'in custom element'lere de aynı şekilde uygulandığını,
[hidden]diye bir kural bulunmadığını belirtiyorhiddenözelliğinialign="right"gibi, niteliğin kendisinin stile dönüştürüldüğü bir örnek olarak açıklıyor-) yerine iki nokta üst üste (:) kullanılabilseydi XML namespace'lerinin daha doğal entegre edilebileceğini söyleyerek hayıflanıyornginx veya apache üzerinde iki nokta üst üste işaretinin tireye dönüştürülmesinin de mümkün olacağını ekliyor
“1999'a geri dönemeyiz ama” diyerek nostaljik bir tonla bitiriyor
Örnek koddaki
<div>iç içe yapısının aşırı olduğunu eleştiriyor<article>,<header>,<blockquote>gibi semantik etiketler kullanmanın daha uygun olacağını öneriyorClass'ların birden fazla olabildiğini ve sırasız olduğunu, ancak iç içe custom element'lerin sıra zorunluluğu getirdiğini, bu yüzden aynı ifadeyi kurmanın zorlaştığını belirtiyor
Bunun 1996 için makul olduğunu ama bugün artık öyle olmadığını değerlendiriyor
3-4 yıldır custom element kullandığı deneyimini paylaşıyor
Fikrin zekice olduğunu ama pratikte zorlayıcı kaldığını söylüyor
Çok fazla custom etiket kullanılırsa okunabilirliğin düştüğünü ve blok/satır içi ayrımının zorlaştığını belirtiyor
Dengeli bir yaklaşımla yerleşik etiketleri koruyup, yalnızca
<x-card>veya<x-hero>gibi bileşen tipi öğeler için custom etiket kullandığını anlatıyorAlt bileşenleri ise
<div slot="hero-blurb">gibi slot niteliği ile ayırdığını söylüyorClass'ları yalnızca değişiklik ve özelleştirme amacıyla sınırlayıp, yapıyı slot ile ifade etmeyi tercih ettiğini belirtiyor
Kendi yaptığı Good.HTML projesini tanıtarak, autohook, template literal tabanlı interpolation ve düzenli bileşen yapısı sunduğunu açıklıyor
< !app-header />gibi self-closing custom element yapısını da yorum düğümü hilesiyle uyguladığını ekliyorslotniteliğine göre seçmek içindiv[slot="hero-blurb"]gibi yazmanın doğru olup olmadığını soruyorVarsayılan olarak custom etiketlerin
<span>gibi davrandığını belirtiyorGerekirse Custom Element API üzerinden davranış tanımlanabileceğini ekliyor
Çoğu kullanıcı için SPA yerine HTML + custom element birleşiminin daha iyi olacağını düşündüğünü belirtiyor
Kendi Hypalink örneğini paylaşarak Web Components'in hak ettiği değeri görmediğini ifade ediyor
<yes-script>adlı bir custom etiket oluşturarak<noscript>öğesinin tersini yaptığını tanıtıyorJS devre dışıysa belirli alanların gizlenebildiğini söylüyor
Proje bağlantısını paylaşıyor
@media (scripting)özelliği kullanılarak yalnızca saf CSS ile de aynı etkinin elde edilebileceğini öneriyorMDN belgesi bağlantısını ekliyor
Geçmişte tarayıcılardan kaldırılan
<blink>etiketini kendi başına yeniden oluşturduğu deneyimini paylaşıyorBunu jQuery ve visibility kontrolüyle yaptığını, tarayıcıların rastgele etiketlere izin verdiğini görünce şaşırdığını söylüyor
Kodun yaklaşık 10 satır olduğu için yayımlamadığını, ama benzer denemelerin çok olduğunu tahmin ettiğini ekliyor
<blink>özelliğini hiçbir zaman uygulamadığını, yalnızca Firefox ve Opera'nın 2013'e kadar destek verdiğini açıklıyor<blink>efektinin verilebildiğini söyleyerek örnek kod paylaşıyor.blinkyerineblinkseçicisi kullanılırsa doğrudan etikete uygulanacağını belirtiyor<blink>benzeri davranışların basit bir HTML öğesi olarak sunulamayacak kadar fazla anlam taşıyan bir özellik olduğunu, bu yüzden kaldırılmasını memnuniyetle karşıladığını söylüyor<main-article>,<article-header>gibi örneklerin aslında gerçek HTML etiketleriyle değiştirilebileceğini belirtiyor<article>,<header>,<blockquote>kullanmanın daha uygun olduğunu söylüyorCustom etiketlerin varsayılan olarak
<span>gibi satır içi render edildiğini, ama CSS ile varsayılandisplayözelliğinin kolayca atanabileceğini söylüyorGeçmişte namespace sorunları yüzünden bundan kaçınıldığını, ancak standartta tire (
-) kullanımına izin verilince çakışma riskinin ortadan kalktığını belirtiyorCSS seçicilerinde de sorunsuz çalıştığını ve
querySelectorile erişilebildiğini ekliyorVue gibi framework'ler olmadan da modern HTML ile yeterince şey ifade edilebildiğini düşündüğünü söylüyor
Bunun, ileride yükseltme yapıldığında prototype chain'in doğal biçimde genişleyebilmesi için tasarlanmış olduğunu açıklıyor
Tüm custom element'lere varsayılan stil vermek için şunu kullanmanın yeterli olduğunu söylüyor
Eski IE'nin HTML5 etiketlerini tanımadığı dönemde, bunu 2010 civarında yazdığı bir script ile çözdüğünü hatırlıyor
JS ile etiketi bir kez oluşturunca IE'nin onu tanıdığını, sonra silinse bile sorun çıkmadığını söylüyor
Bu sayede rastgele etiketlerin de render edilebildiğini fark ettiğini belirtiyor
O dönemki blog yazısını da paylaşıyor