【发布时间】:2020-05-03 02:51:58
【问题描述】:
我有一个自定义的网络组件,它基本上是一个 SVG 图标:
<custom-icon>
<svg>{svg-stuff}</svg>
</custom-icon>
我希望能够通过像这样应用 CSS 来改变它的大小:
custom-icon {
width: 20px;
}
但我也希望在未应用 CSS 时有一个后备默认值。但是,当我内联一些 CSS,如 <custom-icon style="width:15px"> 时,它只会覆盖我之后应用的所有 CSS。如果没有自定义 CSS,如何才能让默认的“15px”仅适用?
MWE:
class CustomIcon extends HTMLElement {
constructor() {
super();
let size = "100px"
this.style.height = size;
this.style.width = size;
this.style.background = "firebrick"
this.style.display = "block"
}
}
window.customElements.define('custom-icon', CustomIcon);
custom-icon {
--icon-size: 50px;
height: var(--icon-size);
width: var(--icon-size);
}
<custom-icon />
【问题讨论】:
-
像这样向组件添加一个类
... 并将 CSS 标记声明更改为第一类:custom-icon { => .custom-class { 宽度:15px; } -
have a fallback default value when no CSS is applied这是什么意思?为什么不应用 css? -
如果你有内联样式,你的 css 必须使用
!important- 这是覆盖内联样式的唯一方法 - 但使用时要小心,因为它可能成为特异性噩梦 -
@MaksimTikhonov 你能相应地修改sn-p吗?我不确定你的意思
-
那么我想这样做的方法是将您的裸选择器作为您的默认值,然后为您的覆盖添加一个类
标签: javascript css web-component custom-element css-variables