vue style 的scoped 使用

1 原理

vue 可以通过在 style标签添加scoped这个属性来控制 组件内的css作用域

<style scoped>
  @media (min-width: 250px) {
    .list-container:hover {
      background: orange;
    }
  }
</style>

这个可选 scoped 属性会自动添加一个唯一的属性 (比如 data-v-21e5b78) 为组件内 CSS 指定作用域,编译的时候 .list-container:hover 会被编译成类似 .list-container[data-v-21e5b78]:hover

也就是说组件内的html标签 会添加属性,css渲染是也会添加该属性;

2 注意

当组件使用了外部的组件库时,引用的组件的内部标签不会别添加类似于 data-v-21e5b78 的属性,如下图所示,

但是若想复写组件内部标签的样式时,设置的css样式会自动添加该属性,导致该复写的css样式不会生效...

原文地址:https://www.cnblogs.com/xhliang/p/9235662.html

时间: 2024-10-25 09:44:00

vue style 的scoped 使用的相关文章

Vue中的scoped及穿透方法

何为scoped? 在vue文件中的style标签上,有一个特殊的属性:scoped.当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,也就是说,该样式只能适用于当前组件元素.通过该属性,可以使得组件之间的样式不互相污染.如果一个项目中的所有style标签全部加上了scoped,相当于实现了样式的模块化. scoped的实现原理 vue中的scoped属性的效果主要通过PostCSS转译实现,如下是转译前的vue代码: <style scoped> .examp

vue样式加scoped后不能覆盖组件的原有样式解决方法

<style scoped> </style> 为了vue页面样式模块化,不对全局造成污染,建议每个页面的style标签加上scoped,表示他的样式只属于当前的页面,父组件的样式不会泄漏到子组件中.但是scoped也会造成一些额外的负担,如无法覆盖原有组件的样式. 可以加 /deep/  . 深度作用选择器 /deep/  or  >>> 如果希望scoped样式中的选择器“深入”,即影响子组件 例子: /deep/ .el-table .red-row { b

Vue style里面使用@import引入外部css, 作用域是全局的解决方案

问题描述 使用@import引入外部css,作用域却是全局的 <template> </template> <script> export default { name: "user" }; </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> @import &q

Vue 中 css scoped 样式穿透

scoped看起来很好用,当时在Vue项目中,当我们引入第三方组件库时(如使用element-ui),需要在局部组件中修改第三方组件库样式,而又不想去除scoped属性造成组件之间的样式覆盖.这时我们可以通过特殊的方式穿透scoped. 1.stylus的样式穿透 使用 >>> .wrapper >>> .swiper-pagination-bullet-active background: #fff复制代码 2.sass和less的样式穿透 使用 /deep/ //

关于vue :style 的几种使用方式

:style的使用 一 ,最通用的写法 <p :style="{fontFamily:arr.conFontFamily,color:arr.conFontColor,backgroundColor:arr.conBgColor}">{{con.title}}</p> 二, 三元表达式 <a :style="{color:(index==0?arr.conFontColor:'#000')}" :href="con.subTi

vue style class 动态绑定

v-class 动态绑定 通常给class绑定个对象,就可以动态的切换样式了.(data中定义isActive的true.false) <div :class="{ active: isActive }">hello</div> handleClick(){ this.isActive = !this.isActive } <i class="iconfont " :class="[current=='0'?'class1':

vue组件中的style scoped中遇到的问题

在uve组件中我们我们经常需要给style添加scoped来使得当前样式只作用于当前组件的节点.添加scoped之后,实际上vue在背后做的工作是将当前组件的节点添加一个像data-v-1233这样唯一属性的标识,当然也会给当前style的所有样式添加[data-v-1233]这样的话,就可以使得当前样式只作用于当前组件的节点.但是我们需要注意的是如果我们添加了子组件,同样的,如果子组件也用scoped标识了,那么在父组件中是不能设置子组件中的节点的.若父组件有scoped,子组件没有设置,同样

vue scoped 穿透_vue 修改内部组件样式问题

何为scoped? 在vue文件中的style标签上,有一个特殊的属性:scoped.当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,也就是说,该样式只能适用于当前组件元素.通过该属性,可以使得组件之间的样式不互相污染.如果一个项目中的所有style标签全部加上了scoped,相当于实现了样式的模块化. scoped的实现原理 vue中的scoped属性的效果主要通过PostCSS转译实现,如下是转译前的vue代码: <style scoped> .examp

理解最基本的Vue项目

上一篇<Vue开发环境搭建及热更新>,我们讲解了vue开发环境的搭建还有一些小问题,接下来我们来讲解一下这个界面是如何形成的. 在开始讲之前,我们先来看看我们上一篇所谓的项目目录里面到底放着什么. 1.index.html文件入口 : 2.src放置组件和入口文件 : 3.node_modules为依赖的模块 : 4.config中配置了路径端口值等: 5.dist是存放打包之后的东西: 6.build中配置了webpack的基本配置.开发环境配置.生产环境配置等. 一.src文件夹 我们先从