[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