vue 出現(xiàn)data-v-xxx的原因及解決
現(xiàn)象:
在Vue開發(fā)中,會(huì)遇到html被瀏覽器解析后,在標(biāo)簽中出現(xiàn)'data-v-xxxxx'標(biāo)記,如下:
<div data-v-fcba8876 class="xxx"> aaa</div>
原因:
來看官方解釋:
<style scoped>
@media (min-width: 250px) {
.list-container:hover {
background: orange;
}
}
</style>
The optional scoped attribute automatically scopes this CSS to your component by adding a unique attribute (such as data-v-21e5b78) to elements and compiling .list-container:hover to something like .list-container[data-v-21e5b78]:hover.
本人理解:
這是在標(biāo)記vue文件中css時(shí)使用scoped標(biāo)記產(chǎn)生的,因?yàn)橐WC各文件中的css不相互影響,給每個(gè)component都做了唯一的標(biāo)記,所以每引入一個(gè)component就會(huì)出現(xiàn)一個(gè)新的'data-v-xxx'標(biāo)記
補(bǔ)充知識(shí):vue---獲取元素額外生成的data-v-xxx

需求描述:由于樣式中使用了scoped,所以編譯后標(biāo)簽對(duì)中生成data-v-xxx屬性。在【.dialog_content】的div中 動(dòng)態(tài)添加元素節(jié)點(diǎn)p和span時(shí),也需要給元素節(jié)點(diǎn)添加data-v-xxx屬性。由于data-v-xxx屬性是會(huì)變化的,那如何獲取它,添加在動(dòng)態(tài)添加的元素節(jié)點(diǎn)中呢?本博客將給出解決方案。
【解決方法】
獲取屬性名【document.getElementById("dialog_submit").attributes[0].name】
設(shè)置屬性【nodeP.setAttribute(dataV, "")】
var nodeP = document.createElement("p"),
nodeSpan = document.createElement("span");
// 獲取data-v-xxxx的值
var dataV = document.getElementById("dialog_submit").attributes[0].name;
// 設(shè)置屬性
nodeP.setAttribute(dataV, "");
nodeSpan.setAttribute(dataV, "");
【補(bǔ)充知識(shí)】
當(dāng) <style> 標(biāo)簽有 scoped 屬性時(shí),它的 CSS 只作用于當(dāng)前組件中的元素。編譯時(shí)將生成data-v-xxx屬性,如下的“data-v-2bc3d899”就是因?yàn)榧恿藄coped.
<style scoped>
.title {
color:blue;
}
</style>
<template>
<div class="title">hello</div>
</template>
上述代碼被編譯為:
<style>
.title[data-v-f3f3eg9] {
color: blue;
}
</style>
<template>
<div class="title" data-v-f3f3eg9>hello</div>
</template>
使用 scoped 后,父組件的樣式將不會(huì)滲透到子組件中。不過一個(gè)子組件的根節(jié)點(diǎn)會(huì)同時(shí)受其父組件的 scoped CSS 和子組件的 scoped CSS 的影響。這樣設(shè)計(jì)是為了讓父組件可以從布局的角度出發(fā),調(diào)整其子組件根元素的樣式。
深度作用選擇器:
如果希望 scoped 樣式中的一個(gè)選擇器能夠作用得“更深”,例如影響子組件,可以使用 >>> 操作符:
<style scoped>
.a >>> .b { /* ... */ }
</style>
上述代碼被編譯為:
.a[data-v-f3f3eg9] .b { /* ... */ }
以上這篇vue 出現(xiàn)data-v-xxx的原因及解決就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue iview實(shí)現(xiàn)動(dòng)態(tài)路由和權(quán)限驗(yàn)證功能
這篇文章主要介紹了vue iview實(shí)現(xiàn)動(dòng)態(tài)路由和權(quán)限驗(yàn)證功能,動(dòng)態(tài)路由控制分為兩種:一種是將所有路由數(shù)據(jù)存儲(chǔ)在本地文件中,另一種則是本地只存儲(chǔ)基本路由,具體內(nèi)容詳情大家參考下此文2018-04-04
vue表格n-form中自定義增加必填星號(hào)的實(shí)現(xiàn)代碼
這篇文章主要介紹了vue表格n-form中自定義增加必填星號(hào),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-12-12
Vue3父子組件互調(diào)方法的實(shí)現(xiàn)
本文主要介紹了Vue3父子組件互調(diào)方法的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
Vue Element-ui實(shí)現(xiàn)樹形控件節(jié)點(diǎn)添加圖標(biāo)詳解
這篇文章主要為大家介紹了Element-ui實(shí)現(xiàn)樹形控件節(jié)點(diǎn)添加圖標(biāo),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-11-11

