简单分析vue组件scoped的作用

本篇文章给大家带来了关于vue的相关知识,其中主要介绍了关于scoped属性的相关问题,在style上加入scoped属性, 就会在此组件的标签上加上一个随机生成的data-v开头的属性,下面一起来看一下,希望对大家有帮助。

简单分析vue组件scoped的作用

【相关推荐:vue、vue】

vue组件-scoped作用

目的: 解决多个组件样式名相同, 冲突问题

需求: p标签名选择器, 设置背景色

问题: 发现组件里的p和外面的p都生效了

立即学习“前端免费学习笔记(深入)”;

解决: 给Pannel.vue组件里style标签上加scoped属性即可


登录后复制

// style 添加 scoped 属性后,可以实现样式独立作用域p{    background-color: pink;}

登录后复制

在style上加入scoped属性, 就会在此组件的标签上加上一个随机生成的data-v开头的属性

而且必须是当前组件的元素, 才会有这个自定义属性, 才会被这个样式作用到

在这里插入图片描述

总结: style上加scoped, 组件内的样式只在当前vue组件生效

scoped的使命与作用

这里用vue做了一个demo,两个页面,一个页面中是掘金的a标签,一个页面是vue的a标签,我们一起看下scoped的作用,给其中一个页面的a标签加上红色,另外一个没有加任何样式,并且没有在style中使用scoped,如下图

在这里插入图片描述

答案大家应该都知道,没错!两个页面中的链接文字都变成了红色,当我们点击juejin这个页面的时候,浏览器会自动引入当前页面的样式,再去点击github时浏览器会复用这个样式,所以a链接的颜色都会变红,因为Vue是单页面应用,所以我们打开的每一个页面的样式都会被夹在成全局的样式,解决办法就是加上scoped,这时a标签的颜色就不同了,我们打开页面看下a标签(下图)

在这里插入图片描述

这时候的a标签多了一个data-v-xxxxxxx这个东西,这个就是Vue替我们加上的, Vue在构建构建这个项目的时候会提我们以组件单位,不同的组件下所有的元素都会加上同一个类似组件ID的东西,同时会在我们写的样式上以属性选择器的方式拼接上这个唯一标识,我们来验证一下,(下图)

在这里插入图片描述

对的,我们加上scoped之后Vue会在这段样式的最后一段加上这个属性,然后通过属性选择器选中这个元素,从而实现元素样式的隔离,接下来我们一起看下scoped的副作用

scoped的副作用

这时我们引入element-ui验证一下scoped的副作用,这里写了一个demo(下图),这里也使用了scoped

在这里插入图片描述
注意这里的input元素是没有例如data-v-xxxxxx的唯一标识的

但是我们自己写的样式(my-Txt input)在被构建之后是什么样子的呢?(下图)

在这里插入图片描述

如上图所示,我们自己写的样式却被拼接了这个唯一的标识,所以我们再怎么操作也是没法命中这个元素的,也就是说Vue并没有给这个input加上这个标识,但是却在我们的样式中加上了这个标识,但是我们如果把scoped去掉,那么就能命中目标,但是这样我们是不推荐的,样式会被打包到统一的样式中,这就是scoped的副作用,那我们怎么解决它呢?样式穿透

.my-Txt {  width: 200px;}.my-Txt ::v-deep input {  background-color: pink;}

登录后复制

在这里插入图片描述

我们可以看到这个唯一标识从input后面跑到了my-Txt的后面了,也就是说我们不加入这个::v-deep,Vue永远都会把这个唯一的标识拼接在我们写的样式的最后一段,如果我们想改变这个唯一标识的位置,就需要你用样式穿透来指定,那么上图的意思就是带有这个唯一标识的my-Txt的元素,它的子元素中的input会应用这个样式,而我们写的这个my-Txt也是具备这个唯一标识的,从上面图可以看到。

【相关推荐:vue、vue】

以上就是简单分析vue组件scoped的作用的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3231711.html

(0)
上一篇 2025年4月1日 16:59:55
下一篇 2025年4月1日 17:00:14

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • VUE组件的创建、渲染、及注册(总结分享)

    本篇文章给大家带来了关于vue的相关知识,其中主要介绍了关于组件的创建、渲染以及注册的相关问题,创建的组件不要写el因为最终所有的组件都要被vm管理,由vm决定服务的对象,下面一起来看一下,希望对大家有帮助。 【相关推荐:vue、vue】 …

    2025年4月1日
    000
  • 详解v-bind怎么动态绑定style属性

    v-bind怎么动态绑定style属性?本篇文章带大家详细了解一下v-bind指令动态绑定style属性的多种语法,希望对大家有所帮助! v-bind可以动态设置style属性,用以绑定内联样式。写法: 登录后复制 一、v-bind动态绑定…

    2025年4月1日 编程技术
    100
  • 实例解决vue中使用lang=“scss“出现的报错

    本篇文章给大家带来了关于vue的相关知识,其中主要介绍了关于使用 lang=“scss“ 报错的相关问题,这是因为当前sass-loader的版本太高,webpack编译时出现了错误,下面一起来看一下,希望对大家有帮助。 【相关推荐:vue…

    2025年4月1日
    100
  • 详解v-bind怎么动态绑定class属性

    v-bind怎么动态绑定class属性?本篇文章带大家详细了解一下v-bind指令动态绑定class属性的多种语法,希望对大家有所帮助! v-bind可以动态设置class属性,用以实现动态样式。写法: 登录后复制 一、v-bind动态绑定…

    2025年4月1日 编程技术
    100
  • Vue中父组件向子组件传递数据的方法

    本篇文章给大家带来了关于vue的相关知识,其中主要总结了几种vue中父子组件传递数据的方法,包括了props & event、ref属性、provide & inject等等内容,具有一定的参考价值,下面一起来看一下,希望对…

    2025年4月1日
    100
  • 通俗易懂!详解VUEX状态仓库管理

    vuex 是一个专为 vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。简单来说就是:应用遇到多个组件共享状态时,使用vuex。 VueX 是一个专门为 V…

    2025年4月1日
    100
  • 实例介绍Vue通过$emit方法实现子父组件通信

    本篇文章给大家带来了关于vue的相关知识,其中主要介绍了关于$emit的相关问题,在子组件中通过$emit来调用父组件中的方法实现,下面一起来看一下,希望对大家有帮助。 【相关推荐:vue、vue】 Vue可以通过props属性,将参数从父…

    2025年4月1日
    100
  • 深入了解Vue计算属性computed的使用

    计算属性是 vue 组件的一个重要内容,下面本篇文章就来带大家了解一下vue computed属性,聊聊计算属性computed的使用方法,希望对大家有所帮助! Vue中的computed属性称为计算属性。在这一节中,我们学习Vue中的计算…

    2025年4月1日
    100
  • Vue详解之增加组件扩展性的slot

    本篇文章给大家带来了关于vue的相关知识,其中主要介绍了增加组件扩展性的slot的相关问题,组件的插槽也是为了让我们封装的组件更加具有扩展性,让使用者可以决定组件内部的一些内容到底展示什么,下面一起来看一下,希望对大家有帮助。 【相关推荐:…

    2025年4月1日
    100
  • Vue中slot使用解析之具名插槽与作用域插槽

    本篇文章给大家带来了关于vue的相关知识,其中主要介绍了关于具名插槽与作用域插槽的使用相关问题,插槽就是子组件中的提供给父组件使用的一个占位符,插槽包括默认插槽、具名插槽和作用域插槽,下面一起来看一下,希望对大家有帮助。 【相关推荐:vue…

    2025年4月1日
    100

发表回复

登录后才能评论