javascript - 多种预定义样式或动态更改内联样式?

标签 javascript html css web-component custom-element

我正在开发扑克牌的自定义元素。我使用 SVG 图像作为背景,并且希望它们在花色或等级属性更改时更改背景图像。

据我所知,有两种方法可以做到这一点 - 一种是使用“attributeChangedCallback”方法:

static get observedAttributes() {return ["suit", "rank"];}
attributeChangedCallback(name, oldValue, newValue) {
  this.style.backgroundImage = `url(...)`;
}

另一个是有很多CSS属性选择器:

:host([suit="clubs"][rank="4"]) {
  background-image: url(...);
}
:host([suit="clubs"][rank="5"]) {
  background-image: url(...);
}
...

它们都可以工作,但是 JS 方式添加了内联样式,我想阻止这种方式,而 CSS 方式非常大。 我需要考虑任何巨大的性能差异吗?

最佳答案

不应存在巨大的性能差异,或者仅当同一页面中有数百或数千个自定义元素时才存在。

在后一种情况下,您应该在操作条件下测试这两种解决方案,然后选择更好的。

如果不是这种情况,则取决于您的元素的管理方式:是否是同一团队维护 CSS 和 JS 文件。

关于javascript - 多种预定义样式或动态更改内联样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42892906/

相关文章:

html - Bootstrap 列有单独的滚动条

javascript - 在逐个测试的基础上开 Jest 模拟类方法

javascript - 在 Javascript 中使用 reduce() 打印两次或多次出现

javascript - live() 更改在 IE8 上的 jquery 1.4.2 中不起作用

javascript - 将鼠标悬停时的文本内容更改为 img alt 属性

java - 窗口内容大小不受 Window min -height -width 影响

javascript - 如何在这里摆脱代码重复(lint 错误)

javascript - 一起注释掉 HTML、CSS、Javascript 代码

javascript - jQuery 100%垂直滚动(滑动滚动)

html - 在 HTML/CSS 中设置选定的菜单项