vue---style scoped屬性的作用和原理、scoped穿透

使用vue開發項目時,發現style標籤中存在一個屬性scoped。

scoped 屬性是 HTML5 中的新屬性,是一個布爾屬性。如果使用該屬性,則樣式僅僅應用到 style 元素的父元素及其子元素。

作用:實現組件的私有化,不對全局造成樣式污染,表示當前style屬性只屬於當前模塊。

原理:scoped會在DOM結構及css樣式上加上唯一性的標記【data-v-something】屬性,即CSS帶屬性選擇器,以此完成類似作用域的選擇方式,從而達到樣式私有化,不污染全局的作用。

scoped使用雖然方便但是我們需要慎用,因爲在我們需要修改公共組件(三方庫或者項目定製的組件)的樣式的時候,scoped往往會造成更多的困難,需要增加額外的複雜度。

以elementUI爲例,在使用scoped會出現 CSS 設置不起效的問題,無法通過 CSS 修改組件的樣式。可以使用下面的方法來解決

(1)使用 >>> 可以穿透 scoped 屬性,修改其他第三方組件的樣式。

外層 >>> 第三方組件{}

(2)使用 sass 或 less 的樣式穿透 /deep/ 。

外層 /deep/ 第三方組件{}

(3)使用兩個 style 標籤,一個帶 scoped 屬性,一個不帶 scoped 屬性,用來修改第三方組件的樣式。

在樣式中,把【.name-input】換成【.el-input】,【.address-select】換成【.el-select】也可以。注意找到外層即可。

參考:Vue項目中scoped屬性的作用,及scoped穿透

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章