我刚刚用custom-style
打了一堵墙。不幸的是,似乎任何mixins和变量都应用于Light DOM中匹配的元素的后代。另一方面,:root
选择器将vars和mixins应用于所有自定义元素。
没有中间地带可以设置风格,例如。任何具有给定类等的自定义元素?例如,我想要
<style is="custom-style">
my-element.important {
--border-color: red;
}
</style>
为给定类的<my-element>
的每个实例设置变量。目前它仅适用于Light DOM(用于文档级样式)和Local DOM(在其他元素中设置变量/ mixins时)中的元素。它也不适用于:root my-element
或:root /deep/ my-element
或html /deep/ my-element
我已经准备了Plunker的复制品。
答案 0 :(得分:1)
正如@lozandier和Karl Polymer's Slack channel所指出的那样,解决方案非常简单。
对于文档级样式,必须使用:root
选择器
<style is="custom-style">
:root {
my-element.important {
--border-color: red;
}
}
</style>
对于元素内部的样式,有必要使用:host
代替
<dom-module>
<template>
<style>
:host {
my-element.important {
--border-color: red;
}
}
</style>
</dom-module>
</template>