当前位置: 首页 > news >正文

【Vue3】scoped 和样式穿透

我们使用很多 vue 的组件库(element-plus、vant),在修改样式的时候需要进行其他操作才能成功更改样式,此时就用到了样式穿透。

而不能正常更改样式的原因就是 scoped 标记。

scoped 的渲染规则:

<template><main><el-inputplaceholder="请输入"class="ipt"></el-input></main>
</template><script setup lang="ts"></script><style scoped lang="less">
.ipt {width: 300px;margin: 100px 400px;
}</style>
  1. 给 HTML 的 DOM 节点增加一个不重复的 data 属性,表示它的唯一值。

    在这里插入图片描述

  2. 编译后的生成的 css 语句,在每句 css 选择器的末尾加一个当前组件的 data 属性选择器来私有化样式。

    在这里插入图片描述

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

    此时 App 组件里面包含了 el-input 组件。

    487c1f5497f255e5f383760370779d4d.png

这时我们给 input 框加一个背景样式:

.ipt {width: 300px;margin: 100px 400px;.el-input__inner {background: tomato; }
}

image.png

此时 scoped 的第二条和第三条之间的矛盾就出现了。

.el-input__inner 里面并没有 data-v-7a7a37b1 属性,导致背景样式失效。

样式穿透解决这个问题:

  1. 如果是 Vue2:

    .ipt {width: 300px;margin: 100px 400px;/deep/ .el-input__inner {background: tomato; }
    }
    
  2. 如果是 Vue3:

    .ipt {width: 300px;margin: 100px 400px;:deep(.el-input__inner) {background: tomato;}
    }
    

image.png

image.png

问题解决!

http://www.lryc.cn/news/229356.html

相关文章:

  • Python 邮件发送(163为例)
  • BlendTree动画混合算法详解
  • 2013年01月16日 Go生态洞察:并发不是并行
  • CRM销售管理软件哪个好,该如何选择?(一)
  • Django路由层解析
  • 高教社杯数模竞赛特辑论文篇-2023年A题:定日镜场的输出功率优化(附获奖论文及MATLAB代码实现)(中)
  • libusb获取Windows设备实例路径DevicePath
  • File Upload
  • Qt数据库之QTabelModel
  • 计算机视觉(CV)技术的优势和挑战
  • 面试官:【后端一次性返回10万条数据怎么处理/后端发送大数据量的数据如何处理】
  • 深入理解强化学习——多臂赌博机:梯度赌博机算法的数学证明
  • StackExchange.Redis 高并发下timeout超时问题如何解决?
  • JAVA基础7:数组
  • Riskified: 2023年电商政策滥用问题恶化,正严重挑战商家盈利底线
  • 【论文阅读】多模态NeRF:Cross-Spectral Neural Radiance Fields
  • Huggingface
  • 【深度学习】pytorch——常用工具模块
  • 【Android】统一系统动画
  • 京东数据运营与分析:如何全面获取电商销售数据?
  • du_命令可以像find_命令那样列出最大的文件吗
  • asp.net blazor集成TinyMCE.Blazor
  • CSS注入的四种实现方式
  • 突然消失的桌面文件如何恢复?详细教程让你轻松解决问题!
  • Springboot+Dubbo+Nacos 集成 Sentinel(入门)
  • ARPG----C++学习记录05 Section10 武器类,IK重定向,装备和捡起武器,动画蓝图
  • CSRF跨站请求伪造
  • 修改kernel驱动配置文件
  • 采集摄像头数据的Golang应用
  • Axure9学习