VUE中的scoped屬性和深度選擇器

2022-06-22 14:09:15 字數 738 閱讀 7434

眾所周知,在vue中我們在style標籤中寫樣式時,為了防止當前元件或頁面的樣式對外界其它的頁面元件造成影響,會給vue中的 style標籤 加上 scoped 屬性,該屬性使樣式變成了局域樣式,只作用於當前元件。vue中的scoped屬性的設計思想就是讓當前元件的樣式不會修改到其它 地方的樣式。

原理通過觀察頁面的dom發現:vue中的scoped屬性給相應的dom結構和css選擇器都加上了標識,這個唯一的標記保證了唯一性,從而達到了樣式的 私有化,不會汙染全域性的作用。這個標識就是給標籤新增上乙個 [data-v-hash] 的屬性。

需要注意的是,如果當父元件、子元件同時使用 scoped 屬性時,子元件最外層的標籤會被加上當前元件的hash值,同時也會被加上父元件的hash

值。同樣的css樣式部分的選擇器也會被加上這個標識屬性。

總結vue中的scoped屬性實現樣式私有化:

在vue中,為了不讓當前元件的樣式修改其它地方的樣式,就有了scoped屬性。但有時候不想用預設的樣式,需要自定義自己的樣式時,比如:引用的第三方元件庫,

同時還不想去除scoped屬性,避免汙染全域性,可以選擇使用深度選擇器。

在vue中,可以使用深度選擇器 >>> 來穿透scoped,來修改樣式,但是像 sass 之類的預處理語言無法正確解析 >>>,可以使用 /deep/ 操作符(>>> 的別名)

或者 ::v-deep 操作符(>>> 的別名)來實現同樣的效果。

Vue中的scoped和scoped穿透

文章摘自 一 什麼是scoped 在vue檔案中的style標籤上有乙個特殊的屬性 scoped。當乙個style標籤擁有scoped屬性時候,它的css樣式只能用於當前的vue元件,可以使元件的樣式不相互汙染。如果乙個專案的所有style標籤都加上了scoped屬性,相當於實現了樣式的模組化。二 ...

Vue中scoped屬性相關

scoped屬性相關 一般在專案中都會用到,新增了scoped屬性後,vue會通過postcss 給乙個元件中所有的 dom 新增了乙個獨一無二的動態屬性,然後給 css 選擇器額外新增了乙個對應的屬性來選擇該元件中的 dom,這種做法使得樣式只作用於含有該屬性的 dom 元件內部 dom titl...

vue中style下scoped的屬性的原理

實現元件的私有化,不對全域性造成樣式汙染,表示當前style屬性只屬於當前模 塊 style中有scoped元件私有化不會對全域性造成影響 style scoped lang scss header group style style中沒有scoped,適用於全域性樣式 style lang scs...