【发布时间】:2019-08-01 17:44:42
【问题描述】:
我正在关注 LitElement 指南 here,但似乎无法根据其属性计算自定义元素的样式值。
我希望我的元素以下列方式之一编写:
<my-element data="some values" darkmode></my-element>
<my-element data="some values"></my-element>
我想根据是否设置了dardmode 属性来设置元素的背景和文本颜色。
在我的 LitElement 类中,我创建了一个相应的属性并对其进行了初始化。但是,在静态样式中,this.darkMode 总是返回 false。我想我在这里遗漏了一些东西,但不确定是什么:
class MyElement extends LitElement {
static get properties() {
return {
data: { type: String },
darkMode: { type: Boolean }
};
}
static get styles() {
const background_color = this.darkMode ? css`#000` : css`#fff` ;
const text_color = this.darkMode ? css`#fff` : css`#333333`;
return [
css`
:host {
display: block;
}
.data-container {
font-family: "Roboto",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
background-color: ${background_color} !important;
color: ${text_color} !important;
}`
];
constructor() {
super();
this.data = "";
this.darkMode = false;
}
render() {
return html`
<div class="data-container">
<p>${this.data}</p>
</div>
`;
}
}
customElements.define('my-element', MyElement);
【问题讨论】:
标签: javascript css web-component lit-element