浅谈关于.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 相关文章推荐
node.js中的fs.link方法使用说明
Dec 15 Javascript
jQuery验证元素是否为空的两种常用方法
Mar 17 Javascript
jQuery地图map悬停显示省市代码分享
Aug 20 Javascript
javascript检测flash插件是否被禁用的方法
Jan 14 Javascript
AngularJS实现标签页的两种方式
Sep 05 Javascript
javascript实现根据汉字获取简拼
Sep 25 Javascript
jq给页面添加覆盖层遮罩的实例
Feb 16 Javascript
angular4 共享服务在多个组件中数据通信的示例
Mar 30 Javascript
vue-cli扩展多模块打包的示例代码
Apr 09 Javascript
利用vue.js把静态json绑定bootstrap的table方法
Aug 28 Javascript
微信小程序自定义导航栏
Dec 31 Javascript
Webpack3+React16代码分割的实现
Mar 03 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执行zip与rar解压缩方法实现代码
2010/12/05 PHP
PHP针对JSON操作实例分析
2015/01/12 PHP
如何使用PHP对网站验证码进行破解
2015/09/17 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
2009/08/28 Javascript
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
2013/04/26 Javascript
javascript中直接引用Microsoft的COM生成Word
2014/01/20 Javascript
超链接的禁用属性Disabled使用示例
2014/07/31 Javascript
告诉你什么是javascript的回调函数
2014/09/04 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
2016/07/14 Javascript
fetch 使用及如何接收JS传值
2017/11/11 Javascript
微信小程序实现换肤功能
2018/03/14 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
layui表格设计以及数据初始化详解
2019/10/26 Javascript
基于PHP pthreads实现多线程代码实例
2020/06/24 Javascript
javascript实现前端input密码输入强度验证
2020/06/24 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
2020/07/26 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
使用python模拟命令行终端的示例
2019/08/13 Python
Python PO设计模式的具体使用
2019/08/16 Python
使用python绘制cdf的多种实现方法
2020/02/25 Python
keras 多gpu并行运行案例
2020/06/10 Python
HTML5 层的叠加的实现
2020/07/07 HTML / CSS
财务助理岗位职责
2013/11/10 职场文书
工作失误检讨书范文大全
2014/01/13 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
教师党员批评与自我批评发言稿
2014/10/15 职场文书
大学毕业论文致谢词
2015/05/14 职场文书
2015年财务个人工作总结范文
2015/05/22 职场文书
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python
Python学习开发之图形用户界面详解
2021/08/23 Python