浅谈关于.vue文件中style的scoped属性


Posted in Javascript onAugust 19, 2017

本文介绍了.vue文件中style的scoped属性以及踩到的坑,具体如下:

scoped可以实现style只作用于当前的.vue文件

<template>
  <div class="user"></div>
</template>
<script>

</script>

<style lang='less' scoped>
.user {
  color:#333;
}
</style>

上面的文件渲染出的dom结构会是这样的

<div data-v-53795c54 class="user"></div>

css样式是这样的

.user[data-v-53795c54] {
  color:#333;
}

这样就现实了样式只作用于当前.vue文件。

问题:添加scoped属性后样式不起作用

原因是,css被构建成.user[data-v-53795c54] 但是doc节点依然是普通的<div class="user"></div>,导致样式不能作用在dom上而失效。

原因在引用的组件上,解决的方法是将scoped属性关闭。

scoped关闭时的使用建议

如果需要将scoped关闭,那么style就是作用于整个单页应用

可是我们仍然想要样式之作用于当前的.vue文件,减少对其他文件样式的影响

1、给template下的根节点加一个class,并基于这个class添加样式

<template>
<div class="user">
<p class="name">zaunk</p>
</div>
</template>
<script>

</script>

<style lang='less>
.user {
color:#333;
.name {
color:#122222;
}
}
</style>

2、基于第一条建议,不要有定义两个相同class名称的根节点,因为都作用于整个单页会有一个失效。

3、不要使用 span {}这种做样式设置。因为

<template>
<div class="user">
<el-button class="name">zaunk</el-button>
</div>
</template>
<style lang='less>
.user {
color:#333;
span {
color:#122222;
}
}
</style>

上面的样式同样会作用于组件el-button,这是很危险的

在vue组件中style scoped中遇到的坑

浅谈关于.vue文件中style的scoped属性

在uve组件中我们我们经常需要给style添加scoped来使得当前样式只作用于当前组件的节点。添加scoped之后,实际上vue在背后做的工作是将当前组件的节点添加一个像data-v-1233这样唯一属性的标识,当然也会给当前style的所有样式添加[data-v-1233]这样的话,就可以使得当前样式只作用于当前组件的节点。但是我们需要注意的是如果我们添加了子组件,同样的,如果子组件也用scoped标识了,那么在父组件中是不能设置子组件中的节点的。若父组件有scoped,子组件没有设置,同样,也是不能在父组件中设置子组件的节点的样式的,因为父组件用了scoped,那么父组件中style设置的样式都是唯一的了,不会作用与其他的组件样式,我在用vue-quill-editor富文本编辑器的时候就遇到了这个坑,我只是想让内容区设置一个高度,这样的话,是必须在App.vue中设置的,我们App.vue相当于根容器,没有设置scoped,所以是可以设置的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用正则xmlHttp实现的偷(转)
Jan 22 Javascript
jQuery get和post 方法传值注意事项
Nov 03 Javascript
JavaScript中OnLoad几种使用方法
Dec 15 Javascript
JS动态创建元素的两种方法
Apr 20 Javascript
前端面试题及答案整理(二)
Aug 26 Javascript
js基于myFocus实现轮播图效果
Feb 14 Javascript
基于require.js的使用(实例讲解)
Sep 07 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
Dec 11 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
Jul 26 Javascript
在vue中给列表中的奇数行添加class的实现方法
Sep 05 Javascript
微信小程序基于Taro的分享图片功能实践详解
Jul 12 Javascript
原生js实现表格翻页和跳转
Sep 29 Javascript
如何理解Vue的作用域插槽的实现原理
Aug 19 #Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
Aug 19 #Javascript
JavaScript文件的同步和异步加载的实现代码
Aug 19 #Javascript
深入理解ES6学习笔记之块级作用域绑定
Aug 19 #Javascript
深入理解ES6的迭代器与生成器
Aug 19 #Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
Aug 19 #jQuery
Vue自定义事件(详解)
Aug 19 #Javascript
You might like
dedecms模板标签代码官方参考
2007/03/17 PHP
PHP学习之数组的定义和填充
2011/04/17 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
自己写的php curl库实现整站克隆功能
2015/02/12 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
PHP调用Mailgun发送邮件的方法
2017/05/04 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
2019/05/13 PHP
Javascript Object.extend
2010/05/18 Javascript
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
jquery实现兼容IE8的异步上传文件
2015/06/15 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
2016/01/23 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
js 弹出虚拟键盘修改密码的简单实例
2016/10/10 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
gulp教程_从入门到项目中快速上手使用方法
2017/09/14 Javascript
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
JavaScript fetch接口案例解析
2018/08/30 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
vue3.0 自适应不同分辨率电脑的操作
2021/02/06 Vue.js
python实现代码行数统计示例分享
2014/02/10 Python
Python复数属性和方法运算操作示例
2017/07/21 Python
对Python获取屏幕截图的4种方法详解
2019/08/27 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
2020/02/28 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
Django返回HTML文件的实现方法
2020/09/17 Python
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
荷兰最大的儿童服装店:The Kids Republic
2019/04/13 全球购物
银行实习人员自我鉴定
2013/09/22 职场文书
纪念九一八事变演讲稿:忘记意味着背叛
2014/09/14 职场文书
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android