シナリオ
カスタム属性を使用してコンポーネントを区別しようとしています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 を作成する前に、何か不足していないか、問題を考えすぎていないかお尋ねしたいと思います。