浅谈关于.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 相关文章推荐
javascript数组组合成字符串的脚本
Jan 06 Javascript
javascript jQuery插件练习
Dec 24 Javascript
关于onchange事件在IE和FF下的表现及解决方法
Mar 08 Javascript
自己封装的一个简单的倒计时功能实例
Nov 23 Javascript
js实现上下左右弹框划出效果
Mar 08 Javascript
JavaScript递归算法生成树形菜单
Aug 15 Javascript
node文字生成图片的示例代码
Oct 26 Javascript
Vue微信项目按需授权登录策略实践思路详解
May 07 Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
Jul 10 Javascript
微信公众号平台接口开发 菜单管理的实现
Aug 14 Javascript
JS数组属性去重并校验重复数据
Jan 10 Javascript
如何利用JavaScript实现二叉搜索树
Apr 02 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安装攻略:常见问题解答(三)
2006/10/09 PHP
PHP的加密方式及原理
2012/06/14 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
用PHP来计算某个目录大小的方法
2014/04/01 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
php字符串的替换,分割和连接方法
2016/05/23 PHP
利用ajax和PHP实现简单的流程管理
2017/03/23 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
2020/07/24 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
javascript动画之圆形运动,环绕鼠标运动作小球
2010/07/20 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
2013/12/13 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
jQuery实现 上升、下降、删除、添加一行代码
2017/03/06 Javascript
js实现微信/QQ直接跳转到支付宝APP打开口令领红包功能
2018/01/09 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
解决vue scoped html样式无效的问题
2020/10/24 Javascript
python基于xml parse实现解析cdatasection数据
2014/09/30 Python
Python中tell()方法的使用详解
2015/05/24 Python
Django日志模块logging的配置详解
2017/02/14 Python
Django 登陆验证码和中间件的实现
2018/08/17 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
2018/10/21 Python
Python实现去除列表中重复元素的方法总结【7种方法】
2019/02/16 Python
Python原始套接字编程实例解析
2020/01/29 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
pandas apply多线程实现代码
2020/08/17 Python
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
Ajax和javascript的区别
2013/07/20 面试题
会计专业自我鉴定
2014/02/10 职场文书
《大作家的小老师》教学反思
2014/04/16 职场文书
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
支行行长竞聘报告
2014/11/06 职场文书
bootstrapv4轮播图去除两侧阴影及线框的方法
2022/02/15 HTML / CSS