浅谈关于.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对象之间的转换 jQuery对象和原声DOM
Mar 07 Javascript
jquery事件preventDefault()方法用法实例
Jan 16 Javascript
Javascript代码实现仿实例化类
Apr 03 Javascript
JavaScript实现基于Cookie的存储类实例
Apr 10 Javascript
jquery动态导航插件dynamicNav用法实例分析
Sep 06 Javascript
jQuery中选择器的基础使用教程
May 23 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
Sep 19 Javascript
JS实现非首屏图片延迟加载的示例
Jan 06 Javascript
vue基础之data存储数据及v-for循环用法示例
Mar 08 Javascript
详解Vue依赖收集引发的问题
Apr 22 Javascript
原生js通过一行代码实现简易轮播图
Jun 05 Javascript
Vue包大小优化的实现(从1.72M到94K)
Feb 18 Vue.js
如何理解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实现Session存储到Redis
2015/11/11 PHP
php上传图片类及用法示例
2016/05/11 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
PHP分享图片的生成方法
2018/04/25 PHP
Laravel框架路由管理简单示例
2019/05/07 PHP
javascript StringBuilder类实现
2008/12/22 Javascript
简单的jquery拖拽排序效果实现代码
2011/09/20 Javascript
Javascript拓展String方法小结
2013/07/08 Javascript
jquery、js调用iframe父窗口与子窗口元素的方法整理
2014/07/31 Javascript
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
JS操作HTML自定义属性的方法
2015/02/10 Javascript
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
详解JavaScript UTC时间转换方法
2016/01/07 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
jQuery获取file控件中图片的宽高与大小
2016/08/04 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
JavaScript实现捕获鼠标坐标
2020/04/12 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
python3 拼接字符串的7种方法
2018/09/12 Python
numpy.meshgrid()理解(小结)
2019/08/01 Python
Python求平面内点到直线距离的实现
2020/01/19 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
2020/02/17 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
HTML5单页面手势滑屏切换原理分析
2017/07/10 HTML / CSS
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
2014/03/05 面试题
UNIX操作系统结构由哪几部分组成
2016/02/17 面试题
宿舍违规检讨书
2014/01/12 职场文书
2014年底个人工作总结
2015/03/10 职场文书
2015年乡镇民政工作总结
2015/05/13 职场文书
钢铁是怎样炼成的读书笔记
2015/06/29 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
通过T-SQL语句创建游标与实现数据库加解密功能
2022/03/16 SQL Server