Cara Menggunakan HTML & Dengan Shadow DOM
Slot HTML adalah salah satu standar paling luar biasa yang dibuat oleh W3C. Kombinasikan itu dengan standar W3C mengesankan lainnya yang disebut template, dan Anda memiliki ramuan yang luar biasa untuk dikerjakan. Dapat buat dan tambahkan elemen HTML ke halaman menggunakan JavaScript adalah tugas yang perlu dan penting.
Ini berguna ketika cuplikan kode harus hanya muncul pada waktu-waktu tertentu, atau ketika Anda tidak ingin mengetik ratusan elemen HTML yang terstruktur serupa tetapi ingin mengotomatiskan proses.
Membuat elemen HTML dalam JavaScript adalah tidak begitu diinginkan. Ini merepotkan harus memeriksa dan mengecek kembali jika Anda telah menutupi semua tag, menempatkannya dalam urutan yang benar, semuanya, hanya ada terlalu banyak untuk mengetik dan melacak. Namun kekacauan ini, punya solusi ketika tag muncul. Jika sesuatu perlu ditambahkan ke halaman secara dinamis, Anda dapat memasukkannya ke dalam
elemen.
Dalam posting ini, saya akan menunjukkan kepada Anda bagaimana Anda dapat menggunakan
dan tag bersama dengan JavaScript untuk buat pabrik tabel HTML mini yang dapat membuat dan mengisi ratusan tabel serupa.
Itu
dan
tag
Itu Tag memegang kode HTML itu tidak akan ditampilkan oleh browser sampai ditambahkan dengan benar ke dokumen, menggunakan JavaScript. Itu
tag adalah a placeholder yang Anda tambahkan ke Shadow DOM yang dapat dibuat dari konten elemen.
SEBUAH Bayangan DOM mirip dengan DOM biasa (model dokumen diuraikan dari HTML). Saya t menciptakan pohon scoped (Pohon Shadow DOM), yang memiliki a root sendiri dan dapat juga memiliki gaya tersendiri.
Ketika Anda memasukkan pohon Shadow DOM ke dalam elemen di dokumen utama - elemen tersebut kemudian akan disebut host bayangan -, semua elemen anak dari host bayangan yang ditandai dengan slot
atribut (tidak sama dengan yang disebutkan di atas
tag) akan mengambil tempat mereka di subtree yang baru dimasukkan.
The Shadow DOM, pada penulisan artikel ini (Juli 2017), adalah hanya didukung di browser berbasis WebKit dan Blink tetapi Anda dapat memeriksa status dukungan browser yang sebenarnya di CanIUse kapan saja.
Menyiapkan HTML
Masih membingungkan? Mari kita lihat beberapa kode, dimulai dengan elemen.
Dalam Di dalam templat, Saya juga menambahkan beberapa gaya dasar untuk tabel, menggunakan Di luar templat, ada dua Setiap Saat ini, yang dapat Anda lihat di halaman adalah string teks yang terkandung dalam bentang, jadi kita perlu menambahkan beberapa JavaScript juga. Menggunakan Javascript, kami menyisipkan tabel dari dalam templat ke dalam kedua divs sebagai pohon Shadow DOM. Setelah penyisipan, bentang ditempatkan ke slot masing-masing di dalam tabel dan menampilkan judul kolom atau nilai sel yang diinginkan. Hasilnya akan dua tabel yang dibuat secara otomatis yang menggunakan templat yang sama. Pertama, kita perlu memeriksa apakah Shadow DOM didukung di browser pengguna. Itu Kami membuat variabel khusus yang disebut Di dalam Ada dua Lalu kita tambahkan salinan konten templat ke pohon Shadow DOM menggunakan Dan, tabel HTML dinamis kami siap, berikut tampilannya di Chrome:, ada
baik gunakan sebagai cetak biru untuk membuat beberapa tabel yang akan ditambahkan ke dokumen. Ada
elemen di dalam sel tabel ( dan ) bertindak sebagai penampung untuk judul kolom dan nilai sel. Setiap slot memiliki keunikan nama
atribut itu mengidentifikasinya.
menandai.
, untuk dua tabel terpisah kami ingin menambahkan ke halaman.
elemen memiliki a
slot
atribut yang nilainya sama dengan nama
nilai sesuai mereka
tag di dalam .
Memasang pohon Shadow DOM
attachShadow ()
metode melampirkan pohon Shadow DOM ke elemen dan mengembalikan simpul akar pohon Shadow DOM itu. Itu jika
kondisi dalam kode di bawah ini memeriksa apakah browser mendukung metode ini dengan menguji apakah divs pada halaman tersebut memiliki attachShadow
metode. // periksa apakah Shadow DOM didukung jika ('attachShadow' di document.createElement ('div')) else console.warn ('attachShadow not didukung');
konten template
bahwa berfungsi sebagai referensi untuk isi templat. if ('attachShadow' di document.createElement ('div')) biarkan templateContent = document.querySelector ('template'). content; biarkan divs = document.querySelectorAll ('div'); divs.forEach (fungsi (div) // di dalam loop); else console.warn ('attachShadow not didukung');
untuk setiap
lingkaran, pohon Shadow DOM adalah melekat pada setiap div (div.attachShadow (mode: 'open')
).mode
pilihan untuk attachShadow
: Buka
dan Tutup
. Jika Tutup
dipilih simpul akar dari pohon Shadow DOM akan menjadi tidak dapat diakses ke luar elemen dan objek DOM.templateContent.cloneNode (true)
metode. if ('attachShadow' di document.createElement ('div')) biarkan templateContent = document.querySelector ('template'). content; biarkan divs = document.querySelectorAll ('div'); divs.forEach (fungsi (div) div.attachShadow (mode: 'open'). appendChild (templateContent.cloneNode (true))); else console.warn ('attachShadow not didukung');