Vue組件間的樣式?jīng)_突污染問題詳解
默認情況下,寫在.vue組件中的樣式會全局生效,因此很容易造成多個組件之間的樣式?jīng)_突問題。
導致組件之間樣式?jīng)_突的根本原因是:
- 單頁面應(yīng)用程序中,所有組件的dom結(jié)構(gòu),都是基于唯一的index.html頁面進行呈現(xiàn)的。
- 每個組件中的樣式,都會影響整個index.html頁面中的dom元素。
給left.vue文件中的p標簽添加一個字體樣式
<template>
<div>
<p >left組件</p>
<MyCount :num="4"></MyCount>
</div>
</template>
<script>
import MyCount from "@/components/count.vue"
export default {
components:{
MyCount
}
}
</script>
<style>
p{color:red}
</style>
此時發(fā)現(xiàn)頁面right.vue文件也受影響變成紅色了
<template>
<div>
<!-- 給單個頁面添加固定的自定義data-v-001屬性,如此就能解決沖突問題
一個頁面最好用同一個,防止混亂
-->
<!-- <p data-v-001>left組件</p> -->
<p >left組件</p>
<MyCount :num="4"></MyCount>
</div>
</template>
<script>
import MyCount from "@/components/count.vue"
export default {
components:{
MyCount
}
}
</script>
<!-- 只不過上面的方法一個一個添加太過麻煩
直接在style標簽上添加scoped也能解決組件樣式?jīng)_突,
因為他會自動幫我們生成data-v-number
-->
<style scoped>
p{color:red}
</style>/deep/的使用
<template>
<div>
<p >left組件</p>
<MyCount :num="4"></MyCount>
</div>
</template>
<script>
import MyCount from "@/components/count.vue"
export default {
components:{
MyCount
}
}
</script>
<style scoped>
p{color:red}
/* 給count組件加樣式,left和right文件都加,但是發(fā)現(xiàn)效果是受right的樣式影響
,這是因為right沒有加scoped,而此時我們想要給left文件加樣式呢?
標簽前面加個/deep/就行了,加上deep是[data--38a98c97] h5這樣顯示的,不加是h5[data--38a98c97]
這樣顯示的
*/
/* 在父組件中修改子組件樣式,可用deep */
/deep/ h5{
color:orange;
}
</style>當使用第三方組件庫的時候,如果要修改第三方組件默認樣式的時候,也需要用到/deep/
到此這篇關(guān)于Vue組件間的樣式?jīng)_突污染問題詳解的文章就介紹到這了,更多相關(guān)Vue組件樣式?jīng)_突內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue如何使用html2canvas和JsPDF導出pdf組件
這篇文章主要介紹了vue如何使用html2canvas和JsPDF導出pdf組件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-09-09
vue、react等單頁面項目部署到服務(wù)器的方法及vue和react的區(qū)別
這篇文章主要介紹了vue、react等單頁面項目部署到服務(wù)器的方法,需要的朋友可以參考下2018-09-09
vue多功能渲染函數(shù)h()的使用和多種應(yīng)用場景
我們在vue項目里面用HTML標簽構(gòu)建頁面時最終會被轉(zhuǎn)化成vnode,而h()是直接創(chuàng)建vnode,因此h()能以一種更靈活的方式在各種各樣情景下構(gòu)建組件的渲染邏輯,并且能帶來性能方式的提升,本文介紹如何使用和列出具體的應(yīng)用場景,需要的朋友可以參考下2024-08-08
原生javascript中檢查對象是否為空示例實現(xiàn)
這篇文章主要為大家介紹了原生javascript中檢查對象是否為空示例實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2021-11-11
Mixin混入分發(fā)Vue組件可復(fù)用功能基礎(chǔ)示例
這篇文章主要為大家介紹了Mixin混入分發(fā)Vue組件可復(fù)用功能基礎(chǔ)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06
Vue 實現(xiàn)v-for循環(huán)的時候更改 class的樣式名稱
這篇文章主要介紹了Vue 實現(xiàn)v-for循環(huán)的時候更改 class的樣式名稱,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07

