Thi*_*tes 10 javascript html5 web-component shadow-dom
我正在学习带阴影根的Web组件,如果可以通过开箱即用的代码加载外部样式表,似乎无法在谷歌上找到它?我还没有使用聚合物或任何其他Web组件库(还).代码如下:
<script src="../../libs/jquery-2.1.1.min.js"></script>
<script>
var hollaProto = Object.create(HTMLElement.prototype);
hollaProto.createdCallback = function () {
var shadow = this.createShadowRoot();
var content = document.querySelector('link[rel=import]').import.querySelector("div");
$("button[data-command=holla]", content).on("click", function () { alert("Holla!"); });
shadow.appendChild(content);
};
var hollaWidget = document.registerElement("holla-back", {
prototype: hollaProto
});
</script>
<div class="holla-back">
<button data-command="holla">Holla!</button>
</div>
Run Code Online (Sandbox Code Playgroud)
如果我将我的链接标记放在第一个脚本标记之上,我将整个网络时代设置为样式,而不是Web组件.
如果我把它放在它下面div.holla-back没有任何风格.
如何将外部样式表与Web组件一起使用?
根据规范,链接标签在Shadow DOM中是惰性的.但是,您可以使用@import,但它有自己的性能问题.
Polymer解决这个问题的方式是查看link标签并使用xhr它们加载这些样式并应用它们.
编辑:
从事Shadow DOM工作的人都知道这个缺点,需要修复它.希望将来我们能够提供一个支持外部样式表的系统.