美文网首页
掌握Shadow DOM(译)

掌握Shadow DOM(译)

作者: 打静爵 | 来源:发表于2019-08-18 21:02 被阅读0次

了解Web组件和自定义元素以及Shadow DOM如何工作,使我们能够封装的可重用组件。下面这个例子展示了如何使用这些技术创建一个Web组件。

定义我们的标签

// blink.js
const Blink = (function() {
  "use strict";

  class Component extends HTMLElement {
    constructor() {
      super();
      // Create shadow root
      const shadow = this.attachShadow({
        mode: "open"
      });

      // Wrap text content with a span tag
      const wrapper = document.createElement("span");

      // Make a slot for text
      const slot = document.createElement("slot");
      slot.setAttribute("name", "content");
      wrapper.appendChild(slot);

      // CSS animation styles :动画效果
      const style = document.createElement("style");
      style.textContent = `
        @keyframes blink {
          0%   { visibility: hidden; }
          50%  { visibility: hidden; }
          100% { visibility: visible; }
        }
        /* :host selects shadow root host */
        :host { animation: 1s linear infinite blink; }
      `;

      // Append
      shadow.appendChild(wrapper);
      wrapper.appendChild(style);
    }
  }
  customElements.define("wc-blink", Component); // 不能直接使用 <blink> ,因为blink是保留关键字
})();

export { Blink };

使用

<script>
  import { Blink } from "./blink.js";
</script>

<wc-blink>
  <h1 slot="content">
    hello, I'm blinking!
  </h1>
</wc-blink>

如果想在普通浏览器中通过html文件快速查看代码效果,可以将blink.js直接以script形式引入,将blink.js底部的export { Blink } 去掉即可

实现效果:

blink效果

查看浏览器中DOM元素

浏览器中DOM元素

原文:这里

相关文章

网友评论

      本文标题:掌握Shadow DOM(译)

      本文链接:https://www.haomeiwen.com/subject/boydsctx.html