vue 出现data-v-xxx的原因及解决


Posted in Javascript onAugust 04, 2020

现象:

在Vue开发中,会遇到html被浏览器解析后,在标签中出现'data-v-xxxxx'标记,如下:

<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.

本人理解:

这是在标记vue文件中css时使用scoped标记产生的,因为要保证各文件中的css不相互影响,给每个component都做了唯一的标记,所以每引入一个component就会出现一个新的'data-v-xxx'标记

补充知识:vue---获取元素额外生成的data-v-xxx

vue 出现data-v-xxx的原因及解决

需求描述:由于样式中使用了scoped,所以编译后标签对中生成data-v-xxx属性。在【.dialog_content】的div中 动态添加元素节点p和span时,也需要给元素节点添加data-v-xxx属性。由于data-v-xxx属性是会变化的,那如何获取它,添加在动态添加的元素节点中呢?本博客将给出解决方案。

【解决方法】

获取属性名【document.getElementById("dialog_submit").attributes[0].name】

设置属性【nodeP.setAttribute(dataV, "")】

var nodeP = document.createElement("p"),
nodeSpan = document.createElement("span");
// 获取data-v-xxxx的值
var dataV = document.getElementById("dialog_submit").attributes[0].name;
// 设置属性
nodeP.setAttribute(dataV, "");
nodeSpan.setAttribute(dataV, "");

【补充知识】

当 <style> 标签有 scoped 属性时,它的 CSS 只作用于当前组件中的元素。编译时将生成data-v-xxx属性,如下的“data-v-2bc3d899”就是因为加了scoped.

<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 后,父组件的样式将不会渗透到子组件中。不过一个子组件的根节点会同时受其父组件的 scoped CSS 和子组件的 scoped CSS 的影响。这样设计是为了让父组件可以从布局的角度出发,调整其子组件根元素的样式。

深度作用选择器:

如果希望 scoped 样式中的一个选择器能够作用得“更深”,例如影响子组件,可以使用 >>> 操作符:

<style scoped>
.a >>> .b { /* ... */ }
</style>

上述代码被编译为:

.a[data-v-f3f3eg9] .b { /* ... */ }

以上这篇vue 出现data-v-xxx的原因及解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery扩展插件Validate 2通过参数设置验证规则
Sep 05 Javascript
js两行代码按指定格式输出日期时间
Oct 21 Javascript
javascript自动改变文字大小和颜色的效果的小例子
Aug 02 Javascript
js脚本分页代码分享(7种样式)
Aug 19 Javascript
jquery 中toggle的2种用法详解(推荐)
Sep 02 Javascript
jquery属性,遍历,HTML操作方法详解
Sep 17 Javascript
Jquery 整理元素选取、常用方法一览表
Nov 26 Javascript
用jquery获取select标签中选中的option值及文本的示例
Jan 25 jQuery
vue 使用html2canvas将DOM转化为图片的方法
Sep 11 Javascript
JavaScript基于数组实现的栈与队列操作示例
Dec 22 Javascript
js中的面向对象之对象常见创建方法详解
Dec 16 Javascript
Vue移动端项目实现使用手机预览调试操作
Jul 18 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
Aug 04 #Javascript
vue 实现根据data中的属性值来设置不同的样式
Aug 04 #Javascript
解决Vue中使用keepAlive不缓存问题
Aug 04 #Javascript
vue根据条件不同显示不同按钮的操作
Aug 04 #Javascript
如何在Vue.JS中使用图标组件
Aug 04 #Javascript
如何构建 vue-ssr 项目的方法步骤
Aug 04 #Javascript
vue-quill-editor的使用及个性化定制操作
Aug 04 #Javascript
You might like
php 更新数据库中断的解决方法
2009/06/05 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
PHP执行批量mysql语句的解决方法
2013/05/02 PHP
php中socket的用法详解
2014/10/24 PHP
PHP生成加减算法方式的验证码实例
2018/03/12 PHP
浅析PHP7 的垃圾回收机制
2019/09/06 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
2019/10/22 PHP
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
vue component 中引入less文件报错 Module build failed
2019/04/17 Javascript
Vue中跨域及打包部署到nginx跨域设置方法
2019/08/26 Javascript
vue项目中引入Sass实例方法
2019/08/27 Javascript
Vue可自定义tab组件用法实例
2019/10/24 Javascript
vue3.0中使用postcss-pxtorem的具体方法
2019/11/20 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
python支持断点续传的多线程下载示例
2014/01/16 Python
linecache模块加载和缓存文件内容详解
2018/01/11 Python
python实现剪切功能
2019/01/23 Python
django2笔记之路由path语法的实现
2019/07/17 Python
使用Rasterio读取栅格数据的实例讲解
2019/11/26 Python
使用Tkinter制作信息提示框
2020/02/18 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
2020/11/02 Python
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
下面代码从性能上考虑,有什么问题
2015/04/03 面试题
爷爷追悼会答谢词
2014/01/24 职场文书
医药个人求职信范文
2014/01/29 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
大专学生求职信
2014/07/04 职场文书
项目申请汇报材料
2014/08/16 职场文书
幼儿园中班教师个人总结
2015/02/05 职场文书
2015年银行员工工作总结
2015/04/24 职场文书
python 实现德洛内三角剖分的操作
2021/04/22 Python
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技
解决Python保存文件名太长OSError: [Errno 36] File name too long
2022/05/11 Python