最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue解決子組件樣式覆蓋問題scoped deep

 更新時(shí)間:2025年01月16日 11:24:20   作者:FortheOne  
文章主要介紹了在Vue項(xiàng)目中處理全局樣式和局部樣式的方法,包括使用scoped屬性和深度選擇器(/deep/)來覆蓋子組件的樣式,作者建議所有組件必須使用scoped,以避免樣式?jīng)_突,對(duì)于父組件覆蓋子組件的樣式,作者推薦給子組件指定自定義類名

前言

在項(xiàng)目開發(fā)過程中,經(jīng)常會(huì)遇到需要在父組件內(nèi)部覆蓋子組件樣式的場(chǎng)景,這種場(chǎng)景在使用第三方庫開發(fā)時(shí)更為常見。

如何處理好全局樣式和局部樣式對(duì)于長期更新維護(hù)的項(xiàng)目來說是非常重要的。

scoped分析

對(duì)于SPA項(xiàng)目,只有一個(gè)頁面,頁面內(nèi)容被拆分成了一個(gè)個(gè)組件,組件加載完成后,組件的樣式也都加載在同一個(gè)頁面內(nèi),所以這些組件的樣式都可以看成全局樣式,對(duì)其他組件都有效,要避免當(dāng)前組件的樣式對(duì)其他組件產(chǎn)生污染,就要把每個(gè)組件的樣式獨(dú)立開。

如果style添加scoped,當(dāng)前組件所有標(biāo)簽都會(huì)添加一個(gè)data-v-hash的屬性,hash值每個(gè)組件都不同

css編譯后,會(huì)在最后一級(jí)選擇器后加一個(gè)屬性選擇器

這樣每個(gè)組件都有唯一的屬性選擇器,就可以避免對(duì)其他組件產(chǎn)生影響

deep分析

deep是常用來樣式穿透,覆蓋子組件加了scoped的樣式或者第三方組件的樣式。

上圖中span為子組件,父組件樣式加了scoped,子組件只有最外層元素添加了父組件的data-v-hash屬性,如果只是需改最外層元素樣式,不需要加deep,但是如果修改內(nèi)部元素,直接使用類選擇器是無效的。比如通過父元素類型panel修改類名ant-input的元素,最終的樣式被編譯為

子組件內(nèi)部元素沒有data-v-hash屬性,所以樣式不生效。

如果使用deep:

最終樣式會(huì)被編譯為:

屬性選擇器只加在deep前的元素上,因此會(huì)影響子組件樣式。

使用總結(jié)

所有組件必須加scoped

如果沒有加scoped? 打開一個(gè)界面突然發(fā)現(xiàn)A組件樣式被其他組件權(quán)重更高的樣式覆蓋了,然后為了讓A原本的樣式生效,給A原本的樣式加個(gè)更大的權(quán)重,接著又發(fā)現(xiàn)在B組件內(nèi)部原本要覆蓋A組件的一些樣式,因?yàn)锳組件樣式權(quán)重變大而失效了。如果組件層級(jí)很深,子組件的最終樣式來源可能要向上翻十八輩祖宗啊,真一點(diǎn)不夸張。

當(dāng)然也有同學(xué)喜歡不加scoped,樣式最外層加個(gè)唯一的id選擇器來避免對(duì)其他組件禪城影響,這樣也可以達(dá)到效果,而且修改子組件樣式的話會(huì)比較簡單,但是自定義的id沒辦法全局管理,難以避免id重復(fù)的問題。

父組件覆蓋子組件使用deep

第三方庫一般會(huì)有全局樣式覆蓋,不過是針對(duì)全局的樣式,局部樣式還是不要放在common.less里。使用deep需要注意兩點(diǎn):

1、給組件額外加個(gè)類名,使用當(dāng)前組件自定義類型進(jìn)行樣式覆蓋

比如父元素為.father,如果覆蓋ant design vue 的select組件,select組件最外層元素為.ant-select,我們直接使用.father /deep/ .ant-select { color: wisdom } 這樣是可以生效的,但是對(duì)于.father下的所有子組件以及子孫后代組件,只要使用了select組件,{ color: wisdom }這個(gè)樣式都是有效的,這樣顯然也不合理,為了不影響后代的組件,給select加個(gè)跟當(dāng)前業(yè)務(wù)相關(guān)的類名,使用自定義類名覆蓋樣式,如.father /deep/ .father-child-select { ... }。PS:我也嘗試過使用>選擇器加/deep/一起使用,奈何無效。

2、/deep/ 嵌套使用在新版chrome瀏覽器樣式會(huì)失效,避免嵌套使用

以前嵌套使用是沒問題的,后來遇到某個(gè)版本樣式失效了

PS:

樣式覆蓋只要選擇器匹配上了,其他無非是權(quán)重問題,組件慎用!important

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue全局過濾器概念及注意事項(xiàng)和基本使用方法

    vue全局過濾器概念及注意事項(xiàng)和基本使用方法

    這篇文章主要給大家分享了vue全局過濾器概念及注意事項(xiàng)和基本使用方法,下面文字圍繞vue全局過濾器的相關(guān)資料展開具體的詳細(xì)內(nèi)容,需要的朋友可以參考一下,希望對(duì)你有所幫助
    2021-11-11
  • Vue實(shí)現(xiàn)移動(dòng)端左右滑動(dòng)效果的方法

    Vue實(shí)現(xiàn)移動(dòng)端左右滑動(dòng)效果的方法

    最近得到一個(gè)新需求,需要在Vue項(xiàng)目的移動(dòng)端頁面上加上左右滑動(dòng)效果,經(jīng)過一番折騰,最終決定四月vue-touch。下面小編把實(shí)現(xiàn)代碼分享給大家,感興趣的朋友一起看看吧
    2018-11-11
  • vue實(shí)現(xiàn)滾動(dòng)條到頂部或者到指定位置

    vue實(shí)現(xiàn)滾動(dòng)條到頂部或者到指定位置

    這篇文章主要介紹了vue實(shí)現(xiàn)滾動(dòng)條到頂部或者到指定位置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Echarts+VUE柱狀圖繪制細(xì)節(jié)并且屏幕自適應(yīng)完整代碼

    Echarts+VUE柱狀圖繪制細(xì)節(jié)并且屏幕自適應(yīng)完整代碼

    柱狀圖(或稱條形圖)是一種通過柱形的長度來表現(xiàn)數(shù)據(jù)大小的一種常用圖表類型,這篇文章主要給大家介紹了關(guān)于Echarts+VUE柱狀圖繪制細(xì)節(jié)并且屏幕自適應(yīng)的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • 使用vue實(shí)現(xiàn)pdf預(yù)覽功能的方法

    使用vue實(shí)現(xiàn)pdf預(yù)覽功能的方法

    許多朋友想要材料上傳之后點(diǎn)擊預(yù)覽實(shí)現(xiàn)在瀏覽器上預(yù)覽的效果,所以本文將給大家介紹如何使用vue實(shí)現(xiàn)pdf預(yù)覽功能,文中有實(shí)現(xiàn)代碼,有需要的朋友可以參考閱讀下
    2023-08-08
  • 詳解vue2.0 transition 多個(gè)元素嵌套使用過渡

    詳解vue2.0 transition 多個(gè)元素嵌套使用過渡

    這篇文章主要介紹了詳解vue2.0 transition 多個(gè)元素嵌套使用過渡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • vue3中定時(shí)任務(wù)cron表達(dá)式組件的比較分析

    vue3中定時(shí)任務(wù)cron表達(dá)式組件的比較分析

    文章比較了三種適用于Vue3的cron組件:vue3-cron-plus、no-vue3-cron和vue3-cron-plus-picker,每種組件的安裝和使用實(shí)例都詳細(xì)列出,最終對(duì)比發(fā)現(xiàn),vue3-cron-plus-picker不僅可以從組件中獲取cron表達(dá)式,還能顯示任務(wù)的執(zhí)行時(shí)間,因此推薦使用
    2025-10-10
  • vue遞歸實(shí)現(xiàn)自定義tree組件

    vue遞歸實(shí)現(xiàn)自定義tree組件

    這篇文章主要為大家詳細(xì)介紹了vue遞歸實(shí)現(xiàn)自定義tree組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vue實(shí)現(xiàn)簡易選項(xiàng)卡功能

    vue實(shí)現(xiàn)簡易選項(xiàng)卡功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)簡易選項(xiàng)卡功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • vue-cli axios請(qǐng)求方式及跨域處理問題

    vue-cli axios請(qǐng)求方式及跨域處理問題

    這篇文章主要介紹了vue-cli axios請(qǐng)求方式及跨域處理問題,文中還給大家提到了vue中axios解決跨域問題和攔截器使用,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2018-03-03

最新評(píng)論

莱阳市| 呼和浩特市| 余姚市| 滦平县| 潜山县| 法库县| 宿州市| 鄂托克前旗| 麦盖提县| 石家庄市| 顺平县| 麻栗坡县| 漯河市| 杭锦后旗| 关岭| 龙川县| 沁源县| 当雄县| 阳江市| 高安市| 山阴县| 汨罗市| 蛟河市| 赤壁市| 晋宁县| 吴川市| 鹤庆县| 金山区| 桂阳县| 郓城县| 台前县| 甘肃省| 东丰县| 桐梓县| 荔波县| 察隅县| 泗洪县| 盐池县| 玛沁县| 威远县| 自治县|