vue3学习笔记之样式穿透(:deep)及CSS 新特性(:soltted、:gloabl、v-bind、mouldCSS)

news2024/11/25 15:49:33

文章目录

    • 1. scoped的原理
    • 2. :deep()
    • 3. :slotted()
    • 4. :global()
    • 5. 动态css(v-bind)
    • 6. css module

1. scoped的原理

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

总结一下scoped三条渲染规则:

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

2. :deep()

:deep():改变css解析时私有属性的位置

常见作用场景:修改组件库样式

在这里插入图片描述
在这里插入图片描述

<template>
  <div class="outer">
    <el-input></el-input>
  </div>
</template>

<style lang="less" scoped>
.outer {
  .el-input__inner {
    // 此时css解析的为 .outer .el-input__inner[data-v-xxxx] 样式无效
    background: pink;
  }

  :deep(.el-input__inner) {
    // 此时css解析的为 .outer[data-v-xxxx] .el-input__inner 样式生效
    background: red;
  }
}
</style>

3. :slotted()

:slotted():在子组件定义样式插槽内容样式

默认情况下,作用域样式不会影响到 <slot/> 渲染出来的内容,因为它们被认为是父组件所持有并传递进来的。

<template>
  <div>
    <slot>插槽</slot>
  </div>
</template>

<style lang="less" scoped>
:slotted(.red) {
  color: red;
}
</style>

4. :global()

:global() :全局选择器,定义全局样式,不用单开一个没有scopedstyle

<style scoped>
:global(div) {
	color: red;
}
</style>
<!-- 等效于 -->
<style>
 div{
     color:red
 }
</style>

5. 动态css(v-bind)

<script setup lang="ts">

const redColor = ref('red')

const color = ref({
  red: 'red',
  green: 'green'
})

</script>

<style lang="less" scoped>
.box {
  color: v-bind(redColor);
  background: v-bind('color.green');  // 对象要加 ''
}
</style>

6. css module

常用场景:一般用于TSX和渲染函数

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

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

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

<template>
    <div :class="[dd.box,dd.f]">
        文字
    </div>
</template>

<script setup lang="ts">
import { useCssModule } from 'vue'

const css = useCssModule('dd')
 
</script>

<style module="dd">
.box{
    color: red;
    font-size: 20px;
}
.f{
    background: green;
}
</style>

在这里插入图片描述

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

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

相关文章

如何使用极狐GitLab 机器人大幅提升研发效率

本文来自&#xff1a; 黄松 极狐GitLab 后端工程师 研发效率对互联网/科技类公司来说至关重要&#xff0c;效率高意味着你能用更低的人力、时间成本在市场试错&#xff0c;成功的概率也会更大。 而说到研发效率的常见阻碍&#xff0c;主要有两点&#xff1a; 1. 研发流程中需要…

基础二分查找总结

前言 由于我在学习二分查找的过程中处于会了忘&#xff0c;忘了复习的状态&#xff0c;因此总结一套适合自己记忆的模板。建议先看参考资料[1,2,3]^{[1,2,3]}[1,2,3]&#xff0c;理解二分查找各种细节的由来。 二分查找又死循环了&#xff1f;【基础算法精讲 04】手把手带你撕出…

9656教程总结

9656 世界机器人大会青少年电子信息智能创新大赛官网少儿编程办学经验介绍机器人体验展馆体系课程知乎加盟介绍 知识点汇总 年龄 4-6岁 韩纳机器人主题体验馆 赛事 WRC世界机器人大赛, NOC全国中小学信息技术创新和实践大赛 5岁前:乐高积木,孩子年龄小只需对科特、编程…

事关网站数据安全,你真的了解https与SSL证书之间的关系吗?

虽然根据网上的建站教程&#xff0c;大多数站长都知道要给域名添加一个SSL证书&#xff0c;以此来开启https进而可以获得更好的用户体验以及提高网站的安全性。但是SSL证书为什么能使得网站https&#xff1f;你真的去细究过两者之间的关系吗&#xff1f;本文就来说说https与SSL…

python模拟三颗恒星的运动

文章目录随机三体三星问题随机三体 目前来说我们并不关心真实的物理对象&#xff0c;而只想看一下三个随机的点放在三个随机的位置&#xff0c;赋予三个随机的速度&#xff0c;那么这三个点会怎么走。所以其初始化过程为 import numpy as np m,x,y,u,v [np.random.rand(3) f…

【java入门系列四】java基础-数组

学习记录&#x1f914;数组引出动态初始化数组内的数据会自动转换类型注意事项数组赋值机制数组拷贝数组扩容append&#xff1f;多维数组trick生成随机数Math.random()讨论总结谢谢点赞交流&#xff01;(❁◡❁)更多代码&#xff1a; Gitee主页&#xff1a;https://gitee.com/G…

如何进行复盘

复盘定义 复盘&#xff0c;原本是围棋术语&#xff0c;指下完一盘棋后&#xff0c;双方棋手把对弈过程重新摆一遍&#xff0c;看哪里下得好&#xff0c;哪里下得不好&#xff0c;哪些关键节点有不同甚至更好的下法&#xff0c;以检查对局中招法的优劣与得失&#xff0c;并从中…

深入理解可变参数列表

目录 1.前言 2.基本使用方法 1.引入 2.相关宏介绍 3.原理剖析 1.传参 2.va_list 3.va_start() 4.va_arg() 5.va_end() 4.注意事项 5.总结 1.前言 在C语言中&#xff0c;对于一般的函数而言&#xff0c;参数列表都是固定的&#xff0c;而且各个参数之间用逗号进行分开。而除…

面试,演讲为什么一说话就紧张? 的底层解读

信息存在损耗在说话中,说话者与接受者之间传递信息存在损耗。而且人表达情绪不管是说话&#xff0c;还有肢体语言&#xff0c;这使得增加了信息接受者的信息量。下面引入两个词语来说明。给予与流露的含义给予&#xff1a;别人评价你做的菜好吃。流露&#xff1a;别人眉头一皱。…

探讨下如何更好的使用缓存 —— Redis缓存的特殊用法以及与本地缓存一起构建多级缓存的实现

大家好&#xff0c;又见面了。 本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容&#xff0c;将会通过系列专题&#xff0c;讲清楚缓存的方方面面。如果感兴趣&#xff0c;欢迎关注以获取后续更新。 通过前面的文章&#xff0c;我们一起剖析了Guava Cache、Caf…

如何在线录屏?怎么录制网课

当我们需要学习特定知识时&#xff0c;可以在网络上寻找教学视频进行学习。一般情况下&#xff0c;视频会一直保留在网上&#xff0c;可以随时随地观看。那您知道我们平常观看的网络课程是如何录制的吗&#xff1f;如何进行在线录屏&#xff1f;今天小编教您如何在线录制视频网…

C语言——指针进阶(含例题及详细代码分析)

文章目录导语&#xff1a;思维导图&#xff1a;1.字符指针2.指针数组3.数组指针3.1 数组指针的定义3.2 &数组名和数组名3.3 数组指针的使用4.数组参数、指针参数4.1 一维数组传参4.2 二维数组传参4.3 一级指针传参4.4 二级指针传参5.函数指针6.函数指针数组7.指向函数指针数…

Django自定义认证系统原理及源码分析解读

疑问 Django在如何自定义用户登录认证系统的时候&#xff0c;大家都会里面立马说 自定义一个 或者多个backend&#xff0c;比如通过账号密码、邮箱密码&#xff0c;邮箱验证码、手机号短信验证码等等。 然后设置 在settings中配置一个 AUTHENTICATION_BACKENDS就行。 但是为什…

【尚硅谷】Java数据结构与算法笔记11 - 树结构的实际应用

文章目录一、堆排序1.1 堆排序基本介绍1.2 堆排序的基本思想1.3 堆排序步骤图解1.4 堆排序思路总结1.5 堆排序代码实现二、赫夫曼树2.1 基本介绍2.2 重要概念1.3 赫夫曼树构建思路图解1.4 赫夫曼树代码实现三、赫夫曼编码3.1 基本介绍3.2 原理剖析3.3 实践&#xff1a;数据压缩…

java运算符2023010

运算符&#xff1a; Java语言中的运算符可分为如下几种。 ➢ 算术运算符 ➢ 赋值运算符&#xff0c;/—/各种和等号组合的都是赋值运算符&#xff0c;赋值表达式是有值的&#xff0c;赋值表达式的值就是右边 被赋的值。例如String str2str表达式的值就是str。因此&#xff0c;赋…

Java技能树-操作符(一)-练习篇

算术运算符 执行完下面的代码&#xff0c;变量b的值是&#xff1a; java int a 1; int b a; 答案是&#xff1a;D 在后,先赋值再运算 自动递增和递减 下面代码执行后的结果是&#xff1a; int a 0; a a; int b 0; b b; System.out.println("a " a); S…

Numpy的轴及numpy数组转置换轴

Numpy的轴 import numpy as np 数组np.array([[[1,2],[4,5],[7,8]],[[8,9],[11,12],[14,15]],[[10,11],[13,14],[16,17]],[[19,20],[22,23],[25,26]]]) print(数组.shape) # 返回 (4, 3, 2)最内层一对 [ ] 可以代表一个1维数组 加粗的一对 [ ] 里面有3个一维数组&#xff0c;也…

Layout布局(element ui)

Layout布局嘚吧嘚gutter示例发现el-row行内容居中默认局左上角水平居中垂直居中水平垂直居中嘚吧嘚 其实layout布局的使用在element官网上都有相关描述&#xff0c;也有相关示例&#xff0c;很容易快速上手。但是在实际使用的过程还是发现一些问题&#xff0c;于是做了一些学习…

递归(基础)

目录 一、递归的定义 1、什么时候会用到递归的方法 1. 定义是递归的 2. 数据结构是递归的 3. 问题的解法是递归的 2、应用递归的原则 3、递归调用顺序问题 1. 首先递归的过程可以总结为以下几点&#xff1a; 2. 递归工作栈​​​​​​​ 二、 递归和非递归的转化 …

Allegro如何快速把Class高亮成不同的颜色操作指导

Allegro如何快速把Class高亮成不同的颜色操作指导 在做PCB设计的时候,高亮Class组是一个非常频繁的操作,Allegro支持快速的将Class高亮成不同的颜色,并且还可以形成一个列表,如下图 具体操作如下 选择File选择Change Editor