广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue中scoped如何使用
  • 381
分享到

Vue中scoped如何使用

2024-04-02 19:04:59 381人浏览 八月长安
摘要

本篇文章为大家展示了Vue中scoped如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。scoped的由来CSS一直有个令人困扰的作用域问题:即使是模块化编程

本篇文章为大家展示了Vue中scoped如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

scoped的由来

CSS一直有个令人困扰的作用域问题:即使是模块化编程下,在对应的模块的js中import css进来,这个css仍然是全局的。为了避免css样式之间的污染,vue中引入了scoped这个概念。

在vue文件中的style标签上,有一个特殊的属性:scoped。当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件。通过设置该属性,使得组件之间的样式不互相污染。如果一个项目中的所有style标签全部加上了scoped,相当于实现了样式的模块化。

但是这些样式又是如何实现不相互影响呢?

scoped的原理

vue中的scoped 通过在DOM结构以及css样式上加唯一不重复的标记:data-v-hash的方式,以保证唯一(而这个工作是由过PostCSS转译实现的),达到样式私有化模块化的目的。

总结一下scoped三条渲染规则:

  1. html的DOM节点加一个不重复data属性(形如:data-v-19fca230)来表示他的唯一性

  2. 在每句css选择器的末尾(编译后的生成的css语句)加一个当前组件的data属性选择器(如[data-v-19fca230])来私有化样式

  3. 如果组件内部包含有其他组件,只会给其他组件的最外层标签加上当前组件的data属性

上个栗子。转译前:

<style lang="scss" scoped>
  .test {
    background: blue;
    span{
      color:red;
    }
  }
</style>
<template>
  <div class="test">
    <span>hello world !</span>
  </div>
</template>

转译后:

<style lang="css">
  .test[data-v-ff86ae42] {
    background: blue;
  }
  .test span[data-v-ff86ae42]{
    color: red;
  }
</style>
<template>
  <div class="test" data-v-ff86ae42>
    <span data-v-ff86ae42>hello world !</span>
  </div>
</template>

可以看出:PostCSS会给一个组件中的所有dom添加了一个独一无二的动态属性data-v-xxxx,然后,给CSS选择器额外添加一个对应的属性选择器来选择该组件中dom,这种做法使得样式只作用于含有该属性的dom——组件内部dom, 从而达到了'样式模块化'的效果.

穿透scoped

但是,在做项目中,会遇到这么一个问题,即:引用了第三方组件,需要在组件中局部修改第三方组件的样式,而又不想去除scoped属性造成组件之间的样式污染。那么有哪些解决办法呢?

  1. 不使用scoped 省略(个人不推荐)

  2. 在模板中使用两次style标签:

<style lang="scss">
  
</style>
<style lang="scss" scoped>
  
</style>
<!--vue官网中提到:一个 .vue 文件可以包含多个style标签。所以上面的写法是没有问题的。-->

穿透scoped >>>

<template>
 <div class="box">
  <dialog></dialog>
 </div>
</template>
<!--使用 >>>或者 /deep/ 操作符(Sass 之类的预处理器无法正确解析 >>>,可以使用/deep/)-->
<style lang="scss" scoped>
.box {
 /deep/ input {
  width: 166px;
  text-align: center;
 }
}
</style>
或者
<style lang="scss" scoped>
.box >>> input {
  width: 166px;
  text-align: center;
 }
}
</style>

上述内容就是Vue中scoped如何使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网JavaScript频道。

--结束END--

本文标题: Vue中scoped如何使用

本文链接: https://www.lsjlt.com/news/72433.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue中scoped如何使用
    本篇文章为大家展示了Vue中scoped如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。scoped的由来css一直有个令人困扰的作用域问题:即使是模块化编程...
    99+
    2022-10-19
  • HTML5中的Scoped属性如何使用
    这篇文章主要介绍“HTML5中的Scoped属性如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“HTML5中的Scoped属性如何使用”文章能帮助大家解决问题...
    99+
    2022-10-19
  • 样式穿透vue中的scoped有什么作用
    这篇文章主要介绍了样式穿透vue中的scoped有什么作用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇样式穿透vue中的scoped有什么作用文章都会有所收获,下面我们一起来看看吧。scoped的使命与作用这...
    99+
    2023-07-02
  • HTML5中的Scoped属性使用方法
    这篇文章主要介绍“HTML5中的Scoped属性使用方法”,在日常操作中,相信很多人在HTML5中的Scoped属性使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”HT...
    99+
    2022-10-19
  • Vue-scoped(局部)样式使用方法及实例代码
    目录scoped(局部)样式1 编写案例2 样式冲突传统解决办法vue解决办法3 特别注意:APP组件4 总结scoped(局部)样式 scoped是在脚手架有一个编写样式的小技巧 ...
    99+
    2023-05-18
    Vue-scoped局部样式 Vue-scoped样式 Vue-scoped
  • Vue中如何使用vue mixins
    这篇文章主要介绍了Vue中如何使用vue mixins,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用场景:例如我们在Vue单页面开发的时...
    99+
    2022-10-19
  • vue3中使用scss加上scoped导致样式失效问题
    目录使用scss加上scoped导致样式失效注意事项在vue3 + vite 中使用 :: v-deep 抛出警告vue中加样式失效,scoped穿透你需要了解一下1.什么是scop...
    99+
    2022-11-13
  • vue中如何使用vue-resource插件
    vue中如何使用vue-resource插件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在使用这个插件之前,当然是先安装啦:npm ...
    99+
    2022-10-19
  • Vue中如何使用slot
    这期内容当中小编将会给大家带来有关Vue中如何使用slot,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。关于slot是这样说的,除非子组件模板包含至少一个 <slot> 插口,否则父组件的内容...
    99+
    2023-06-04
  • vue中axios如何使用
    这篇文章主要讲解了“vue中axios如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue中axios如何使用”吧!1.axios配置 我的目录结构src/axios/in...
    99+
    2023-07-04
  • vue中$set如何使用
    vue中$set如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。代码如下:<!-- 操作 --> &...
    99+
    2022-10-19
  • Vue中如何使用JSX
    小编给大家分享一下 Vue中如何使用JSX,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Vue.js 具有简单的 API 和几个...
    99+
    2022-10-19
  • Vue中TodoList如何使用
    本篇文章给大家分享的是有关Vue中TodoList如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1. methodsmethods类似...
    99+
    2022-10-19
  • vue中props如何使用
    本篇文章为大家展示了vue中props如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。props使用方法Vue.component('my-compo...
    99+
    2022-10-19
  • Vue中如何使用CSS
    这篇文章将为大家详细讲解有关Vue中如何使用CSS,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、class在 Vue 模板中可以直接添加 class 属性,而且支持多...
    99+
    2022-10-19
  • vscode中如何使用vue
    近年来,前端开发领域的Vue框架愈发流行,成为了Web开发中不可替代的一部分。而对于前端开发而言,选择一个优秀的代码编辑器是非常重要的。其中,Visual Studio Code (以下简称VS Code)无疑是许多前端开发者们的首选。 那...
    99+
    2023-05-14
  • Vue中如何使用pinia
    这篇文章主要介绍了Vue中如何使用pinia的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue中如何使用pinia文章都会有所收获,下面我们一起来看看吧。什么是Pinia?Pinia最初是在 2019 年 1...
    99+
    2023-06-29
  • vue中如何使用echarts
    这篇文章主要介绍“vue中如何使用echarts”,在日常操作中,相信很多人在vue中如何使用echarts问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue中如何使用echarts”的疑惑有所帮助!接下来...
    99+
    2023-07-05
  • vue中如何使用socket
    这篇“vue中如何使用socket”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue中如何使用socket”文章吧。一、W...
    99+
    2023-07-06
  • 如何在vue中使用moment
    如何在vue中使用moment?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、moment是什么?moment 是一个 JavaScript 日期处理类库。安装 mome...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作