**用途:** 防止全局同名CSS污染 ,例如webpack打包时,两个不同页面的同名class,会进行样式的合并,造成样式的混乱,这是加上scope属性,可以解决,
**原理:** 在标签加上v-data-something属性,再在选择器时加上对应\[v-data-something\],即CSS带属性选择器,以此完成类似作用域的选择方式
缺点:
(1)由于只是通过属性限制,类还是原来的类,所以在其他地方对类设置样式还是可以造成污染。
(2)添加了属性选择器,对于CSS选择器的权重加重了。
(3)外层组件包裹子组件,会给子组件的根节点添加data属性。在外层组件中无法修改子组件中除了根节点以外的节点的样式。比如子组件中有box类,在父节点中设置样式,会被编译为
~~~
.box[data-v-x]
~~~
的形式,但是box类所在的节点上没有添加data属性,因此无法修改样式。
**那么当我们使用了一个外部框架,同时又给 style 添加了 scope 属性,如何修改外部框架的样式呢?**
> **可以使用/deep/或者>>>穿透CSS,这样外层组件设置的box类编译后的就为\[data-v-x\] .box了,就可以进行修改。**
例如: 加/deep/可以修改,子组件的样式
~~~
/deep/ .el-table .red-row {
background: #ffc2c2;
}
~~~
~~~
.el-table >>> .red-row {
background: #ffc2c2;
}
~~~
- vue
- 为什么要学vue
- 数据双向绑定
- vue指令
- v-bind创建HTML节点属性
- v-on绑定事件
- v-cloak
- v-text
- v-for和key属性
- v-if和v-show
- 案例1
- 自定义指令
- vue样式
- vue生命周期
- vue过滤器
- 自定义键盘修饰符
- 跨域请求
- vue组件
- 组件基础
- 引入vue文件组件
- 引入render函数作为组件
- 兄弟间组件通信
- 组件函数数据传递练习
- 路由
- 数据监听
- webpack
- vue校验
- vue笔记
- form表单中input前部分默认输入,切不可修改
- mixins
- 部署到nginx
- scope
- render
- 下载文件
- vue动态组件
- axios
- Promise
- vue进阶
- node-vue-webpack搭建
- vue事件
- 插槽
- vuex
- vuex基础
- vuex命名空间
- HTML递归?
- this.$nextTick异步更新dom
- elementui
- table
- 修改element ui样式
- form
- 优质博客
- vuex state数据与form元素绑定
- es6
- Promise