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

樣式穿透vue中的scoped詳談

 更新時間:2022年07月15日 16:29:36   作者:麥芒  
這篇文章主要為大家介紹了樣式穿透vue中的scoped示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

我們平常在開發(fā)過程中特別是Vue技術(shù)棧的前端同學(xué)們,經(jīng)常會用到一些UI組件庫,特別是element-ui使用的頻率是比較高的,我們經(jīng)常會修改這些UI組件庫的默認樣式時會使用到深度選擇器,大家都知道這么做,有沒有想過為什么?趁著疫情在家于是研究了一下,在這里分享一下

scoped的使命與作用

這里用vue做了一個demo,兩個頁面,一個頁面中是掘金的a標簽,一個頁面是vue的a標簽,我們一起看下scoped的作用,給其中一個頁面的a標簽加上紅色,另外一個沒有加任何樣式,并且沒有在style中使用scoped,如下圖

答案大家應(yīng)該都知道,沒錯!兩個頁面中的鏈接文字都變成了紅色,當我們點擊juejin這個頁面的時候,瀏覽器會自動引入當前頁面的樣式,再去點擊github時瀏覽器會復(fù)用這個樣式,所以a鏈接的顏色都會變紅,因為Vue是單頁面應(yīng)用,所以我們打開的每一個頁面的樣式都會被夾在成全局的樣式,解決辦法就是加上scoped,這時a標簽的顏色就不同了,我們打開頁面看下a標簽(下圖)

這時候的a標簽多了一個data-v-xxxxxxx這個東西,這個就是Vue替我們加上的, Vue在構(gòu)建構(gòu)建這個項目的時候會提我們以組件單位,不同的組件下所有的元素都會加上同一個類似組件ID的東西,同時會在我們寫的樣式上以屬性選擇器的方式拼接上這個唯一標識,我們來驗證一下,(下圖)

對的,我們加上scoped之后Vue會在這段樣式的最后一段加上這個屬性,然后通過屬性選擇器選中這個元素,從而實現(xiàn)元素樣式的隔離,接下來我們一起看下scoped的副作用

scoped的副作用

這時我們引入element-ui驗證一下scoped的副作用,這里寫了一個demo(下圖),這里也使用了scoped

我們檢查一下元素(下圖)

注意這里的input元素是沒有例如data-v-xxxxxx的唯一標識的但是我們自己寫的樣式(my-Txt input)在被構(gòu)建之后是什么樣子的呢?(下圖)

如上圖所示,我們自己寫的樣式卻被拼接了這個唯一的標識,所以我們再怎么操作也是沒法命中這個元素的,也就是說Vue并沒有給這個input加上這個標識,但是卻在我們的樣式中加上了這個標識,但是我們?nèi)绻裺coped去掉,那么就能命中目標,但是這樣我們是不推薦的,樣式會被打包到統(tǒng)一的樣式中,這就是scoped的副作用,那我們怎么解決它呢?樣式穿透

樣式穿透(::v-deep)

我們現(xiàn)在就加上樣式穿透就可以命中目標

<style scoped>
.my-Txt {
  width: 200px;
}
.my-Txt ::v-deep input {
  background-color: pink;
}
</style>

這時候我們看下構(gòu)建后的樣式Vue會怎么處理(下圖)

我們可以看到這個唯一標識從input后面跑到了my-Txt的后面了,也就是說我們不加入這個::v-deep,Vue永遠都會把這個唯一的標識拼接在我們寫的樣式的最后一段,如果我們想改變這個唯一標識的位置,就需要你用樣式穿透來指定,那么上圖的意思就是帶有這個唯一標識的my-Txt的元素,它的子元素中的input會應(yīng)用這個樣式,而我們寫的這個my-Txt也是具備這個唯一標識的,從上面圖可以看到

總結(jié)

為了解決多頁面應(yīng)用中不同組件中的樣式隔離問題,Vue引入了scoped樣式的概念,但是Vue不會把所有的元素都加上唯一標識,導(dǎo)致我們沒辦法命中這個元素的時候,我們就要用樣式穿透來指定這個唯一辨識被拼接到css樣式的哪一段?。。?/p>

以上就是樣式穿透vue中的scoped的詳細內(nèi)容,更多關(guān)于vue scoped樣式穿透的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解Vue-Router的安裝與使用

    詳解Vue-Router的安裝與使用

    Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,讓構(gòu)建單頁面應(yīng)用變得易如反掌。本文介紹下Vue Router的安裝與使用
    2021-06-06
  • vue如何解決echarts升級后本地無法啟動的問題

    vue如何解決echarts升級后本地無法啟動的問題

    這篇文章主要介紹了vue如何解決echarts升級后本地無法啟動的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Vue前端vue.config.js簡介

    Vue前端vue.config.js簡介

    vue.config.js?是一個可選的配置文件,如果項目的?(和?package.json?同級的)?根目錄中存在這個文件,那么它會被?@vue/cli-service?自動加載,本文重點介紹VUE前端vue.config.js簡介,感興趣的朋友跟隨小編一起看看吧
    2023-01-01
  • Vue組件data函數(shù)的具體使用

    Vue組件data函數(shù)的具體使用

    在Vue組件中,data函數(shù)用于定義組件的數(shù)據(jù),本文主要介紹了Vue組件data函數(shù)的具體使用,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • 詳解Vue3中shallowRef和shallowReactive的使用

    詳解Vue3中shallowRef和shallowReactive的使用

    這篇文章主要為大家介紹了Vue3中shallowRef和shallowReactive函數(shù)的使用方法,文中的示例代碼講解詳細,對我們學(xué)習(xí)Vue有一定的幫助,需要的可以參考一下
    2022-07-07
  • Vue使用鼠標在Canvas上繪制矩形

    Vue使用鼠標在Canvas上繪制矩形

    這篇文章主要介紹了Vue使用鼠標在Canvas上繪制矩形,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 通過npm引用的vue組件使用詳解

    通過npm引用的vue組件使用詳解

    本文章通過實現(xiàn)一個vue-dialog的彈出層組件,然后附加說明如果發(fā)布此包到npm,且能被其他項目使用。本文給大家介紹的非常詳細,需要的的朋友參考下
    2017-03-03
  • 淺談vux之x-input使用以及源碼解讀

    淺談vux之x-input使用以及源碼解讀

    這篇文章主要介紹了淺談vux之x-input使用以及源碼解讀,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • elementUI實現(xiàn)下拉選項加多選框的示例代碼

    elementUI實現(xiàn)下拉選項加多選框的示例代碼

    因產(chǎn)品需求和UI樣式調(diào)整,本文主要實現(xiàn)elementUI下拉選項加多選框的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • uniapp中app與webview的通訊代碼示例

    uniapp中app與webview的通訊代碼示例

    這篇文章主要給大家介紹了關(guān)于uniapp中app與webview通訊的相關(guān)資料,這里的通信主要是打包APP端和web-view內(nèi)嵌網(wǎng)頁的雙向通信,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-03-03

最新評論

新丰县| 西林县| 万州区| 棋牌| 吉林省| 玉山县| 岐山县| 西乡县| 四会市| 永定县| 广西| 海南省| 桐柏县| 宿迁市| 舒兰市| 剑河县| 衡南县| 交口县| 泸水县| 镇江市| 鄯善县| 中山市| 如皋市| 昆明市| 巴林左旗| 临江市| 镇远县| 郯城县| 新乐市| 延津县| 谢通门县| 乌拉特后旗| 西安市| 邮箱| 茂名市| 紫阳县| 淮北市| 昌宁县| 皮山县| 漾濞| 讷河市|