scoped属性和深度选择器

在Vue单文件组件(SFC)中,为了防止样式全局污染,可以给

所有的scoped的css编译出来都会变成.class[哈希值]的形式
在这里插入图片描述

我们只能修改带data-v-0dca3a9a作用域的样式,像是
在这里插入图片描述

如果修改el-table的宽度

.el-table {width: 600px;
}

原宽度
在这里插入图片描述

修改后
在这里插入图片描述
修改表头el-table__header这种是无法直接修改的,
如果你想在带有scoped的CSS中修改一个子组件或者第三方组件的样式,你可以采用以下几种方法:

修改方式一:深度选择器

Vue2通过深度选择器(>>> 或 /deep/ 或::v-deep)

在这里插入图片描述

::v-deep .el-table__header {height: 80px;
}

在这里插入图片描述

在Vue.js中,/deep/ 和 ::v-deep 都是用来实现样式穿透(style scoping escape hatch)的语法,它们都允许你编写能够影响到组件内部深>层元素的CSS样式。但在不同版本和环境下的支持情况有所不同:

  1. /deep/: /deep/ 是旧版Web Components Shadow DOM规范中的选择器,也被称为深度组合器,它允许样式穿透Shadow DOM边界。然而,在Vue中,即使没有使用实际的Shadow DOM,/deep/ 也被用来穿透组件作用域样式的限制。
  2. ::v-deep: Vue 2.x 中后期以及Vue 3.x 中,由于浏览器对 /deep/ 的支持逐渐废弃,Vue推荐使用 ::v-deep 作为替代方案来达到同样的效果。::v-deep 是Vue专为了解决组件样式隔离问题而提供的伪类选择器。
    尽管两者在功能上相似,但需要注意的是,在不同的构建环境下,例如当使用Sass或Less等预处理器时,可能需要采用特定的语法才能正确编译。
    例如,在某些sass编译器如dart-sass中,/deep/ 已不再被支持,必须使用 ::v-deep。
    综上所述,在现代Vue项目中,你应该优先使用 ::v-deep 来穿透组件样式作用域

Vue3通过:deep()

在Vue3以及支持它的框架,如Vite、Vue CLI中都可以使用:deep()组合器实现类似功能

<style scoped>.component:deep(.child-element){color:red;}
</style>

修改方式二:全局样式和局部样式相结合

创建一个不带scoped属性的 style标签用于全局样式,带scoped属性的style标签用于组件特有的局部样式。但是不太友好,因为全局样式也可能会互相影响。

修改方式三:自定义类名结合style module

如果第三方组件允许添加自定义类名,可以在使用该组件时为其添加额外的类名

  <!-- Vue 组件模板 --><template><third-party-component class="custom-class" /></template><style>.custom-class {color: red;}</style>

但是需要注意的是style一定不能是scoped,否则不起作用。那这样还是一个全局样式,还是会有样式冲突的风险,怎么办呢?
如果想解决这个问题,可以使用style module为组件内的css类生成局部作用域的类名。从而实现局部作用域样式的效果,避免全局样式冲突的问题

<template><div class="detail-popover" :class="$style.detailPopover"><!-- 组件内容 --></div>
</template><style module>
.detail-popover {min-width: 20px;padding: 10px;text-align: center;
}
</style>

在这个例子中,.detail-popover 类会被转换为一个哈希值(如 .detail-popover_abc123),然后该哈希值作为组件实例的一个 $style 对象上的属性。
由于这个哈希值是全局唯一的,所以不会跟其他全局样式冲突,
举个elementUI的例子

<el-popover trigger="hover" content="详情" :popper-class="$style['detail-popover']"><svg slot="reference" class="iconfont" @click="handleDetail(scope.row)" aria-hidden="true"><use xlink:href="#icon-1" /></svg>
</el-popover>
<style module>.detail-popover {min-width: 20px;padding: 10px;text-align: center;}
</style>

效果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/433255.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MYSQL实现分组排名和不分组排名(函数RANK,DENSE_RANK和ROW_NUMBER)

目录 1. 排名分类1.1 区别RANK&#xff0c;DENSE_RANK和ROW_NUMBER1.2 分组排名 2. 准备数据3. 不分组排名3.1 连续排名3.2 并列跳跃排名3.3 并列连续排名 4. 分组排名4.1 分组连续排名4.2 分组并列跳跃排名4.3 分组并列连续排名 1. 排名分类 1.1 区别RANK&#xff0c;DENSE_R…

Elasticsearch8.11集群部署

集群就是多个node统一对外提供服务&#xff0c;避免单机故障带来的服务中断&#xff0c;保证了服务的高可用&#xff0c;也因为多台节点协同运作&#xff0c;提高了集群服务的计算能力和吞吐量。ES是一个去中心化的集群&#xff0c;操作一个节点和操作一个集群是一样的&#xf…

大文件传输之以太网UDP传输延迟解决方案

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业最宝贵的资产之一。随着企业规模的扩大和业务的全球化&#xff0c;大文件传输的需求日益增长&#xff0c;它不仅关系到企业内部数据的高效管理&#xff0c;也是与外部合作伙伴进行有效沟通的关键。然而&#xff0c;大文件…

万字长文:深度学习如何入门?

深度学习是一种强大的机器学习方法&#xff0c;它在各个领域都有广泛应用。如果你是一个新手&#xff0c;想要入门深度学习&#xff0c;下面是一些步骤和资源&#xff0c;可以帮助你开始学习和实践深度学习。 1. 学习基本概念 在开始深度学习之前&#xff0c;你需要对一些基本…

前端工程化之:webpack1-6(编译过程)

一、webpack编译过程 webpack 的作用是将源代码编译&#xff08;构建、打包&#xff09;成最终代码。 整个过程大致分为三个步骤&#xff1a; 初始化编译输出 1.初始化 初始化时我们运行的命令 webpack 为核心包&#xff0c; webpack-cli 提供了 webpack 命令&#xff0c;通过…

《动手学深度学习(PyTorch版)》笔记4.1

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过。…

node学习过程中的终端命令

冷的哥们手真tm冷&#xff0c;打字都是僵的&#xff0c;屮 目录 一、在学习nodejs过程中用到的终端命令总结 一、在学习nodejs过程中用到的终端命令 node -v nvm install 20.11.0 nvm list nvm list available nvm on nvm -v nvm use 20.11.0 node加要运行的js文件路径 ps&a…

OSPF协议LSDB同步过程和邻居状态机

知识改变命运&#xff0c;技术就是要分享&#xff0c;有问题随时联系&#xff0c;免费答疑&#xff0c;欢迎联系&#xff01; 厦门微思网络​​​​​​ https://www.xmws.cn 华为认证\华为HCIA-Datacom\华为HCIP-Datacom\华为HCIE-Datacom Linux\RHCE\RHCE 9.0\RHCA\ Oracle O…

前端工程化之:CSS工程化+Less

一、什么是Less&#xff1f; Less官网 Less中文网 Less 是一种更加简洁的样式代码&#xff0c;它非常像 CSS &#xff0c;但又不太一样&#xff0c;它让编写样式变得更容易。 Less 代码虽好&#xff0c;但它无法被浏览器识别&#xff0c;因此需要一个工具将其转换为纯正的 CS…

鸿蒙开发(Harmonyos兼容与Harmonyos适配)

布局的实现 Layout_ability_main.xml布局&#xff1a; <?xml version"1.0" encoding"utf-8"?> <DirectionalLayoutxmlns:ohos"http://schemas.huawei.com/res/ohos"ohos:height"match_parent"ohos:width"match_pare…

docker容器生命周期管理命令

文章目录 前言1、docker create2、docker run2.1、常用选项2.2、系统2.3、网络2.4、健康检查 3、docker start/stop/restart4、docker kill5、docker rm6、docker pause/unpause总结 前言 在云原生时代&#xff0c;Docker已成为必不可少的容器管理工具。通过掌握Docker常用的容…

2. MySQL 多实例

重点&#xff1a; MySQL 的 三种安装方式&#xff1a;包安装&#xff0c;二进制安装&#xff0c;源码编译安装。 MySQL 的 基本使用 MySQL 多实例 DDLcreate alter drop DML insert update delete DQL select 2.5&#xff09;通用 二进制格式安装 MySQL 2.5.1&#xff…