Vue css樣式穿透和權重

2021-09-27 12:38:43 字數 1568 閱讀 9215

普通的html、css結構,樣式權重為 !important > 行內 > 頭部 > 引入。但是在vue裡面,我們的檔案結構發生改變,不再是html檔案而是vue檔案,將解析為元件也不是頭部樣式,這時樣式權重比較複雜,下面我們來詳細說一下。

vue樣式作用域分為兩種:

私有:僅作用於當前檔案dom元素的樣式;私有又分為兩種情況,父元件和子元件

一般情況下是 子元件 > 父元件 > 全域性,但是有時候我們會有些特別的需求。

例如現在有乙個公共按鈕元件,我們在幾個頁面中呼叫它。

但是在首頁呼叫的時候,要求改變按鈕顏色。我第乙個想法就是在父元件裡重寫樣式,覆蓋顏色,但是由於權重關係,並沒有起效。要想效果生效,需要給樣式新增>>>深度作用選擇器。

深度作用選擇器是vue-loader的乙個屬性,作用於

通過 v-html 建立的 dom 不受 scoped 樣式影響,但是我們可以通過深度作用選擇器來為他們設定樣式。

"dom"

>

export default }}

/* 無效

你需要重寫哪個元素的樣式,作用器就放在那個元素的前面!

有兩個解決方案:

import

'swiper/css/swiper.min.css'

import

'bootstrap/dist/js/bootstrap.min'

import

'bootstrap/dist/css/bootstrap.min.css'

import

'animate.css'

;import

"vue-image-lightbox/dist/vue-image-lightbox.min.js"

import

"vue-image-lightbox/dist/vue-image-lightbox.min.css"

import vuelazyload from

"vue-lazyload"

;//懶載入

需要注意的是:

參考:深度作用選擇器

vue樣式穿透

在一次這樣的需求中,需要實現滑倒底部時自動請求資料,需要動態建立節點然後追加到某元素中,這期間遇到的問題就是在動態建立節點後,類名也已經加上了 但是樣式就是沒有生效,最後發現原因的產生竟然是中scoped屬性 該屬性的作用是用來繫結當前樣式不被汙染,同時也就意味著在建立新的node後,該node樣式...

scope樣式穿透

首發於我的部落格 有這樣一種情境 1 因為某些特殊的原因我不希望註冊乙個全域性元件,而且不想新增乙個檔案作為元件,只能在當前頁面中註冊區域性元件 2 在區域性元件中,該元件又是乙個富樣式的元件 3 所以我希望在當前頁面中,穿透部分scope,使當前頁面的一些樣式可以應用於區域性元件中 1.單純css...

降低scss樣式的權重

scss的巢狀寫法是方便了許多,但是帶來的問題是權重的增加,如果你想通過dom修改某個樣式將會發現,要修改的樣式總是被原有的覆蓋,不用想,肯定是權重值不夠,但是又不想用 important,那麼解決的方式就是使用scss的 at root指令,這個指令可以然你的樣式在文件的根層級上輸出而不是巢狀在符...