将样式导入 Web 组件

新手上路,请多包涵

将样式导入 Web 组件的规范方法是什么?

以下给我一个错误 HTML element <link> is ignored in shadow tree

 <template>
    <link rel="style" href="foo.css" />
    <h1>foo</h1>
</template>

我使用影子 DOM 插入它,使用以下内容:

 var importDoc, navBarProto;

importDoc = document.currentScript.ownerDocument;

navBarProto = Object.create(HTMLElement.prototype);
navBarProto.createdCallback = function() {
  var template, templateClone, shadow;

  template = importDoc.querySelector('template');
  templateClone = document.importNode(template.content, true);

  shadow = this.createShadowRoot();
  shadow.appendChild(templateClone);
};

document.registerElement('my-nav-bar', {
  prototype: navBarProto
});

原文由 Ben Aston 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 266
2 个回答

现在直接 <link> 标签在 shadow dom 中被支持。

可以直接使用:

 <link rel="stylesheet" href="yourcss1.css">
<link href="yourcss2.css" rel="stylesheet" type="text/css">

它已被 whatwgW3C 批准。

在 shadow dom 中使用 css 的有用链接:

直接css链接可以用在shadow dom中。

原文由 Himanshu sharma 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您需要在 <template> 标签内放置外部样式,您可以尝试

<style> @import "../my/path/style.css"; </style>

但是我觉得这将在创建元素 开始导入。

原文由 Jammer 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏