vue中深度選擇器圖文詳解
scoped的作用
scoped
可以使當(dāng)前的樣式只在自己當(dāng)前的組件內(nèi)起作用。為了防止在一個(gè)組件內(nèi)引入了子組件,而子組件沒有加scoped。這個(gè)時(shí)候如果父子組件有相同的類名,就會(huì)產(chǎn)生樣式的影響。
原理:
加了scoped就相當(dāng)于給當(dāng)前組件所有的標(biāo)簽添加一個(gè)【data-v-hash】的屬性,而vue中采用的是屬性選擇器的方式來(lái)進(jìn)行解析,具體解析如下圖:
<style scoped> </style>

scoped對(duì)父子組件的影響
首先,我定義了一個(gè)父組件和子組件(child)
父組件:

子組件(加了scoped):

效果:
我們可以看到,子組件加了scoped后,父組件對(duì)h3的css樣式就不會(huì)影響到子組件,如果子組件沒加scoped,就會(huì)影響到也變成紅色。

那么,我們就是想在子組件有scoped的情況下,影響到子組件的樣式怎么辦?就引出了深度選擇器
深度選擇器
首先,我們來(lái)認(rèn)識(shí)下三個(gè)深度選擇器:
原生css: >>> (在沒有用less/scss的時(shí)候使用)
less: /deep/
scss: ::v-deep(如果使用了預(yù)處理器都可以使用這個(gè)(推薦))
我們上面的實(shí)例沒有用到scss和less,所以我們使用>>>

效果:
子組件也變成了紅色

附加:
/deep/
如果項(xiàng)目中用到了預(yù)處理器 sass less scss 會(huì)因?yàn)闊o(wú)法編輯而報(bào)錯(cuò) 可以使用/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è)置樣式不起作用,這個(gè)時(shí)候就是因?yàn)榻M件的scoped的影響。
解決辦法:
1.不妨試試我們的深度處理器吧。(推薦)
2.將 scoped 移除。
3.新建一個(gè)沒有 scoped 的 style(一個(gè).vue文件允許多個(gè)style),如下:
<style scoped> //有scoped的style,此處放當(dāng)前組件的css代碼 </style> <style> //沒有scoped的style,此處放修改ElementUI輪播圖的css </style>
總結(jié)
到此這篇關(guān)于vue中深度選擇器的文章就介紹到這了,更多相關(guān)vue深度選擇器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue 使用iframe引用html頁(yè)面實(shí)現(xiàn)vue和html頁(yè)面方法的調(diào)用操作
這篇文章主要介紹了Vue 使用iframe引用html頁(yè)面實(shí)現(xiàn)vue和html頁(yè)面方法的調(diào)用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-11-11
3分鐘帶你快速認(rèn)識(shí)Vue3中的v-model
model在vue里面實(shí)現(xiàn)雙向綁定,通過父節(jié)點(diǎn)向子節(jié)點(diǎn)傳遞參數(shù),子節(jié)點(diǎn)通過操作再回傳給父節(jié)點(diǎn)的變量,有點(diǎn)像prop和$emit組合使用,下面這篇文章主要給大家介紹了關(guān)于Vue3中v-model的相關(guān)資料,需要的朋友可以參考下2022-11-11
three.js實(shí)現(xiàn)vr全景圖功能實(shí)例(vue)
去年全景圖在微博上很是火爆了一陣,正好我也做過一點(diǎn)全景相關(guān)的項(xiàng)目,下面這篇文章主要給大家介紹了關(guān)于three.js實(shí)現(xiàn)vr全景圖功能的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-05-05
vue 全選與反選的實(shí)現(xiàn)方法(無(wú)Bug 新手看過來(lái))
下面小編就為大家分享一篇vue 全選與反選的實(shí)現(xiàn)方法(無(wú)Bug 新手看過來(lái)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2018-02-02
vue監(jiān)聽滾動(dòng)事件實(shí)現(xiàn)滾動(dòng)監(jiān)聽
本文主要介紹了vue監(jiān)聽滾動(dòng)事件實(shí)現(xiàn)滾動(dòng)監(jiān)聽的相關(guān)資料。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-04-04
Element-ui之ElScrollBar組件滾動(dòng)條的使用方法
這篇文章主要介紹了Element-ui之ElScrollBar組件滾動(dòng)條的使用方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2018-09-09
vue給對(duì)象添加屬性沒有響應(yīng)式的問題及解決
這篇文章主要介紹了vue給對(duì)象添加屬性沒有響應(yīng)式的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04

