浅谈关于.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 相关文章推荐
索趣科技的答案
Feb 07 Javascript
JavaScript入门教程(2) JS基础知识
Jan 31 Javascript
IE和firefox浏览器的event事件兼容性汇总
Dec 06 Javascript
javaScript 删除字符串空格多种方法小结
Oct 24 Javascript
node在两个div之间移动,用ztree实现
Mar 06 Javascript
AngularJS内置指令
Feb 04 Javascript
JavaScript保存并运算页面中数字类型变量的写法
Jul 06 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
Jul 15 Javascript
Vue生命周期示例详解
Apr 12 Javascript
基于JavaScript实现多级菜单效果
Jul 25 Javascript
js+html实现周岁年龄计算器
Jun 25 Javascript
JS实现移动端可折叠导航菜单(现代都市风)
Jul 07 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
PHP用户指南-cookies部分
2006/10/09 PHP
php算开始时间到过期时间的相隔的天数
2011/01/12 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
2017/06/10 PHP
Yii框架通过请求组件处理get,post请求的方法分析
2019/09/03 PHP
jquery的颜色选择插件实例代码
2008/10/02 Javascript
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
深入解析Backbone.js框架的依赖库Underscore.js的作用
2016/05/07 Javascript
Bootstrap学习笔记之js组件(4)
2016/06/12 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
2016/06/13 Javascript
AngularJS中$watch和$timeout的使用示例
2016/09/20 Javascript
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
Vuejs 页面的区域化与组件封装的实现
2017/09/11 Javascript
浅谈Angular HttpClient简单入门
2018/05/04 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
[47:39]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs OPTIC
2018/03/31 DOTA
Pyramid将models.py文件的内容分布到多个文件的方法
2013/11/27 Python
Python 分析Nginx访问日志并保存到MySQL数据库实例
2014/03/13 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
2015/05/02 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
python 对dataframe下面的值进行大规模赋值方法
2018/06/09 Python
python使用wxpy轻松实现微信防撤回的方法
2019/02/21 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
Python实现生成密码字典的方法示例
2019/09/02 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
基于Python3.7.1无法导入Numpy的解决方式
2020/03/09 Python
美国首屈一指的高品质珠宝设计师和零售商:Allurez
2018/01/23 全球购物
给导游的表扬信
2014/01/10 职场文书
职务聘任书范文
2014/03/29 职场文书
中班上学期幼儿评语
2014/04/30 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL