Bagaimana Menggunakan HTML & Dengan Shadow DOM
Slot HTML adalah salah satu piawaian yang paling luar biasa yang dibuat oleh W3C. Gabungkan itu dengan standard W3C lain yang dipanggil templat, dan anda mempunyai ramuan hebat untuk bekerja dengan. Mampu untuk membuat dan menambah elemen HTML ke halaman menggunakan JavaScript adalah tugas yang penting dan penting.
Ia berguna apabila coretan kod terpaksa muncul hanya pada masa-masa tertentu, atau apabila anda tidak mahu menaip ratusan unsur HTML berstruktur yang sama tetapi mahu automasi proses itu.
Mencipta elemen HTML dalam JavaScript adalah tidak begitu wajar. Ia adalah masalah yang perlu diperiksa dan semak semula jika anda telah menutup semua tag, meletakkannya dalam urutan yang betul, semua dalam semua, hanya ada juga banyak untuk menaip dan menjejaki. Walau bagaimanapun, kemelut ini, mendapat penyelesaian apabila tag muncul. Sekiranya ada sesuatu yang perlu ditambah ke halaman secara dinamik, anda boleh memasukkannya ke dalam
elemen.
Dalam catatan ini, saya akan menunjukkan kepada anda bagaimana anda boleh menggunakannya
dan tag bersama dengan JavaScript buat kilang meja mini HTML yang boleh mencipta dan menampung beratus-ratus jadual yang sama.
The
dan
tag
The tag memegang kod HTML itu tidak akan diberikan oleh penyemak imbas sehingga ia ditambah dengan betul pada dokumen itu, menggunakan JavaScript. The
tag adalah a placeholder yang anda tambahkan ke DOM Shadow yang boleh dibuat dari kandungan elemen.
A DOM Shadow adalah serupa dengan DOM biasa (model dokumen dipecahkan daripada HTML). Ia mencipta pokok sampingan (pokok Shadow DOM), yang mempunyai a akarnya sendiri dan juga boleh mempunyai gaya sendiri.
Apabila anda memasukkan pokok Shadow DOM menjadi elemen dalam dokumen utama - elemen kemudiannya akan dipanggil hos bayangan -, semua elemen kanak-kanak hantu bayangan yang ditandai dengan slot
atribut (tidak sama dengan yang disebutkan di atas
tag) akan mengambil tempat mereka dalam subtree yang baru dimasukkan.
The Shadow DOM, sebagai penulisan artikel ini (Julai 2017), adalah disokong hanya dalam pelayar berasaskan WebKit- dan Blink tetapi anda boleh menyemak status penyokong sebenar pada CanIUse pada bila-bila masa.
Menyediakan HTML
Masih membingungkan? Mari lihat beberapa kod, bermula dengan elemen.
Dalam Di dalam templat, Saya juga telah menambah beberapa gaya asas untuk jadual, menggunakan Di luar templat, terdapat dua Setiap Sekarang, semua yang anda lihat pada halaman adalah rentetan teks yang terkandung dalam rentang, jadi kita perlu menambah beberapa JavaScript juga. Menggunakan Javascript, kita masukkan jadual dari dalam templat ke dalam kedua-dua div sebagai pokok DOM Bayangan. Selepas penyisipan, rentang akan dimasukkan ke dalam slot masing-masing di dalam jadual dan memaparkan tajuk lajur atau nilai sel yang dikehendaki. Hasilnya akan dua jadual yang dijana secara automatik yang menggunakan templat yang sama. Pertama, kita perlu menyemak jika DOM Shadow disokong dalam pelayar pengguna. The Kami membuat pembolehubah peribadi yang dipanggil Di dalam Disana ada dua Kemudian kami tambah salinan kandungan templat ke pokok Shadow DOM menggunakan Dan, jadual HTML dinamik kami siap, berikut adalah hasilnya seperti di Chrome:, ada
kami akan gunakan sebagai pelan tindakan untuk mewujudkan beberapa jadual yang akan ditambah kepada dokumen. Disana ada
unsur di dalam sel jadual ( dan ) bertindak sebagai pemegang tempat untuk tajuk lajur dan nilai sel. Setiap slot mempunyai unik nama
atribut itu mengenal pasti.
tag.
, untuk dua jadual berasingan yang kami mahu tambahkan pada halaman.
elemen mempunyai a
slot
atribut nilai yang mana sama dengan nama
nilai yang sepadan dengannya
tag di dalamnya .
Melampirkan pokok DOM Bayangan
attachShadow ()
kaedah melampirkan pokok DOM Bayangan ke elemen dan mengembalikan nod akar pokok DOM Shadow tersebut. The jika
syarat dalam kod di bawah semak jika penyemak imbas menyokong kaedah ini dengan menguji jika divs pada halaman mempunyai attachShadow
kaedah. // semak jika Shadow DOM disokong jika ('attachShadow' dalam document.createElement ('div')) else console.warn ('attachShadow not supported');
templateContent
itu berfungsi sebagai rujukan kepada kandungan template. jika ('attachShadow' dalam document.createElement ('div')) let templateContent = document.querySelector ('templat') kandungan; biarkan divs = document.querySelectorAll ('div'); divs.forEach (function (div) // inside loop); lain console.warn ('attachShadow tidak disokong');
untuk setiap
gelung, pokok DOM Shadow adalah melekat pada setiap div (div.attachShadow (mode: 'open')
).mod
pilihan untuk attachShadow
: buka
dan ditutup
. Jika ditutup
telah dipilih nod akar pokok DOM Shadow akan menjadi tidak boleh diakses ke luar elemen DOM dan objek.templateContent.cloneNode (benar)
kaedah. jika ('attachShadow' dalam document.createElement ('div')) let templateContent = document.querySelector ('templat') kandungan; biarkan divs = document.querySelectorAll ('div'); divs.forEach (function (div) div.attachShadow (mode: 'open'). appendChild (templateContent.cloneNode (true))); lain console.warn ('attachShadow tidak disokong');