首页 > 其他分享 >vue样式穿透

vue样式穿透

时间:2023-09-20 18:56:50浏览次数:40  
标签:padding vue 样式 deep 穿透 组件 card

本文转载自https://www.jb51.net/article/253428.htm#_label0,转载仅供学习使用.

scoped属性

我们在vue组件写样式一般是在<style>标签里面,但是我们在这里的样式默认是全局样式,如果其它组件的class名取重复了则会导致样式污染。

所以vue支持在<style>标签添加scoped属性,这样当前组件的样式只会在当前样式生效,其它组件不会影响到。

例子如下:

<div class="page">
  <span class="content">hello world</span>
</div>
<style lang="scss" scoped> .page {
  .content {
    color: aquamarine;
    font-size: 20px;
  }
} </style> 

最终在浏览器渲染出来,div和span上都带有特殊属性

然后css的样式最终也会带上这些属性,根据这些属性找到元素。

这样子避免样式全局污染。

如果你的引入了第三方库,如果你想修改第三方库的样式,直接通过dom查找,修改样式是没有效果的。

比如我在项目引入了饿了么的组件库elementUI

<el-card class="box-card">
  <span class="content">hello world</span>
</el-card> 


如果我们想把padding改小一点,下面这样写是没有效果的。

<style lang="scss" scoped> .box-card {
  .el-card__body {
    padding: 10px;
  }
} </style> 

只看到默认的padding。我们写的样式没有渲染出来。

此时需要样式穿透,需要用到深度选择器/deep/

<style lang="scss" scoped> .box-card {
  /deep/.el-card__body {
    padding: 10px;
  }
} </style> 


可以看到生效了.

样式穿透

vue都是通过深度选择器来样式穿透的。除了上面的讲/deep/,我熟知的还有::v-deep>>>
那它们有何区别?

  • 如果你使用的是css,没有使用css预处理器,则可以使用>>>/deep/::v-deep
  • 如果你使用的是less或者node-sass,那么可以使用/deep/::v-deep都可以生效。
  • 如果你使用的是dart-sass,那么就不能使用/deep/,而是使用::v-deep才会生效。

标签:padding,vue,样式,deep,穿透,组件,card
From: https://www.cnblogs.com/bfyzzk/p/17717892.html

相关文章

  • 15-Vue核心-列表过滤和列表排序
    列表过滤 监视属性,实现列表过滤<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>基本列表</title><!--引入Vue--><scripttype="text/javascript......
  • vuejs+antv-g6绘制图表
    该内容包括antv-g6官网地址、antv-g6的基本使用(包括自定义节点、常用插件(右键菜单等)、基本事件、目前我所遇到的一些需求)。1、antv-g6的官网地址:https://g6.antv.antgroup.com/examples2、安装antv-g6组件npminstall@antv/g6 3、创建antvView.vue文件使用antv/g6......
  • Redis学习之缓存穿透
    缓存穿透攻击者可以恶意请求数据库中不存在的数据,从而使得每次查询都要绕过缓存查数据库,增大数据库的压力。解决方案:1.缓存空值:比如塞一个空字符串。注意可以给空对象的键过期时间设置短一些,或者在新增数据时强制清除下对应缓存(防止查出来还是null)2.布隆过滤器预防做法:......
  • Ant Design Vue 中的tab组件中,获取不到$ref
    问题:在tab的组件中引入了一个组件,在页面渲染时,需要用到子组件bpmnModeler里面的方法,调用this.$ref.bpm的时候报错了,找不到bpm<a-tab-panekey="3"tab="流程图"><divclass="search"><a-card><a-rowstyle="positi......
  • vue-day05
    补充1.图片在接口中返回一些数据和图片地址,而不是图片的二进制内容{code:100,msg:'成功',img:地址}2.md5不是加密,摘要算法动态组件<component:is="who"></component>component标签的is属性等于组件名字,这里就会显示这个组件HTML<!DOCTYPEhtml><html......
  • Vue-cli创建项目
    1.单页面应用:spa-以后Vue的项目就只有一个:XX.html页面-当定义了很多组件,不可能都写在:XX.html中吧2.单文件组件:xx.vue-https://v2.cn.vuejs.org/v2/guide/single-file-components.html-一个组件一个文件一个组件中有的东西-1.html内容:以后html都放在te......
  • Vue的DatePicker日期选择器
    picker-option属性官网描述是这样的 1.disabledDate一般我们使用picker-option都是通过disabledDate参数,来设置其日期选择区间,代码如下:<el-col:span="12"><el-form-itemlabel="开票日期起"prop="rqq"><el-date-pickert......
  • 我不知道的vue3
    代替Vue.delete  vue3中可以使用deleteobj.xxx 就可以实现去删除obj的xxx属性!!!    第二种:借助于del  import{del}from'vue'del(obj,propertyName) 也可删除属性!!!   每个vue页面因为scoped这个属性的原因,可以使得不同vue页面间的css......
  • Vue动态组件、插槽、vue项目
    一、动态组件1、动态组件#<component:is="who"></component>#component标签的is属性等于组件名字,这里就会显示这个组件<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title>......
  • HBuilder打包简单项目(vue项目)APP的教材
    1.官网下载最新的Hbuilderx。2.准备好一个包含manifest.json的Vue项目,这时会生成manifest.json文件,打开进行详细设置,如图标、描述等详情设置,设置完成后,保存。3.首先去AppUploader找到开发证书(开发类型是带development的),点击P12下载到桌面。4.然后根据里面的BundleID新建一个描述......