下面我就為大家分享一篇vue裡面父元件修改子元件樣式的方法,具有很好的參考價值,希望對大家有幫助。
在使用 vue 的開發中,我們有時會引用外部元件,包括 UI 元件(ElementUI、iview)。
當 c9ccee2e6ea535a969eb3f532ad9fe89 標籤有 scoped 屬性時,它的 CSS 只作用於目前元件中的元素。
但是在父元件中加入 scoped 之後,父元件的樣式將不會滲透到子元件中,所以在父元件中書寫子元件的樣式是無效果的。
一、去掉scoped
在父元件的c9ccee2e6ea535a969eb3f532ad9fe89 去掉scoped 後,父元件中可以書寫子元件的樣式,但是你會擔心這樣會污染全域樣式。
【因為我們知道正確使用全域樣式的姿勢是使用一個全域的app.css】
二、混用本地和全域樣式
你可以在一個元件中同時使用有作用域和無作用域的樣式:
<style> /* 全局样式 */ </style> <style scoped> /* 本地样式 */ </style>
我們把需要修改子元件的樣式寫在上面那個全域樣式裡面
三、使用深度作用選擇器
如果你希望scoped 樣式中的一個選擇器能夠作用得“更深”,例如影響子組件,你可以使用>>> 運算子:
<style scoped> .a >>> .b { /* ... */ } </style>
有些像SASS 之類的預處理器無法正確解析>>>。這種情況下你可以用 /deep/ 運算子取代 —— 這是一個 >>> 的別名,同樣可以正常運作。
OK,主要內容就是以上幾點。
需要額外補充的是:
1、透過v-html 建立的DOM 內容不受作用域內的樣式影響,但你仍然可以透過深度作用選擇器來為他們設定樣式
2、CSS 作用域不能取代class
3、在遞歸元件中小心使用後代選擇器
上面是我整理給大家的,希望今後對大家有幫助。
相關文章:
#以上是在vue裡面透過父元件如何修改子元件樣式的詳細內容。更多資訊請關注PHP中文網其他相關文章!