vue3学习(十四)--- vue3中css新特性

文章目录

  • 样式穿透:deep()
    • scoped的原理
  • 插槽选择器:slotted()
  • 全局选择器:global()
  • 动态绑定CSS
  • css module

样式穿透:deep()

主要是用于修改很多vue常用的组件库(element, vant, AntDesigin),虽然配好了样式但是还是需要更改其他的样式就需要用到样式穿透。

scoped的原理

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

scoped三条渲染规则:

  1. 给HTML的DOM节点加一个不重复data属性(形如:data-v-123)来表示他的唯一性
  2. 在每句css选择器的末尾(编译后的生成的css语句)加一个当前组件的data属性选择器(如[data-v-123])来私有化样式
  3. 如果组件内部包含有其他组件,只会给其他组件的最外层标签加上当前组件的data属性

在这里插入图片描述
这是组件内部包含有其他组件的情况(当前.vue文件也是一个组件),只会给其他组件的最外层标签加上当前组件的data属性

如果不写Scoped 就没问题

原因就是Scoped 搞的鬼 他在进行PostCss转化的时候把元素选择器默认放在了最后。

上面提到第三条的规则 因为当前组件标签是没有这个属性标签的,所以无法修改样式。

在这里插入图片描述

Vue 提供了样式穿透 /deep/(vue2写法) :deep()(vue3写法) 他的作用就是用来改变 属性选择器的位置
在这里插入图片描述
在这里插入图片描述

:deep()原理很简单,就是将属性标签提到外层。


插槽选择器:slotted()

使用场景:在使用插槽组件的时候写样式,默认不会影响 <slot/> 渲染出来的内容,因为它们被认为是父组件所持有并传递进来的。

<template><div><A><div class="a">私人定制div</div></A></div>
</template><script setup>
import A from "@/components/A.vue"
</script><style lang="less" scoped>
</style>
<template><div>我是插槽<slot></slot></div>
</template><script>
export default {}
</script><style scoped>.a{不会生效的color:red
}这样就可以修改父组件中定义的.a的样式:slotted(.a) {color:red
}
</style>

全局选择器:global()

在之前我们想加入全局 样式 通常都是新建一个style 标签 不加scoped 现在有更优雅的解决方案

<style>div{color:red}
</style><style lang="less" scoped></style>

使用全局选择器

<style lang="less" scoped>
:global(div){color:red
}
</style>

动态绑定CSS

单文件组件的 <style> 标签可以通过 v-bind 这一 CSS 函数将 CSS 的值关联到动态的组件状态上:

<template><div class="div">红色</div><div class="pink">粉色</div>
</template><script lang="ts" setup>
import { ref } from 'vue'
const red = ref<string>('red')
setTimeout(()=>{red.value = 'blue'
},2000)const pink= ref({color:'pink'
})</script><style lang="less" scoped>
.div{color:v-bind(red)
}
.pink{对象形式需要使用单引号color:v-bind('pink.color')
}</style>

css module

<style module> 标签会被编译为 CSS Modules 并且将生成的 CSS 类作为 $style 对象的键暴露给组件

<template><div :class="$style.red">11111</div>
</template><style module>
.red {color: red;font-size: 20px;
}
</style>

自定义注入名称(多个可以用数组)

<template>这里可以使用数组的形式添加多个<div :class="[zs.red,zs.border]">111</div>
</template>这里自定义了名称为zs
<style module="zs">
.red {color: red;font-size: 20px;
}
.border{border: 1px solid #ccc;
}
</style>

与组合式 API 一同使用

注入的类可以通过 useCssModule APIsetup() <script setup> 中使用。对于使用了自定义注入名称的 <style module> 模块,useCssModule 接收一个对应的 module attribute 值作为第一个参数(了解即可 不常用 一般用于jsx、render 函数中)

<template><div :class="[zs.red,zs.border]">111</div>
</template><script setup lang="ts">
import { useCssModule } from 'vue'
const css = useCssModule('zs')
console.log(css)
</script><style module="zs">
.red {color: red;font-size: 20px;
}
.border{border: 1px solid #ccc;
}
</style>

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

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

相关文章

3.12每日一题(有理函数不定积分)

两种方法&#xff1a; 1、拆项&#xff0c;然后分别加项减项拆&#xff0c;把分母降幂 注&#xff1a; x凑x的平方时前面要乘1/2 分子为x的平方可以分一个x去凑x的平方 2、联想三角有理函数公式&#xff0c;使用三角函数求解 用tant替换x&#xff1b;再通过二倍角公式降幂即可 …

QT: QLineEdit 密码模式、QLineEdit输入模式

setEchoMode(QLineEdit::Normal) 是一个函数&#xff0c;用于设置 QLineEdit 对象的输入模式。具体用法如下&#xff1a; lineEdit->setEchoMode(QLineEdit::Normal);该函数的作用是将 QLineEdit 对象的输入模式设置为“正常模式”&#xff0c;在此模式下&#xff0c;用户的…

数智领航未来∣2023契约锁企企通专题沙龙:数字建设,为企业高质量发展注入新动能

今年两会期间&#xff0c;“数字经济”是当之无愧的热词之一。中央经济工作会议提出&#xff0c;要大力发展数字经济&#xff0c;提升常态化监管水平&#xff0c;支持平台经济发展。 当前数据作为新型生产要素&#xff0c;价值尚未得到充分释放&#xff0c;需要疏通数据要素流通…

数控 (CNC) 加工设计:​​​​​​​Filou NC Gorilla 2023 Crack

Filou NC Gorilla是一款功能强大的软件&#xff0c;专为计算机数控 (CNC) 加工而设计。它是一款全面且多功能的工具&#xff0c;可让用户轻松创建高精度零件和组件。 专家估计&#xff0c;所有 CNC 零件中 80-90% 是 2.5D 零件。 因此无需创建复杂的 3D 模型&#xff0c;而是可…

CN考研真题知识点二轮归纳(1)

本轮开始更新真题中涉及过的知识点&#xff0c;总共不到20年的真题&#xff0c;大致会出5-10期&#xff0c;尽可能详细的讲解并罗列不重复的知识点~ 目录 1.三类IP地址网络号的取值范围 2.Socket的内容 3.邮件系统中向服务器获取邮件所用到的协议 4.RIP 5.DNS 6.CSMA/CD…

【C++的OpenCV】第十四课-OpenCV基础强化(三):单通道Mat元素的访问之data和step属性

&#x1f389;&#x1f389;&#x1f389; 欢迎来到小白 p i a o 的学习空间&#xff01; \color{red}{欢迎来到小白piao的学习空间&#xff01;} 欢迎来到小白piao的学习空间&#xff01;&#x1f389;&#x1f389;&#x1f389; &#x1f496; C\Python所有的入门技术皆在 我…

golang中快速用melody搭建轻量的websocket服务

在Go中&#xff0c;可以使用gin和melody库来搭建一个轻量级的WebSocket服务。gin是一个流行的Web框架&#xff0c;而melody是一个用于处理WebSocket的库。以下是一个简单的示例代码&#xff0c;演示了如何使用gin和melody搭建WebSocket服务&#xff1a; package mainimport (&…

vmware unbuntu22.04卸载与安装vmtools

​ 卸载命令&#xff1a; sudo apt-get purge open-vm-tools-desktop使用 --auto-remove 选项&#xff08;如果重装最好选这个命令&#xff09; sudo apt-get purge --auto-remove open-vm-tools-desktop安装命令&#xff1a; Ubuntu 22.04 Server: sudo apt install open-…

电源控制系统架构(PCSA)之电源控制框架

安全之安全(security)博客目录导读 PCSA的主要目的是描述SoC系统电源控制集成的标准方法。这种方法的一个关键组成部分是电源控制框架。下图显示了电源控制框架概念的高级说明。 电源控制框架是标准基础设施组件、接口和相关方法的集合&#xff0c;可用于构建SoC电源管理所需的…

小米电视播放win10视频 win10共享问题

解决的方法就是安装SMB1.0协议 重启就OK了

【贝叶斯回归】【第 1 部分】--pyro库应用

Bayesian Regression - Introduction (Part 1) — Pyro Tutorials 1.8.6 documentation 一、说明 我们很熟悉线性回归的问题&#xff0c;然而&#xff0c;一些问题看似不似线性问题&#xff0c;但是&#xff0c;用贝叶斯回归却可以解决。本文使用土地平整度和国家GDP的关系数据…

前端图片上传的处理与后端的接收(c#)

前端上传图片数据 //上传图片的处理方法UpdateHeadSculpture() {let self this;let file $("#FileImg")[0].files[0];let form new FormData();form.append("img", file);form.append(context, example_context);$.ajax({url: /UserInfoMation/UpdateHe…

MVCC面试题总结

MVCC解决的问题 ​   数据库并发场景有三种&#xff0c;分别为&#xff1a; ​   1、读读&#xff1a;不存在任何问题&#xff0c;也不需要并发控制 ​   2、读写&#xff1a;有线程安全问题&#xff0c;可能会造成事务隔离性问题&#xff0c;可能遇到脏读、幻读、不可…

Linux:Docker的介绍(1)

Docker官网 Docker: Accelerated Container Application Developmenthttps://www.docker.com/ docker是什么&#xff1f; 是一种轻量级的‘虚拟机’ 在Linux容器里运行应用的开源工具 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个…

西南建筑电气年会暨大运场馆电气设计技术论坛-安科瑞 蒋静

2023年10月19-20日&#xff0c;由中国建筑西南设计研究院有限公司、西南建筑电气工程设计情报网、四川省土木建筑学会建筑电气专业委员会、四川省电工技术学会工业与建筑供电专业委员会、建筑电气杂志社联合主办的第九届(2023年)“西南建筑电气年会暨大运场馆电气设计技术论坛”…

jvm线上异常排查流程

1. Linux命令 jps 找出当前运行实例 2. jinfo -flags pid&#xff08;java运行id) 打印出当前设置的jvm内存参数情况 3.jstat -gcutil pid 1000 10 每秒打印一次当前jvm的gc运行情况&#xff0c;一共打印10次 4.将gc日志下载进行分析&#xff1a;到底是因为什么原因导致一直…

博客摘录「 Windows10下CLion配置说明」2023年7月3日

Windows10下CLion配置说明CLion 是 C/C的 IDE&#xff0c;可以配置多种编译环境&#xff0c;本文以配置MinGW编译环境为例。安装CLion 的安装可直接到官网下载 ZIP,文件解压后直接运行即可。我在安装过程中没有遇到困难&#xff0c;网上关于安装的教程很多&#xff0c;如果遇到…

div 中文本太长用省略号隐藏展示,鼠标放上来弹出提示

需求描述 div 中有一行文本。 文本特别特别的长&#xff0c; 反正是超出了div所容纳的长度。 你呢&#xff0c; 现在想要的效果是&#xff1a; 1.文本就展示一行&#xff0c;多余的部分用省略号代替展示&#xff1b; 2.鼠标放上去的时候&#xff0c;用tip的方式展示完整的信息…

wpa_cli 连接WiFi的步骤

#启动脚本 wpa_supplicant -p /etc/wifi/sockets/ -iwlan0 -Dnl80211 -c/etc/ambaipcam/IPC_Q313/config/wlan/wpa_supplicant.conf -B #查询网卡状态 wpa_cli -p /etc/wifi/sockets/ -iwlan0 status #搜索附近网络功能 no/ok wpa_cli -p /etc/wifi/sockets/ -i wlan0 sca…

Mysql8.1.0 windows 绿色版安装

Mysql8.1.0 windows 绿色版安装 目录 Mysql8.1.0 windows 绿色版安装1、下载mysql8.1.0_windows&#xff08;mysql-8.1.0-winx64.zip&#xff09;2、解压到安装目录3、添加环境变量4、新建mysql配置文件5、安装mysql服务6、初始化数据文件7、启动mysql服务8、进入mysql管理模式…