Vue中的scoped

news/2024/7/10 2:34:54 标签: vue, javascript, html, css
htmledit_views">

什么是scoped

html" title=vue>vue文件中的 style 标签上,有一个特殊的属性:scoped。当一个 style 标签拥有 scoped 属性时,它的 CSS 样式就只能作用于当前的组件,也就是说,该样式只能适用于当前组件元素。通过该属性,可以使得组件之间的样式不互相污染。如果一个项目中的所有 style 标签全部加上了scoped,相当于实现了样式的模块化。

scoped实现原理

转译前:

html"><style scoped>
.example {
 color: red;
}
</style>
<template>
 <div class="example">hi</div>
</template>

转译后: 

html"><style>
.example[data-v-5558831a] {
 color: red;
}
</style>
<template>
 <div class="example" data-v-5558831a>hi</div>
</template>

PostCSS 给一个组件中所有的 DOM 添加了一个独一无二的动态属性,然后给 CSS 选择器额外添加了一个对应的属性来选择该组件中的 DOM,这种做法使得样式只作用于含有该属性的 DOM ——组件内部 DOM 。

这样如果使用了 Ant Design for Vue 或者 Element UI 等第三方组件,就会出现 CSS 设置不起效的问题,无法通过 CSS 修改组件的样式。可以使用下面的方法来解决:

scoped穿透

当我们引入第三方组件库时(如使用html" title=vue>vue-awesome-swiper实现移动端轮播),需要在局部组件中修改第三方组件库的样式,而又不想去除 scoped 属性造成组件之间的样式覆盖。这时我们可以通过特殊的方式穿透 scoped

1. 使用 >>> 可以穿透 scoped 属性,修改其他第三方组件的样式。

html"><style scoped>
  外层 >>> 第三方组件 {
    样式
  }
</style>

2. 使用曲线救国的一个方法,用两个 style 标签,一个带 scoped 属性,一个不带 scoped 属性,用来修改第三方组件的样式。

html"><style>
  /* 全局样式 */
</style>

<style scoped>
  /* 局部样式 */
</style>

3. 使用 sassless 的样式穿透 /deep/

html"><style scoped>
/deep/ .title {
  color: #888;
}
</style>

4. 还有一种就是不使用 scoped 属性,通过在最外层加 id 或者 class 的形式进行区分。


http://www.niftyadmin.cn/n/1527292.html

相关文章

WIN10 PING不通 开启防火墙ICMP回显

今天在Windows防火墙→高级设置→入站规则→文件和打印机共享&#xff08;回显请求 - ICMPv4-In&#xff09;→在【已启用】上打勾后还是没有icmp回显。经过一翻努力的查找和试探&#xff0c;终于找到了另一个回显请求。那就是虚拟机监控(回显请求-ICMPv6-In),见下图。开启了虚…

Vue中$bus事件总线

不说废话&#xff0c;直接看用法&#xff1a; 1、在 main.js 中将 $bus 绑定到 vue 原型上 Vue.prototype.$busnew Vue() 2、在需要传递信息的组件上将一个方法发射出去&#xff0c;并需要在某个条件激活这个方法 <div click"busclick"> </div> meth…

Vue核心知识总结(超级经典,实时更新)

喜欢的小伙伴点赞收藏哦1、Vue基础入门1.1、脚手架环境安装Vue1.2、创建Vue项目1.3、精简项目代码2、Vue的核心概念2.1、指令2.1.1、文本指令2.1.2、流程控制2.1.3、显示与隐藏2.1.4、属性绑定2.1.5、事件处理2.1.6、表单绑定2.1.7、编译处理2.1.8、插槽2.2、选项2.2.1、数据选…

安装程序无法自动安装Virtual Machine Communication Interface Sockets(VSock)驱动程序

关于 VMware Tools安装时出现的问题的解决办法&#xff1a; 安装时出现问题对话框&#xff1a; 安装程序无法自动安装Virtual Machine Communication Interface Sockets&#xff08;VSock&#xff09;驱动程序。必须手动安装此驱动程序 可以通过安装windows更新解决&#xf…

华为路由器交换机快捷键大全

彩色快捷键是我最喜欢用的4个。 CTRL_A 将光标移动到当前行的开头。 CTRL_B 将光标向左移动一个字符。 CTRL_C 停止当前正在执行的功能。 CTRL_D 删除当前光标所在位置的字符。CTRL_E 将光标移动到当前行的末尾。 CTRL_F 将光标向右移动一个字符。 CTRL_H 删除光标左侧的一个…

开启windows 10的远程桌面服务

windows操作系统中有一个远程桌面服务&#xff0c;很好用。今天介绍一下如何用启用。 我这里主要是用命令启用&#xff0c;因为windows 10的最新版本的系统&#xff0c;属性很不不友好了&#xff0c;所以我这里全部用命令操作。图形操作的有空再说。 这个功能是一个服务&…

Vue中的侦听器(watch)

watch概述 监测 Vue 实例变化的一个表达式或方法。回调函数得到的参数为新值和旧值&#xff0c;用一个函数取代。 简洁的说&#xff1a;watch的作用可以监控一个值的变换&#xff0c;并调用因为变化需要执行的方法。可以通过watch动态改变关联的状态。 普通监听 <body&g…

Vue中的插槽(v-slot)

在 2.6.0 中&#xff0c;我们为具名插槽和作用域插槽引入了一个新的统一的语法 (即 v-slot 指令)。它取代了 slot 和 slot-scope 这两个目前已被废弃但未被移除且仍在文档中的 attribute。 具名插槽 相对匿名插槽组件slot标签带name命名的 书写组件&#xff1a; Vue.compone…