vue中深度選擇器圖文詳解
scoped的作用
scoped
可以使當(dāng)前的樣式只在自己當(dāng)前的組件內(nèi)起作用。為了防止在一個組件內(nèi)引入了子組件,而子組件沒有加scoped。這個時(shí)候如果父子組件有相同的類名,就會產(chǎn)生樣式的影響。
原理:
加了scoped就相當(dāng)于給當(dāng)前組件所有的標(biāo)簽添加一個【data-v-hash】的屬性,而vue中采用的是屬性選擇器的方式來進(jìn)行解析,具體解析如下圖:
<style scoped> </style>
scoped對父子組件的影響
首先,我定義了一個父組件和子組件(child)
父組件:
子組件(加了scoped):
效果:
我們可以看到,子組件加了scoped后,父組件對h3的css樣式就不會影響到子組件,如果子組件沒加scoped,就會影響到也變成紅色。
那么,我們就是想在子組件有scoped的情況下,影響到子組件的樣式怎么辦?就引出了深度選擇器
深度選擇器
首先,我們來認(rèn)識下三個深度選擇器:
原生css: >>> (在沒有用less/scss的時(shí)候使用)
less: /deep/
scss: ::v-deep(如果使用了預(yù)處理器都可以使用這個(推薦))
我們上面的實(shí)例沒有用到scss和less,所以我們使用>>>
效果:
子組件也變成了紅色
附加:
/deep/
如果項(xiàng)目中用到了預(yù)處理器 sass less scss 會因?yàn)闊o法編輯而報(bào)錯 可以使用/deep/
注意:vue-cli3以上版本不可以
<style lang="scss" scoped> /*用法1*/ .a { /deep/ .b { /* ... */ } } /*用法2*/ .a /deep/ .b { /* ... */ } </style>
::v-deep 如果使用了預(yù)處理器都可以使用
<style lang="scss" scoped> /*用法1*/ .a{ ::v-deep .b { /* ... */ } } /*用法2*/ .a ::v-deep .b { /* ... */ } </style>
注意:
我們深度處理器經(jīng)常用在這樣的情況:
例如你使用了ElementUI的走馬燈(輪播圖)組件,你想修改其中的樣式,但是你設(shè)置樣式不起作用,這個時(shí)候就是因?yàn)榻M件的scoped的影響。
解決辦法:
1.不妨試試我們的深度處理器吧。(推薦)
2.將 scoped 移除。
3.新建一個沒有 scoped 的 style(一個.vue文件允許多個style),如下:
<style scoped> //有scoped的style,此處放當(dāng)前組件的css代碼 </style> <style> //沒有scoped的style,此處放修改ElementUI輪播圖的css </style>
總結(jié)
到此這篇關(guān)于vue中深度選擇器的文章就介紹到這了,更多相關(guān)vue深度選擇器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3.0 搭建項(xiàng)目總結(jié)(詳細(xì)步驟)
這篇文章主要介紹了vue3.0 搭建項(xiàng)目總結(jié)(詳細(xì)步驟),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05Vue科學(xué)計(jì)數(shù)法常見處理方法舉例
這篇文章主要給大家介紹了關(guān)于Vue科學(xué)計(jì)數(shù)法常見處理方法的相關(guān)資料,科學(xué)計(jì)數(shù)法是科學(xué)家用來表示很大或很小的數(shù)字的一種方便的方法,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下2024-02-02vue實(shí)現(xiàn)在線學(xué)生錄入系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)在線學(xué)生錄入系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05Vue3中實(shí)現(xiàn)代碼高亮的兩種方法(prismjs和highlight.js)
最近忙著開發(fā)自己的博客系統(tǒng),在做界面展示的時(shí)候,需要讓代碼高亮,于是經(jīng)過在網(wǎng)上查閱,發(fā)現(xiàn)有兩款比較好用的插件實(shí)現(xiàn)代碼高亮,分別是prismjs和highlight.js,下面我分別介紹下,方便給需要的同學(xué)參考2025-04-04Vue3?跨域配置devServer的參數(shù)和設(shè)置方法
這篇文章主要介紹了Vue3?跨域配置devServer的參數(shù)和設(shè)置,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04