欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

每個(gè)組件有唯一的 scopeId,按理說(shuō),這樣應(yīng)該能夠做到樣式隔離了,實(shí)際上, 這種方式其實(shí)表現(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)識(shí)進(jìn)行樣式隔離,子組件的 div 不應(yīng)該有任何背景顏色,可是現(xiàn)實(shí)總在狠狠的打臉~~

不知道你的媚眼看到問(wèn)題的所在了沒(méi):

子元素的 根元素 會(huì)繼承父元素的 ScopeId!

子元素的 根元素 會(huì)繼承父元素的 ScopeId!

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

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

四、怎么破?

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

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

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

沒(méi)錯(cuò),這應(yīng)該是一個(gè) bug,如果是我應(yīng)該會(huì)怎么解呢,編譯的時(shí)候不是增加屬性,而是直接根據(jù) scopeId 修改類(lèi)名,嘿嘿~~

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

相關(guān)文章

  • vue2.0 與 bootstrap datetimepicker的結(jié)合使用實(shí)例

    vue2.0 與 bootstrap datetimepicker的結(jié)合使用實(shí)例

    本篇文章主要介紹了vue2.0 與 bootstrap datetimepicker的結(jié)合使用實(shí)例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-05-05
  • vue從倉(cāng)庫(kù)state中取不到數(shù)據(jù)的問(wèn)題

    vue從倉(cāng)庫(kù)state中取不到數(shù)據(jù)的問(wèn)題

    這篇文章主要介紹了vue從倉(cāng)庫(kù)state中取不到數(shù)據(jù)的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue.js開(kāi)發(fā)環(huán)境搭建教程

    vue.js開(kāi)發(fā)環(huán)境搭建教程

    這篇文章主要為大家詳細(xì)介紹了vue.js開(kāi)發(fā)環(huán)境的搭建教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • vue實(shí)現(xiàn)簡(jiǎn)易的雙向數(shù)據(jù)綁定

    vue實(shí)現(xiàn)簡(jiǎn)易的雙向數(shù)據(jù)綁定

    這篇文章主要介紹了vue如何實(shí)現(xiàn)簡(jiǎn)易的雙向數(shù)據(jù)綁定,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2020-12-12
  • 詳解Vscode中使用Eslint終極配置大全

    詳解Vscode中使用Eslint終極配置大全

    這篇文章主要介紹了詳解Vscode中使用Eslint終極配置大全,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • vue+node+webpack環(huán)境搭建教程

    vue+node+webpack環(huán)境搭建教程

    這篇文章主要為大家詳細(xì)介紹了vue+node+webpack環(huán)境搭建教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 安裝vue-cli的簡(jiǎn)易過(guò)程

    安裝vue-cli的簡(jiǎn)易過(guò)程

    安裝vue-cli的前提是你已經(jīng)安裝了npm,安裝npm你可以直接下載node的安裝包進(jìn)行安裝。接下來(lái)通過(guò)本文給大家介紹安裝vue-cli的簡(jiǎn)易過(guò)程,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-05-05
  • vue-router中 query傳參和params傳參的使用和區(qū)別講解

    vue-router中 query傳參和params傳參的使用和區(qū)別講解

    這篇文章主要介紹了vue-router中 query傳參和params傳參的使用和區(qū)別講解,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • Vue2.x中的Render函數(shù)詳解

    Vue2.x中的Render函數(shù)詳解

    通常開(kāi)發(fā)vue我們使用的是模板語(yǔ)法,其實(shí)還有和react相同的語(yǔ)法,那就是render函數(shù),同樣支持jsx語(yǔ)法。Vue 的模板實(shí)際是編譯成了 render 函數(shù)。
    2017-05-05
  • vue3利用customRef實(shí)現(xiàn)防抖

    vue3利用customRef實(shí)現(xiàn)防抖

    防抖就是對(duì)于頻繁觸發(fā)的事件添加一個(gè)延時(shí)同時(shí)設(shè)定一個(gè)最小觸發(fā)間隔,防抖大家都學(xué)過(guò),但是如何在?Vue3?里中將防抖做到極致呢,下面小編就來(lái)和大家詳細(xì)講講
    2023-10-10

最新評(píng)論