Yerleşik Öğeleri Genişletme
Mevcut öğeleri is özniteliğiyle özelleştirin
Yerleşik Öğeleri Genişletme, CoddyKit'te ücretsiz bir HTML Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, HTML Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. HTML Academy kursu toplamda 4 dersten oluşur.
İki Tür Özel Öğe
Belirtim, bağımsız özel öğeleri (HTMLElement sınıfını genişleten ve <my-card> olarak kullanılan) ve özelleştirilmiş yerleşik öğeleri (belirli bir yerleşik sınıfı genişleten ve <button is="my-button"> olarak kullanılan) tanımlar. Özelleştirilmiş yerleşik öğeler, yerleşik anlambilimi kendiliğinden devralır.
Neden Yerleşik Bir Sınıfı Genişletmeli?
Bağımsız bir <my-button> öğesi, yerleşik <button> davranışlarının hiçbirini edinmez: Enter/Boşluk ile etkinleştirme, formlara katılım ve yardımcı teknolojiler için düğme rolü yoktur. Özelleştirilmiş bir düğme (is="my-button") bunların tümünü otomatik olarak devralır.
Sınıfı Genişletme
HTMLElement yerine belirli HTML sınıfını genişletin: class MyButton extends HTMLButtonElement {}. Öğe, form gönderme, odak yönetimi ve devre dışı durumu gibi tüm yerleşik davranışlarını korur; siz de geliştirmelerinizi bunların üzerine eklersiniz.
class MyButton extends HTMLButtonElement {
connectedCallback() {
this.style.fontWeight = "bold";
}
}Kayıt Sırasında Genişletme Seçeneği
customElements.define("my-button", MyButton, { extends: "button" }). Üçüncü bağımsız değişken, kayıt sistemine öğenin hangi yerleşik etiketi genişlettiğini bildirir. Bu bağımsız değişken olmadan kayıt işlemi hata verir.
is Özniteliği
Özelleştirilmiş yerleşik öğeleri mevcut etiket üzerindeki is özniteliğiyle kullanın: <button is="my-button">Click</button>. Bunun yerine <my-button> yazarsanız bağımsız bir öğe oluşturulur ve yerleşik davranış kaybedilir.
Safari Bunu Desteklemez
Safari, erişilebilirlik kaygılarını gerekçe göstererek özelleştirilmiş yerleşik öğeleri uygulamayı reddetmiştir. Bunlar Chrome, Edge ve Firefox'ta çalışır; Safari'de özelleştirme özniteliği yok sayılır ve öğe sıradan bir <button> gibi davranır. Safari desteği gerektiğinde resmî çoklu tarayıcı dolgusunu kullanın.
Çoklu Tarayıcı Doldurma Seçenekleri
@ungap/custom-elements çoklu tarayıcı dolgusu, Safari'de özelleştirilmiş yerleşik öğe desteğini geri getirir. Küçük ve bakımı iyi yapılan bir dolgudur; ekibiniz özelleştirme özniteliği yaklaşımından vazgeçmeden tarayıcılar arası destek istiyorsa bunu ekleyin.
Bağımsız Alternatif
Çoklu tarayıcı dolgusu olmadan Safari desteği önemliyse bunun yerine bağımsız bir öğe oluşturun ve gereken davranışları kendiniz kopyalayın: düğme rolü ekleyin, odak sırası için 0 değerini verin, Enter/Boşluk için klavye işleyicileri ekleyin ve ElementInternals arayüzüyle form ilişkilendirmesi sağlayın.
Form İlişkilendirme Arayüzü
Bağımsız öğeler, static formAssociated = true ayarlanarak ve this.attachInternals() kullanılarak form gönderimine katılabilir. Döndürülen ElementInternals nesnesi, tam form bütünleşmesi için setFormValue ve setValidity sağlar.
Hangisini Ne Zaman Seçmeli?
Çoğunlukla yerleşik bir öğe gibi davranan bileşenler (gelişmiş bir düğme veya akıllı bir giriş alanı) için, platform desteğiniz Chrome/Firefox ise ya da çoklu tarayıcı dolgusunu kabul ediyorsanız özelleştirilmiş yerleşik öğeleri seçin. Tamamen yeni bileşenler (kartlar veya iletişim kutuları) için, yerleşik bir karşılığı yoksa bağımsız öğeleri seçin.
Hata: Bağımsız Düğmeler
Web bileşenlerinde en yaygın hata, <my-button> öğesini bağımsız bir öğe olarak oluşturmaktır. Bu öğe formları göndermez, Enter/Boşluk tuşlarına tepki vermez ve düğme olarak duyurulmaz. Ya HTMLButtonElement sınıfını genişletin ya da gerçek bir düğmenin tüm davranışlarını dikkatle kopyalayın.
Bilgi Kontrolü
Düğme benzeri bir bileşen için HTMLElement sınıfını (bağımsız öğe) genişletmek yerine HTMLButtonElement sınıfını (özelleştirilmiş yerleşik öğe) genişletmenin pratik avantajı nedir?
Özet
Özelleştirilmiş yerleşik öğeler belirli bir HTML sınıfını (HTMLButtonElement, HTMLInputElement) genişletir ve is özniteliğiyle kullanılır; tüm yerel davranışları devralırlar. button sınıfını genişletme seçeneğiyle kaydedin. Safari bunları yerel olarak desteklemez; tam tarayıcılar arası destek gerektiğinde çoklu tarayıcı dolgusu kullanın veya davranışları elle kopyalayan bağımsız öğeleri tercih edin.
Sıkça Sorulan Sorular
“Yerleşik Öğeleri Genişletme” dersi ücretsiz mi?
Evet — “Yerleşik Öğeleri Genişletme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve HTML Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. HTML Academy kursu toplamda 4 dersten oluşur.
“Yerleşik Öğeleri Genişletme” dersinde ne öğreneceğim?
Mevcut öğeleri is özniteliğiyle özelleştirin HTML Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
HTML Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te HTML Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Yerleşik Öğeleri Genişletme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu HTML Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her HTML Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- customElements.define ile Öğeleri Tanımlama
- connectedCallback ve disconnectedCallback
- İzlenen Öznitelikler ve attributeChangedCallback
- Yerleşik Öğeleri Genişletme