【问题标题】:Remove or Modify CSS Classname "svelte-" Prefix删除或修改 CSS 类名“svelte-”前缀
【发布时间】:2020-06-10 09:16:52
【问题描述】:

我用 Svelte 编写了一个聊天机器人小部件,它应该可以集成到网站中。网站所有者获取编译后的 JS 和 CSS 文件。到目前为止一切顺利。

但是每个网站所有者都必须能够覆盖 CSS 文件中的样式。没问题,例如,他可以简单地覆盖标题的背景颜色:

.chat-widget.svelte-kcmu8l header.svelte-kcmu8l {
    background-color: #fff;
}

但是: 例如,假设我修复了一个错误并重新编译了小部件。让我们进一步假设我的更改导致哈希 kcmu8l 发生更改,并且网站所有者之前所做的调整不再起作用。

如何防止这种情况发生?是否可以省略svelte-xxx 类或定义自己的哈希值?

【问题讨论】:

  • 为了选择正确的元素,您可以或不能在此处省略哪些内容,取决于 HTML 结构。可以只有一个.chat-widget 元素吗?里面只有一个header?那么它不应该在任何一个地方都需要特定的svelte-* 类。 (您可能需要增加规则的特异性,但是当这些类被从中删除时,如果您不想使用 !important,仍然能够覆盖颜色。)跨度>
  • (您也可以通过属性选择器进行部分类匹配。)
  • 谢谢@CBroe。特异性和独特的类名为我做这件事。
  • 请检查 github.com/sveltejs/svelte/issues/2900#issuecomment-701644971 搜索此行 this.id = svelte-${hash(ast.css.content.styles)} 并更改。

标签: css svelte-3


【解决方案1】:

您必须在外部样式表中维护不希望散列的 CSS 类。它们不能出现在 Svelte 组件中。

为防止 Svelte 散列和修改您的 CSS 名称,您需要从内联 Svelte 组件中移除相关的 CSS 样式,然后在您的应用实例化页面上加载的任何外部 CSS 样式表中维护这些类。

不使用 Svelte 生成的类名是合法的需求,例如允许您的嵌入式应用程序的样式被覆盖。

【讨论】:

    猜你喜欢
    • 2018-03-18
    • 2013-06-22
    • 2023-03-13
    • 1970-01-01
    • 2017-04-03
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    相关资源
    最近更新 更多