vue3中 css的变量

现在vue3定义全局变量不使用less和sass也可以做的看  这就是vue3 的新特性,下面我们来学习一下

-- 方式创建变量

在全局引入初始化css时,用 --name 定义变量

body {
    --colorRed: rgb(250, 35, 35);
    --colorblue: rgb(35, 56, 250);
    --colorYellow: rgb(229, 255, 0);
    --colorOrange: rgb(255, 136, 0);
    --box: 100px;
}

在vue里使用

<template>
    <div class="dong">
        <h3 class="h3">--color的使用</h3>
        <div class="box  box1">
            --colorRed
        </div>
        <div class="box box2">
            --colorblue
        </div>
        <div class="box box3">
            --colorYellow:
        </div>
        <div class="box box4">
            --colorOrange
        </div>
    </div> 
</template>

<script setup>
</script>
<style lang="less" scoped>
.dong{
    width: 100%;
    height: 100%;
    color: #fff;
    background: #fff;
    font-size: 18px;
    .box{
        width: var(--box);
        height:  var(--box);
    }
    .box1{
        background: var(--colorRed);
    }
    .box2{
        background: var(--colorblue);
    }
    .box3{
        background: var(--colorYellow);
    }
    .box4{
        background: var(--colorOrange);
    }
    .h3{
        font-size: 20px;
        color: #000;
    }
}
</style>

效果

 注意: 如果有局部变量,那么局部变量优先级比body的高

动态样式

使用v-bind绑定变量, 注意使用reactive需要加引号, 同时也可以修改变量

<template>
    <div class="dong">
        <h3 class="h3">--color的使用</h3>
        <div class="box  box1">
        </div>
        <div class="box box2">
        </div>
        <div class="box box3">
        </div>
        <div class="box box4" @click="setColor">
        </div>
    </div> 
</template>

<script setup>
import {ref,reactive} from "vue"
let color1 = ref("red");
let colorobj = reactive({
    color2: "#04ffd5",
    color3: "rgba(158, 0, 240, 1)"
})

let color4 = ref("red");
const setColor = ()=>{
    color4.value = "#04ffd5"
}
</script>
<style lang="less" scoped>
.dong{
    width: 100%;
    height: 100%;
    color: #fff;
    background: #fff;
    font-size: 18px;
    .box{
        width: 100px;
        height: 100px;
    }
    .box1{
        background: v-bind(color1);
    }
    .box2{
        background: v-bind('colorobj.color2');
    }
    .box3{
        background: v-bind('colorobj.color3');
    }
    .box4{
        background: v-bind(color4);
    }
    
    .h3{
        font-size: 20px;
        color: #000;
    }
}
</style>

全局样式:global()

可以直接在组件里面写,全局生效, 一般不建议用

<style lang="scss" scoped>

// div .class #id
:global(div) {
  background-color: #e3e3e3e8;

}

</style>

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值