国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

詳解vue 中 scoped 樣式作用域的規(guī)則

瀏覽:62日期:2022-11-22 15:44:15

哈嘍!大家好!我是木瓜太香,今天我們來聊一個 vue 的樣式作用域的問題,通常我們開發(fā)項目的時候是要在 style 上加上 scoped 來起到規(guī)定組件作用域的效果的,所以了解他們的規(guī)則也是很有必要的,可以讓你更清晰的了解你的項目樣式是怎么運作的。

先來說說實現(xiàn)方式

vue中的樣式作用域是通過屬性選擇器來實現(xiàn)的,例如同樣一個類名,我們是通過 .類名[屬性名] 來做區(qū)分的,我們這里主要是要搞清楚這里的屬性名是怎么分配的。

樣式作用域規(guī)則

接下來我們分情況來說一下樣式作用域:

對于有樣式作用域的組件,該組件的所有后代元素都會具備一個相同的作用域?qū)傩裕摻M件的內(nèi)部的根元素除了具備當前組件作用域?qū)傩砸矔邆淦涓讣壗M件的作用域,當然如果父級沒有作用域則不具備對于沒有樣式作用域的組件,如果父組件是有作用域的,那么該組件只有根元素會繼承父組價的作用域,其后代的元素不會有作用域?qū)τ谔幵谕粚哟蔚慕M件,其作用域是相同的,從下一代開始才會有所區(qū)別特別要注意的是對于組件的復(fù)用,在當前項目,不管是什么層級,復(fù)用的組件作用域都相同

樣式作用域圖示

詳解vue 中 scoped 樣式作用域的規(guī)則

實際應(yīng)用效果

有了基本的樣式作用域知識儲備之后,接下來我們來看一下 vue 最終會怎么將這些樣式作用域應(yīng)用到選擇器的。

對于單個的選擇器 .box[data-v-abc] 對于復(fù)合選擇器:.box a[data-v-abc] .box[data-v-abc],.wrap[data-v-abc] .box > div[data-v-abc]

根據(jù)上面的知識儲備,我們就知道,如果組件都只被引用一次,通常是不存在樣式干擾的,但是如果一個組件在一個頁面中復(fù)用多次,依然是有樣式干擾的可能。

PS:下面看下vue中scoped的原理

vue中scoped的作用:

實現(xiàn)組件的私有化, 當前style屬性只屬于當前模塊.

但是當我們使用公共組件的時候會造成很多困難.

scoped的實現(xiàn)原理:

在DOM結(jié)構(gòu)中可以發(fā)現(xiàn),vue通過在DOM結(jié)構(gòu)以及css樣式上加了唯一標記,達到樣式私有化,不污染全局的作用,

詳解vue 中 scoped 樣式作用域的規(guī)則

詳解vue 中 scoped 樣式作用域的規(guī)則

可以看出,加上scoped后的組件里的會多 data-v-5db9451a 屬性, css樣式中可以看出;

1. 給DOM節(jié)點加一個不重復(fù)屬性 data-v-5db9451a 標志唯一性.

2. 使每個樣式選擇器后添加類似于'不重復(fù)屬性'的字段, 類似于作用域的作用,不影響全局.

3. 如果組件內(nèi)部還有組件,只會給最外層的組件里的標簽加上唯一屬性字段,不影響組件內(nèi)部引用的組件.

謹慎使用:

1. 父組件無scoped屬性,子組件帶有scoped,父組件是無法操作子組件的.

2.父組件有scoped屬性,子組件無scoped.父組件也無法設(shè)置子組件樣式.因為父組件的所有標簽都會帶有data-v-5db9451a唯一標志,但子組件不會帶有這個唯一標志屬性.

3.父子組建都有,同理也無法設(shè)置樣式,更改起來增加代碼量.

總結(jié)

到此這篇關(guān)于vue 中 scoped 樣式作用域的規(guī)則的文章就介紹到這了,更多相關(guān)vue scoped 樣式作用域內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 屏山县| 洪洞县| 新津县| 泰兴市| 扶绥县| 江安县| 江津市| 石柱| 台东县| 彰化县| 五台县| 东乡族自治县| 曲周县| 宜良县| 二连浩特市| 贺兰县| 栖霞市| 玉门市| 扶余县| 兴山县| 陆良县| 泗阳县| 河北区| 天镇县| 抚松县| 陇西县| 科尔| 巴林右旗| 新安县| 东海县| 涿州市| 垫江县| 衢州市| 安西县| 承德市| 普宁市| 哈密市| 南和县| 务川| 松桃| 日喀则市|