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

Vue 組件間的樣式?jīng)_突污染

 更新時間:2017年08月31日 09:25:49   作者:小蟲巨蟹  
本篇文章主要介紹了Vue 組件間的樣式?jīng)_突污染,當(dāng)多個樣式出現(xiàn)時,就會導(dǎo)致樣式?jīng)_突,本文介紹了具體解決方法

一、污染是如何產(chǎn)生的?

得益于 Vue-loader,在 Vue 中可以使用類似于 Web Component 的組件化寫法, <template></template><style></style><script></script> ,在大多數(shù)情況下,我們希望組件間定義的樣式是相互隔離的,在 Weex 當(dāng)中的確如此,組件天生隔離,可是在 Vue 當(dāng)中,運行的載體還是瀏覽器,所有的樣式類還是會通過 style 標(biāo)簽插入頭部,影響全局,交叉污染

二、增加 Scoped 標(biāo)識

依然是 Vue-loader,通過為組件中的 style 標(biāo)簽增加一個 scoped 標(biāo)識,Vue-loader 在編譯的過程中會為組件每一個元素節(jié)點增加 scopeId 作為屬性,同時為所有的樣式類加上屬性選擇器 scopeId,從而達(dá)到隔離的效果,大概是下面的樣子:

每個組件有唯一的 scopeId,按理說,這樣應(yīng)該能夠做到樣式隔離了,實際上, 這種方式其實表現(xiàn)已經(jīng)足夠好了,除了以下這種情況~~

三、ScopeId 的繼承

我們把上面的例子再完善下:

// 父組件
<template>
  <div>
    <div class="bg"></div>
    <Sub></Sub>
  </div>
</template>
<script>
  import Sub from './sub';
  export default {
    components: { Sub }
  };
</script>
<style scoped>
.bg {
  background-color: #000;
  width: 100px;
  height: 100px;
}
</style>

// 子組件
<template>
  <div class="bg">
  </div>
</template>
<script>
  export default {
  };
</script>
<style scoped>
.bg {
  width: 300px;
  height: 300px;
  margin-top: 5px;
}
</style>

由于我們使用了 scoped 標(biāo)識進(jìn)行樣式隔離,子組件的 div 不應(yīng)該有任何背景顏色,可是現(xiàn)實總在狠狠的打臉~~

不知道你的媚眼看到問題的所在了沒:

子元素的 根元素 會繼承父元素的 ScopeId!

子元素的 根元素 會繼承父元素的 ScopeId!

子元素的 根元素 會繼承父元素的 ScopeId?。ㄕf了三遍的話,肯定很重要)

由于子元素的 根元素 除了擁有自己的 ScopeId 屬性,還繼承了父元素的 ScopeId 屬性,所以父元素的樣式類 bg 對其依然有效

四、怎么破?

破解的方式也很簡單,為每一個組件的根元素提供一個另類一點的樣式名(如果有的話),例如就不要每個組件都命名為:wrap,根據(jù)業(yè)務(wù)名為:b1-wrap、b2-wrap 等

組件中的非根元素,類名不管怎么命名,怎么重名,都是不會發(fā)生污染的,這個自己領(lǐng)悟~~

五、這應(yīng)當(dāng)屬于 Vue-loader 的一個 bug

沒錯,這應(yīng)該是一個 bug,如果是我應(yīng)該會怎么解呢,編譯的時候不是增加屬性,而是直接根據(jù) scopeId 修改類名,嘿嘿~~

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue+swiper實現(xiàn)左右滑動的測試題功能

    vue+swiper實現(xiàn)左右滑動的測試題功能

    這篇文章主要介紹了vue+swiper實現(xiàn)左右滑動的測試題功能,本文通過實例代碼給大介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • vue?tree封裝一個可選的樹組件方式

    vue?tree封裝一個可選的樹組件方式

    這篇文章主要介紹了vue?tree封裝一個可選的樹組件方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Vue3在css中使用js變量及其原理解讀

    Vue3在css中使用js變量及其原理解讀

    這篇文章主要介紹了Vue3在css中使用js變量及其原理解讀,結(jié)合實例代碼介紹了vue3中css使用script中定義的變量的方法,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • 解決vue-cli 打包后自定義動畫未執(zhí)行的問題

    解決vue-cli 打包后自定義動畫未執(zhí)行的問題

    今天小編就為大家分享一篇解決vue-cli 打包后自定義動畫未執(zhí)行的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 解決vue-cli?卸載不掉的問題

    解決vue-cli?卸載不掉的問題

    這篇文章主要介紹了vue-cli?卸載不掉的問題解決方法,文中給大家介紹了安裝后問題分析及解決方案,需要的朋友可以參考下
    2023-01-01
  • vue_drf實現(xiàn)短信驗證碼

    vue_drf實現(xiàn)短信驗證碼

    我們在做網(wǎng)站開發(fā)時,登錄頁面很多情況下是可以用手機號接收短信驗證碼,本文主要介紹了vue_drf實現(xiàn)短信驗證碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • MAC+PyCharm+Flask+Vue.js搭建系統(tǒng)

    MAC+PyCharm+Flask+Vue.js搭建系統(tǒng)

    最近新做了個項目,使用的是MAC+PyCharm+Flask+Vue.js搭建系統(tǒng),本文就來分享一下搭建步驟,感興趣的可以了解一下
    2021-05-05
  • Vue組件Draggable實現(xiàn)拖拽功能

    Vue組件Draggable實現(xiàn)拖拽功能

    這篇文章主要為大家詳細(xì)介紹了Vue組件Draggable實現(xiàn)拖拽功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • 淺談Vuex注入Vue生命周期的過程

    淺談Vuex注入Vue生命周期的過程

    這篇文章主要介紹了Vuex 注入 Vue 生命周期的過程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • vue-cli 組件的導(dǎo)入與使用教程詳解

    vue-cli 組件的導(dǎo)入與使用教程詳解

    這篇文章主要介紹了vue-cli--組件的導(dǎo)入與使用詳解,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-04-04

最新評論

抚顺市| 阿荣旗| 巫溪县| 黔西县| 奉化市| 资阳市| 连城县| 宁远县| 如皋市| 确山县| 会理县| 镇赉县| 淮南市| 黄石市| 萍乡市| 祁门县| 云安县| 麻江县| 奉贤区| 城固县| 阳城县| 密云县| 榆林市| 雅安市| 红安县| 宜丰县| 方山县| 岳西县| 太仆寺旗| 尼勒克县| 平乡县| 隆昌县| 仁寿县| 廉江市| 都安| 多伦县| 甘孜| 米易县| 乌拉特中旗| 潢川县| 横峰县|