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