Cách sử dụng HTML & Với Shadow DOM
Khe cắm HTML là một trong những tiêu chuẩn đáng chú ý nhất được thực hiện bởi W3C. Kết hợp điều đó với một tiêu chuẩn W3C ấn tượng khác được gọi là mẫu, và bạn có một pha chế tuyệt vời để làm việc với. Có thể tạo và thêm các phần tử HTML đến một trang sử dụng JavaScript là một nhiệm vụ cần thiết và quan trọng.
Nó hữu ích khi một đoạn mã phải chỉ xuất hiện vào những thời điểm nhất định, hoặc khi bạn không muốn gõ hàng trăm phần tử HTML có cấu trúc tương tự nhưng muốn tự động hóa quá trình.
Tạo các phần tử HTML trong JavaScript là không mong muốn. Thật rắc rối khi phải kiểm tra và kiểm tra lại nếu bạn đã bao gồm tất cả các thẻ, đặt chúng theo đúng thứ tự, tất cả, chỉ có quá nhiều để gõ và theo dõi. Sự hỗn loạn này, tuy nhiên, có một giải pháp khi mà thẻ xuất hiện. Nếu một cái gì đó cần phải được được thêm vào trang một cách linh hoạt, bạn có thể đặt nó bên trong
thành phần.
Trong bài đăng này, tôi sẽ chỉ cho bạn cách bạn có thể sử dụng
và các thẻ cùng với JavaScript để tạo một nhà máy sản xuất bảng HTML nhỏ có thể tạo và điền vào hàng trăm bảng tương tự.
Các
và
thẻ
Các thẻ giữ mã HTML sẽ không được hiển thị bởi trình duyệt cho đến khi nó được thêm đúng vào tài liệu, sử dụng JavaScript. Các
thẻ là một giữ chỗ bạn thêm vào Shadow DOM có thể được làm từ nội dung của thành phần.
Một Bóng DOM tương tự như một DOM thông thường (mô hình tài liệu được phân tích cú pháp từ HTML). Nó tạo ra một cây có vảy (một cây Shadow DOM), có một gốc của chính nó và cũng có thể có một phong cách của riêng mình.
Khi bạn chèn cây Shadow DOM vào một phần tử trong tài liệu chính - phần tử đó sẽ được gọi là máy chủ bóng -, tất cả các phần tử con của máy chủ bóng được đánh dấu bằng khe
thuộc tính (không giống như đã nói ở trên
thẻ) sẽ thay thế vị trí của chúng trong cây con mới được chèn.
Shadow DOM, khi viết bài viết này (tháng 7 năm 2017), là chỉ được hỗ trợ trong các trình duyệt dựa trên WebKit và Blink nhưng bạn có thể kiểm tra trạng thái hỗ trợ trình duyệt thực tế trên CanIUse bất cứ lúc nào.
Thiết lập HTML
Vẫn còn nhầm lẫn? Hãy xem một số mã, bắt đầu với thành phần.
Phía trong Bên trong mẫu, Tôi cũng đã thêm một số phong cách cơ bản cho bảng, sử dụng Bên ngoài mẫu, có hai Mỗi Ngay bây giờ, tất cả những gì bạn có thể thấy trên trang là các chuỗi văn bản có trong các nhịp, vì vậy chúng tôi cũng cần thêm một số JavaScript. Sử dụng Javascript, chúng tôi chèn bảng từ bên trong mẫu vào cả hai div như một cây DOM bóng. Sau khi chèn, các nhịp được đặt vào các vị trí tương ứng bên trong bảng và hiển thị tiêu đề cột hoặc giá trị ô mong muốn. Kết quả sẽ là hai bảng được tạo tự động sử dụng cùng một mẫu. Trước tiên, chúng tôi cần kiểm tra xem Shadow DOM có được hỗ trợ trong trình duyệt của người dùng không. Các Chúng tôi tạo một biến tùy chỉnh được gọi là Bên trong Có hai Sau đó chúng ta thêm một bản sao của nội dung mẫu đến cây Shadow DOM bằng cách sử dụng Và, các bảng HTML động của chúng tôi đã sẵn sàng, đây là cách đầu ra trông như thế nào trong Chrome:, có một
tốt sử dụng như một kế hoạch chi tiết cho tạo một số bảng sẽ được thêm vào một tài liệu. Có
các phần tử bên trong các ô của bảng ( và ) đóng vai trò giữ chỗ cho các tiêu đề cột và giá trị ô. Mỗi khe có một điểm duy nhất Tên
thuộc tính đó xác định nó.
nhãn.
, cho hai bảng riêng biệt, chúng tôi muốn thêm vào trang.
yếu tố có một
khe
thuộc tính của giá trị nào là bằng với Tên
giá trị tương ứng của họ
gắn thẻ bên trong .
Đính kèm cây Shadow DOM
Đính kèm ()
phương pháp gắn cây Shadow DOM vào một phần tử và trả về nút gốc của cây Shadow DOM đó. Các nếu
điều kiện trong đoạn mã dưới đây kiểm tra xem trình duyệt có hỗ trợ phương thức này hay không bằng cách kiểm tra xem các div trên trang có tập tin đính kèm
phương pháp. // kiểm tra xem Shadow DOM có được hỗ trợ hay không ('AttachShadow' trong document.createEuity ('div')) other console.warn ('Đính kèm không được hỗ trợ');
templateContent
cái đó phục vụ như là một tài liệu tham khảo đến nội dung của mẫu. if ('Đính kèm' trong document.createEuity ('div')) let templateContent = document.querySelector ('template'). content; let divs = document.querySelector ALL ('div'); divs.forEach (function (div) // bên trong vòng lặp); other console.warn ('Đính kèm không được hỗ trợ');
cho mỗi
vòng lặp, một cây Shadow DOM là gắn liền với mỗi div (div.attachShadow (mode: 'open')
).chế độ
tùy chọn cho tập tin đính kèm
: mở
và đóng cửa
. Nếu đóng cửa
đã được chọn nút gốc của cây Shadow DOM sẽ không thể truy cập ra bên ngoài các phần tử và đối tượng DOM.templateContent.cloneNode (đúng)
phương pháp. if ('Đính kèm' trong document.createEuity ('div')) let templateContent = document.querySelector ('template'). content; let divs = document.querySelector ALL ('div'); divs.forEach (function (div) div.attachShadow (mode: 'open'). appendChild (templateContent.cloneNode (true))); other console.warn ('Đính kèm không được hỗ trợ');