vue 修改第三方样式库并不影响别的页面

原文链接 https://vue-loader-v14.vuejs.org/zh-cn/features/scoped-css.html?q=

以下介绍比较啰嗦,大家如果不想看可以直接跳到官方文档↑↑↑

1.需要场景

当 在vue中 style 标签有 scoped 属性时,它的 CSS 只作用于当前组件中的元素,防止样式的全局污染,尤其是在我们引用第三方库的,可能它们没有达到我们的要求,我们需要去修改第三方的样式,如果我们不加scoped的时候可能在别的页面也会修改我们的样式。

2.解决方案

  • 方法1(需要大量修改样式)
    我们知道在一个vue的页面中,可以使用多个style标签来设置多个样式,我们将第一个样式设置为scoped,然后在写一个样式来使用修改第三方的样式,如图:
    在这里插入图片描述
    但是这样我们需要注意的问题是,要将样式包住,每个页面都有有一个不同的大的类名,如a.vue 页面我们设置.containerA{ },b.vue { } 页面我们设置类名.cintainerB{ } 这样防止我们的样式在别的页面污染,如果所有页面都需要修改的话,那么我们直接见一个全局的文件,将css样式写在全局文件中
    这样写的的时候可以将样式设置到整个项目中的所有文件:
    在这里插入图片描述
    在这里插入图片描述
    可以看到home和about中的样式都修改了。

    方法2(不需要大量修改样式并没有使用css样式处理器)
    如果我们没有大量的样式修改样式的时候,并且没有使用scss,stylus,less预处理器的时候,那么我们可以使用>>>这个符号来全局设置类,但是样式只能穿透到它的子组件中,我下面来demo让大家看的更详细一些
    在这里插入图片描述

在这里插入图片描述

所以只是父组件中的样式改变了,而子组件的样式中的样式并没有改变。

加上>>>后:
在这里插入图片描述
在这里插入图片描述
我们可以看到样式直接设置到子组件的类名上了,但是当我们使用了css预处理器后>>>
这个就不会管用了
在这里插入图片描述
在这里插入图片描述
可能是处理器解析不出来>>>这个符号吧~

方法3(不需要大量修改样式并使用了css样式处理器)
它跟方法2是一样的,也是只是在将样式设置到子组件下 只需要将>>>修改为/deep/
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue项目中,样式污染是指当页面增加时,重复调用同一种组件会造成样式冲突的问题。这个问题主要有两个原因导致。首先,使用了同一种组件,但在CSS中对该组件设置了不同的样式。其次,子元素的根元素会继承父元素的ScopeId。为了解决这个问题,有几种方法可以尝试。 一种解决方案是在每个Vue页面的style标签中添加scoped属性。scoped的原理是给CSS和HTML添加一个唯一标识,并根据权重来实现目的。scoped的作用是使得Vue组件中的样式不会影响其他Vue组件,但不是让Vue组件样式不受外界影响。然而,scoped需要谨慎使用。在需要修改公共组件(第三方或项目中定制的组件)的样式时,scoped会导致一些麻烦。针对这种情况,可以在style标签中使用两个样式,将修改公共组件的样式放在一个style标签中,而将其他样式放在另一个带有scoped属性的style标签中。 另一种解决方案是使用不同的class来区分不同的表格分页控件。比如,对于sos表格,可以在template中设置一个特殊的class,然后在CSS样式中使用该class名和属性名称来设置分页的背景颜色。对于emergencytask表格,可以在template中设置一个不同于其他表格分页的class,然后在CSS样式中使用该class名和属性名称来设置分页的背景颜色。这样,可以避免样式的重叠和干扰。 综上所述,为了解决Vue项目中的样式污染问题,可以使用scoped属性来限制组件样式影响范围,同时要注意scoped的使用场景。另外,可以使用不同的class来区分不同的表格分页控件,以避免样式的冲突。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [浅谈VUE中的样式污染问题](https://blog.csdn.net/qq_33204193/article/details/87886269)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月落星河°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值