问题描述
我创建了一个组件:
MyComponent.razor
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 的子组件。
CSS 隔离仅适用于 .razor 页面,因此选择器仍会从其他 .css 文件中找到没有 ::deep
的子组件