[toc]
## scoped原理
scoped的原理是使用属性选择器和类名进行交集选择,比如`.wrapper[data-v-xxx]{}`
这样在scoped里写的css都会有一个随即生成的`[data-v-xxx]`
## 为什么需要穿透scoped?
scoped看起来很美,但是,在很多项目中,会出现这么一种情况,即:引用了第三方组件,需要在组件中局部修改第三方组件的样式,而又不想去除scoped属性造成组件之间的样式污染。此时只能通过特殊的方式,穿透scoped。
```
<style scoped>
外层 >>> 第三方组件 {
样式
}
</style>
```
通过 >>> 可以使得在使用scoped属性的情况下,穿透scoped,修改其他组件的值。
>[danger] 以上为stylus的穿透方式,如果是sass/less,穿透符为 `/deep/`
### 第二种方式
其实,还拥有一种曲线救国的方法,即在定义一个含有scoped属性的style标签之外,再定义一个不含有scoped属性的style标签,即在一个vue组件中定义一个全局的style标签,一个含有作用域的style标签:
```
<style>
/* global styles */
</style>
<style scoped>
/* local styles */
</style>
```
此时,你只需要将修改第三方样式的css写在第一个style中即可。
- 空白目录
- vue-cli
- runtime-only
- Vue对比React
- 组件与实例
- data-binding
- computed的set和get
- scoped
- 事件
- 自定义指令
- 插件
- keep-alive
- $nextTick与生命周期
- 路由
- Vue.use(Router)
- this.$router编程式导航
- this.$route
- new Router
- routes
- mode
- linkClass
- scrollBehavior
- query
- fallback
- base
- router-view
- router-link
- 路由守卫
- 左右切换
- 滚动
- FAQ
- vuex
- 适用
- new Vuex.Store
- state
- mutations
- getters
- actions
- strict
- plugins
- modules
- namespace
- this.$store
- commit
- dispatch
- mapXX
- eventBus
- Vue工程相关
- 引用路径的简化
- css-module
- vue-loader
- 异步加载
- 支持jsx
- 让webpack支持对vuex的热替换
- .eslintrc