方法一:
直接取消scoped
- scoped的作用是防止样式冲突,当前页面/组件写的类名与对应的样式只会作用在当前的页面/组件
- 取消了scoped以后,页面的样式将会作用到全局。
- 这样会带来的问题是,如果当前组件/页面的类名和其他页面的类名冲突的话会导致页面间样式冲突。最容易出现的问题就是:
- 当打开某个页面,样式正常,但是跳转到某个固定页面后再回到这个页面时,页面的样式很可能被那个特定的页面覆盖。
- 这样出现的BUG如果不熟悉代码的人,很难复现该BUG,也就难以修复
方法二:
在当前页面/组件重新写一个style标签,专门用来写改写UI库中的样式。这样也会出现方法一中的问题。但是想要样式不冲突。可以使用如下的方法:
- 使用scss/less等预编译方法,通过父子标签间的关系写样式,这样编译后的css样式将会按照父子标签间的层级关系展示,父标签命名得当完全可以避免组件/页面间样式冲突的问题
方法三:
直接在scoped内写样式,根据父子标签的关系使用深度选择器:
如在less预编译语言中:
.father{ /deep/ .child{ color:red; } }
在scss预编译中:
.father { >>> .son{ color:red; } }