Scoped Style Overrides - daniel-qa/Vue GitHub Wiki
這個概念叫做 Scoped Style Overrides 或 Component Style Encapsulation。
更具體的術語:
Deep Selector(/deep/ 或 ::v-deep)— Vue 官方術語,穿透子元件的樣式封裝
Scoped CSS — Vue 的樣式作用域機制
Style Encapsulation — 樣式封裝
在 CSS 架構設計上,這種「以父層容器為邊界,統一管理內部子元件樣式」的方式,比較接近:
BEM(Block Element Modifier) 的 Block 概念
Component-scoped styling — 以元件為單位的樣式管理
在實際開發討論中,通常會說:
「用 /deep/ 做 scoped override,把樣式限定在這個 block 裡面」
因為 .school-name 是一個父層 div,在裡面用 /deep/ 就可以統一管理該區域內所有子元件的樣式,不用跑到別的地方去找:
css.school-name {
// 自己的樣式
position: absolute;
...
// 統一管理這個區域內的 iView 元件樣式
/deep/ .ivu-select-selection { ... } // 影響區域內所有 Select
/deep/ .ivu-input { ... } // 影響區域內所有 Input
/deep/ .ivu-date-picker-rel .ivu-input { ... } // 只影響 DatePicker 的 Input
}
好處是:
樣式集中管理,易維護
不會影響到 .school-name 以外的地方
可以針對不同子元件做細部調整