<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          關(guān)于 shadow DOM 的用法!

          共 1666字,需瀏覽 4分鐘

           ·

          2022-05-29 14:52


          Web components 的一個重要屬性是封裝——可以將標記結(jié)構(gòu)、樣式和行為隱藏起來,并與頁面上的其他代碼相隔離,保證不同的部分不會混在一起,可使代碼更加干凈、整潔。其中,Shadow DOM 接口是關(guān)鍵所在,它可以將一個隱藏的、獨立的 DOM 附加到一個元素上。本篇文章將會介紹 Shadow DOM 的基礎(chǔ)使用。


          備注:Firefox(從版本 63 開始),Chrome,Opera 和 Safari 默認支持 Shadow DOM。基于 Chromium 的新 Edge 也支持 Shadow DOM;而舊 Edge 未能撐到支持此特性。


          Shadow DOM 允許將隱藏的 DOM 樹附加到常規(guī)的 DOM 樹中——它以 shadow root 節(jié)點為起始根節(jié)點,在這個根節(jié)點的下方,可以是任意元素,和普通的 DOM 元素一樣。



          這里,有一些 Shadow DOM 特有的術(shù)語需要我們了解:

          1.Shadow host:一個常規(guī) DOM節(jié)點,Shadow DOM 會被附加到這個節(jié)點上。2.Shadow tree:Shadow DOM內(nèi)部的DOM樹。3.Shadow boundary:Shadow DOM結(jié)束的地方,也是常規(guī) DOM開始的地方。4.Shadow root: Shadow tree的根節(jié)點。

          基本用法

          可以使用 Element.attachShadow() 方法來將一個 shadow root 附加到任何一個元素上。它接受一個配置對象作為參數(shù),該對象有一個 mode 屬性,值可以是 open 或者 closed,open 表示可以通過頁面內(nèi)的 JavaScript 方法來獲取 Shadow DOM。


          <body>    <popup-info>popup-info>  <popup-info>popup-info>  <script>    class PopUpInfo extends HTMLElement {      constructor() {        // 必須首先調(diào)用 super方法        super();        // 元素的具體功能寫在下面        var shadow = this.attachShadow({ mode: 'open' });        var wrapper = document.createElement('span');        wrapper.setAttribute('class', 'wrapper');        wrapper.textContent = 'hello world'                // 最后,將所有創(chuàng)建的元素添加到 Shadow root 上:        shadow.appendChild(wrapper);      }    }    // 定義新的元素    customElements.define('popup-info', PopUpInfo);script>body>


          我們著手實現(xiàn)一個示例來說明 Shadow DOM 在 custom element 中的實際運用。它包含一個span 標簽和里面的文字。


          1、創(chuàng)建 shadow root

          var shadow = this.attachShadow({ mode: 'open' });

          在構(gòu)造函數(shù)中,我們首先將 Shadow root 附加到 custom element 上。


          2、創(chuàng)建 shadow DOM 結(jié)構(gòu)

          var wrapper = document.createElement('span');

          接下來,我們會使用相關(guān) DOM 操作來創(chuàng)建元素的 Shadow DOM 結(jié)構(gòu)。


          3、將 Shadow DOM 添加到 Shadow root 上

          shadow.appendChild(wrapper);

          最后,將所有創(chuàng)建的元素添加到 Shadow root 上。


          4、使用我們的 custom element

          完成類的定義之后,使用元素也是一樣簡單,只需將 custom element 放在頁面上。


          瀏覽 72
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产手机在线操你啦 | 国产女同视频 | 国产日皮视频 | 成人黄色在线播放 | 69精品又硬又爽又粗少妇 |