詳解vue樣式穿透的幾種方式
scoped屬性
我們?cè)趘ue組件寫樣式一般是在<style>
標(biāo)簽里面,但是我們?cè)谶@里的樣式默認(rèn)是全局樣式,如果其它組件的class名取重復(fù)了則會(huì)導(dǎo)致樣式污染。
所以vue支持在<style>
標(biāo)簽添加scoped
屬性,這樣當(dāng)前組件的樣式只會(huì)在當(dāng)前樣式生效,其它組件不會(huì)影響到。
例子如下:
<div class="page"> <span class="content">hello world</span> </div> <style lang="scss" scoped> .page { .content { color: aquamarine; font-size: 20px; } } </style>
最終在瀏覽器渲染出來,div和span上都帶有特殊屬性
然后css的樣式最終也會(huì)帶上這些屬性,根據(jù)這些屬性找到元素。
這樣子避免樣式全局污染。
如果你的引入了第三方庫(kù),如果你想修改第三方庫(kù)的樣式,直接通過dom查找,修改樣式是沒有效果的。
比如我在項(xiàng)目引入了餓了么的組件庫(kù)elementUI
。
<el-card class="box-card"> <span class="content">hello world</span> </el-card>
如果我們想把padding改小一點(diǎn),下面這樣寫是沒有效果的。
<style lang="scss" scoped> .box-card { .el-card__body { padding: 10px; } } </style>
只看到默認(rèn)的padding。我們寫的樣式?jīng)]有渲染出來。
此時(shí)需要樣式穿透,需要用到深度選擇器/deep/
。
<style lang="scss" scoped> .box-card { /deep/.el-card__body { padding: 10px; } } </style>
可以看到生效了。
樣式穿透
vue都是通過深度選擇器來樣式穿透的。除了上面的講/deep/
,我熟知的還有::v-deep
,>>>
。
那它們有何區(qū)別?
- 如果你使用的是
css
,沒有使用css預(yù)處理器,則可以使用>>>
,/deep/
,::v-deep
。 - 如果你使用的是
less
或者node-sass
,那么可以使用/deep/
,::v-deep
都可以生效。 - 如果你使用的是
dart-sass
,那么就不能使用/deep/
,而是使用::v-deep
才會(huì)生效。
總結(jié)
總結(jié)一下:
css
可以使用>>>
,/deep/
,::v-deep
less
和node-sass
可以使用/deep/
,::v-deep
dart-sass
可以使用::v-deep
到此這篇關(guān)于詳解vue樣式穿透的幾種方式的文章就介紹到這了,更多相關(guān)vue樣式穿透內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue.js中window.onresize的超詳細(xì)使用方法
這篇文章主要給大家介紹了關(guān)于vue.js中window.onresize的超詳細(xì)使用方法,window.onresize 是直接給window的onresize屬性綁定事件,只能有一個(gè),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12vue控制滾動(dòng)條滑到某個(gè)位置的方法實(shí)例
當(dāng)容器有滾動(dòng)條時(shí),有時(shí)需要將滾動(dòng)條滑到某個(gè)位置,下面這篇文章主要給大家介紹了關(guān)于vue控制滾動(dòng)條滑到某個(gè)位置的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12解決Vue keep-alive 調(diào)用 $destory() 頁(yè)面不再被緩存的情況
這篇文章主要介紹了解決Vue keep-alive 調(diào)用 $destory() 頁(yè)面不再被緩存的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-10-10vue-cli項(xiàng)目中使用echarts圖表實(shí)例
在本篇文章里我們給大家分享了關(guān)于vue中使用echarts圖表的實(shí)現(xiàn)方法,有興趣的朋友們學(xué)習(xí)下。2018-10-10vue+swiper實(shí)現(xiàn)組件化開發(fā)的實(shí)例代碼
這篇文章主要介紹了vue+swiper實(shí)現(xiàn)組件化開發(fā)的相關(guān)資料,需要的朋友可以參考下2017-10-10Vue ElementUI之Form表單驗(yàn)證遇到的問題
這篇文章主要介紹了Vue ElementUI之Form表單驗(yàn)證遇到的問題,需要的朋友可以參考下2017-08-08Vue路由重復(fù)點(diǎn)擊報(bào)錯(cuò)問題及解決
這篇文章主要介紹了Vue路由重復(fù)點(diǎn)擊報(bào)錯(cuò)問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04Vue.js如何利用v-for循環(huán)生成動(dòng)態(tài)標(biāo)簽
這篇文章主要給大家介紹了關(guān)于Vue.js如何利用v-for循環(huán)生成動(dòng)態(tài)標(biāo)簽的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01vue中使用elementui實(shí)現(xiàn)樹組件tree右鍵增刪改功能
這篇文章主要介紹了vue中使用elementui實(shí)現(xiàn)對(duì)樹組件tree右鍵增刪改功能,右擊節(jié)點(diǎn)可進(jìn)行增刪改,對(duì)節(jié)點(diǎn)數(shù)據(jù)進(jìn)行模糊查詢功能,本文給大家分享了完整代碼,需要的朋友可以參考下2022-08-08