场景
我试图通过使用自定义属性来区分组件component
。例子:
<div component="A">
<span>Hello</span>
</div>
设计这个很容易:
[component=A] span {
color: red;
}
问题
这是棘手的部分。为了确保组件不会产生副作用,它不应该对子组件中的任何内容进行样式设置:
<div component="A">
<span>This should be styled by component=A styles</span>
<div component="B">
<span>This should NOT be styled by component=A styles</span>
</div>
</div>
完整示例
这是一个简单的例子。它定义了外部组件的结构和样式。
HTML
<div component="A">
<span>Component A (red)</span>
<div>
<span>Component A (red)</span>
</div>
<div component="B">
<span>Subcomponent B (black)</span>
<div>
<span>Subcomponent B (black)</span>
</div>
<div component="A">
<span>Subcomponent A (red)</span>
</div>
</div>
<span>Component A (red)</span>
</div>
CSS
[component=A] :not([component]) span {
color: red;
}
第一种方法
这是第一个幼稚的方法。
它有几个逻辑问题,但我想你明白我想要做什么。
我的感觉是,这对于纯 CSS 是不可能的。但在编写自定义 Javascript 之前,我想问你我是否遗漏了什么或过度思考了问题。