Vue.js documentation for Scoped CSS提及
您可以在同一个组件中包含范围和非范围样式
我构建了example application for vue-router
并使用了两个单个文件组件而不是示例的字符串模板 - 渲染是按预期进行的。
然后我尝试在组件中应用范围和非范围样式。在第一个我有
<style scoped>
div {
color: white;
background-color: blue;
}
</style>
<style>
body {
background-color: green;
}
</style>
和第二个
<style scoped>
div {
color: white;
background-color: red;
}
</style>
<style>
body {
background-color: yellow;
}
</style>
我们的想法是在选择特定路线时切换全身背景。
scoped
样式没问题 - 它们会根据路线而改变。
非范围的那些(截图来自Chrome Dev Tools):
/
的路径。)green
)background-color
的当前样式被覆盖。所有其他组件元素都已正确呈现(内容和范围样式)换句话说,看起来风格是堆叠的,之前覆盖的属性没有更新这是预期的行为吗?
答案 0 :(得分:0)
我为此打开了一个bug report,结果是预期的行为。报告摘要评论:
是的,这是预料之中的。 Vue(或更确切地说,webpack)不插入和 正如您所想的那样,删除这些样式。他们注入了 一旦组件渲染,就会移动头部,并且永远不会移除。
一种常见的模式是将所有CSS转义为单个.css文件 生产,这将产生相同的结果。
我在问题的背景下的总结:
style
被注入style
并覆盖之前的style
style
仍然是权威的。{/ li>
因此,我会依靠将body
类绑定到当前组件的data