1
我试图使用没有任何抽象它的框架的影子DOM,主要是为了了解它的错综复杂。我正在使用webcomponents.js填充,因此它可以跨浏览器工作。在阴影中使用<content>标记DOM
我已经设法创建了一个自定义元素,并设置了它的影子DOM,但由于某种原因<content></content>
标签没有包含预期的内容。
我希望这个例子来呈现为
Shadow DOM
Hello world
More Shadow
但它呈现为
Shadow DOM
More Shadow
缺少什么我在这里?
<script src="webcomponents-lite.min.js"></script>
<test-component>
<div>Hello world</div>
</test-component>
<template id="test-component">
<div>Shadow DOM</div>
<content></content>
<div>More shadow</div>
</template>
<script>
class TestComponent extends HTMLElement {
constructor() {
super();
var shadow = super.attachShadow({ mode: 'open' });
var template = document.getElementById('test-component');
var clone = document.importNode(template.content, true);
shadow.appendChild(clone);
}
}
customElements.define('test-component', TestComponent);
</script>
(这个例子是完整的,可运行作为一个完整的HTML文件,只要你有webcomponents-lite.min.js可用,或可在不.js文件在支持的浏览器中运行)
的'content'元件已被替换为'slot'元件。 – Alohci
有关使用“slot”元素和“slot”属性的示例,请参阅https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/slot#Use_ _in_ _to_make_a_doc_fragment_with_named_slots –
sideshowbarker