Razor 类库中的 Blazor 组件CSS 隔离

问题描述

我创建了一个组件:

MyComponent.razor

添加一个 css 文件

MyComponent.razor.css

css 文件嵌套在 Visual Studio 中的组件文件下,所以我知道没有拼写错误。 这是在 Razor 类库中。

我发现了一些奇怪的行为,我将其追溯到与引导类的类名冲突,该类也加载到我的 Index.cshtml 文件中。

我在我的组件中重命名了我的类名以避免冲突,一切都按我预期的那样工作。

但是,我的理解是对 css 文件使用这种命名约定意味着 HTML 中的所有类名和 CSS 文件中的类名都会得到这个随机的 b-??????????后缀/属性以避免此类名称冲突。

我是否误解了 CSS 隔离?

解决方法

文档说

对于每个样式化的组件,都会附加一个 HTML 属性,格式为 b-<10-character-string>

您可以在浏览器中检查 {Project Name}.styles.css 文件以查看生成的 css,例如

h1[b-3xxtam6d07] {
    color: brown;
}

确保包含 ::deep 以便 CSS 到达 MyComponent 的子组件。

这是来源:https://docs.microsoft.com/en-us/aspnet/core/blazor/components/css-isolation?view=aspnetcore-5.0#css-isolation-bundling

,

CSS 隔离仅适用于 .razor 页面,因此选择器仍会从其他 .css 文件中找到没有 ::deep 的子组件