我是 Web 组件的新手,所以不确定是否有一个简单的答案或最佳实践。
如果我想创建一系列具有封装样式的重复元素,如何避免与每个元素重复样式块。
我正在使用的代码的简化版本是:
<ul id="wrapper"></ul>
<template id="template">
<style>
li { color: red }
</style>
<li></li>
</template>
<script>
var wrapper = document.getElementById('wrapper');
var tpl = document.getElementById('template');
var shadow = wrapper.createShadowRoot();
var arr = ['a', 'b', 'c'];
for(var i = 0, ii = arr.length; i < ii; i++) {
tpl.content.querySelector('li').textContent = arr[i];
var clone = document.importNode(tpl.content, true);
shadow.appendChild(clone);
}
</script>
我遇到的问题是 shadow DOM 每个都有一个重复的样式块<li>
,并且不确定最好的解决方法。
我尝试过嵌套模板,但要么永远无法工作,要么我做得不对。