关于 Vue 页面跳转时样式会出错的记录

389 阅读1分钟

最近在用 Vue 开发一个网站,部分页面从主页进入路由,然后再从路由回退到主页,路由页面的样式会残留在主页上,需要刷新主页才能正常。

解决办法

1. 在 Vue 文件的 style 中,使用 scoped

<style scoped>
...
...
</style>

这个可选 scoped 属性会自动添加一个唯一的属性 (比如 data-v-21e5b78) 为组件内 CSS 指定作用域,也就是给你定义的名字前加一串哈希值,编译的时候 .list-container:hover 会被编译成类似 .list-container[data-v-21e5b78]:hover。

2. 使用 src 引入 css 文件

一开始,我在 style 标签上添加 scoped 属性,问题依然没有解决,然后我再通过更改 css 文件的引入方式,最终将问题解决,我使用 src 引入 css 文件,而不是使用 @import 的方式。

<style scoped>
@import "~@scss/xx/xxx";
</style>

一开始使用这种引入方式,问题依然存在,原因是:@import引入的css,会被编译为全局样式。因此如果不同的 css 文件里面取用的类名相同的话,很可能会造成样式的错误调用。

<style src="./css/xxx.css">
...
...
</style>

通过这个方式,问题解决了。