美文网首页
vue使用scoped 实现样式只在当前界面生效,解决样式污染的

vue使用scoped 实现样式只在当前界面生效,解决样式污染的

作者: CoderZb | 来源:发表于2020-02-18 10:02 被阅读0次

    vue开发中经常会用到这种情况:
    A页面有类选择器 name_box,B界面也设置了name_box,注意到没有,这两个类选择器名字一模一样。
    当A界面push到B界面的时候,查看B界面的元素,会有一个特别奇怪的现象:你会发现A界面的样式也会应用到B界面上。只是会由于权重的关系,两个name_box中 重叠的样式,权重高的会生效。两个name_box中不重叠的样式,都会生效。

    对以上问题详细举个例子,例如:

    • A界面的类选择器
    .name_box{
    font-size:18px;
    background-color:red;
    }
    
    • B界面的类选择器
    .name_box{
     background-color:blue;
    }
    

    那么最终B界面name_box的样式为,字号18px背景颜色为蓝色。但是我们明明只是想设置背景颜色为蓝色,不要设置字号。


    解决办法1:

    A和B类选择器名字不要一样。

    解决办法2:使用scoped实现,样式只在当前界面生效,解决以上样式污染的问题

    以B界面为例

    <style scoped>
     .name_box{
       background-color:blue;
     }
    </style>
    
    总结:对比两个解决办法,当然是使用scoped修饰style来解决以上问题是最合理的。因为你不用再顾虑写一个类选择器的时候,想想其余页面是否也有该类选择器,类选择器一样的话会冲突的问题了。

    相关文章

      网友评论

          本文标题:vue使用scoped 实现样式只在当前界面生效,解决样式污染的

          本文链接:https://www.haomeiwen.com/subject/sagwfhtx.html