vue3之css插槽选择器、全局选择器以及动态css

53 篇文章 1 订阅
本文介绍了Vue组件中如何使用`slotted`来影响插槽内容的样式,以及如何通过`global`创建全局样式。同时,展示了动态CSS的实现方式,通过`v-bind`将CSS值与组件状态关联,实现颜色的动态变化。
摘要由CSDN通过智能技术生成

插槽选择器

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

解决方案 :slotted

<!-- A组件 -->
<template>
    <div>
        我是A组件插槽
        <slot></slot>
    </div>
</template>
 
<script setup>
</script>
 
<style scoped>
 :slotted(.a) {	// 插槽中clase='a'的标签字体为红色
	color: red
}
</style>
<!-- 父组件 -->
<template>
    <A>
        <div class='a'>我是红色</div>
        <div>我不是红色</div>
    </A>
</template>

全局选择器

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

解决方案 :global

<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="a">
       动态css
    </div>
</template>
 
<script lang="ts" setup>
import { ref } from 'vue'
const red = ref<string>('red')
</script>
 
<style lang="less" scoped>
.a{
   color:v-bind(red)
}
 
</style>

如果是对象请加引号

 <template>
    <div class="a">
        我是动态CSS,我会变色
    </div>
</template>
 
<script lang="ts" setup>
import { ref } from "vue"
const colors= ref({
    color:'red'
})
setTimeout(()=>{
  colors.value.color = 'green'
},2000)
</script>

<style lang="less" scoped>
.a{
	color: v-bind('colors.color');
}
</style>
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凡小多

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值