浅谈关于.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动态调整iframe高度的代码
Apr 10 Javascript
Javascript this 的一些学习总结
Aug 31 Javascript
JS清除IE浏览器缓存的方法
Jul 26 Javascript
jQuery实现的AJAX简单弹出层效果代码
Nov 26 Javascript
Bootstarp风格的toggle效果分享
Feb 23 Javascript
js判断鼠标位置是否在某个div中的方法
Feb 26 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
Sep 20 Javascript
AngularJS实现表单验证功能
Jan 09 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
May 18 Javascript
webpack 插件html-webpack-plugin的具体使用
Apr 09 Javascript
Vue实现PC端靠边悬浮球的代码
May 09 Javascript
Element Badge标记的使用方法
Jul 27 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中获取关键词及所属来源搜索引擎名称的代码
2011/02/15 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
php实现TCP端口检测的方法
2015/04/01 PHP
浅谈php+phpStorm+xdebug配置方法
2015/09/17 PHP
php分页查询的简单实现代码
2017/03/14 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
2019/02/28 PHP
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
使图片旋转的3种解决方案
2013/11/21 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
2015/11/26 Javascript
js实现图片切换(动画版)
2016/12/25 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
JS图片轮播与索引变色功能实例详解
2017/07/06 Javascript
简单实现js轮播图效果
2017/07/14 Javascript
vue-cli + sass 的正确打开方式图文详解
2017/10/27 Javascript
vue项目中axios请求网络接口封装的示例代码
2018/12/18 Javascript
Electron-vue开发的客户端支付收款工具的实现
2019/05/24 Javascript
layui table单元格事件修改值的方法
2019/09/24 Javascript
细说webpack6 Babel的使用详解
2019/09/26 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
python处理圆角图片、圆形图片的例子
2014/04/25 Python
python笔记:mysql、redis操作方法
2017/06/28 Python
Python3实现简单可学习的手写体识别(实例讲解)
2017/10/21 Python
解决已经安装requests,却依然提示No module named requests问题
2018/05/18 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
2020/01/05 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
2020/02/27 Python
如何把外网python虚拟环境迁移到内网
2020/05/18 Python
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
详解使用canvas保存网页为pdf文件支持跨域
2018/11/23 HTML / CSS
八年级美术教学反思
2014/02/02 职场文书
会计人员岗位职责
2014/03/19 职场文书
日化店促销方案
2014/03/26 职场文书
工作评语大全
2014/04/26 职场文书
小鞋子观后感
2015/06/05 职场文书
2015年迎新晚会策划书
2015/07/16 职场文书
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang