vueDay03——可灵活变动的class样式

一、需求背景

有时候我们需要对不同身份的用户在同一个组件上展示不同的样式(界面这里暂且不谈),我们就需要控制该组件在不同的数据下呈现不同的样式

这时候我们就可以使用:class属性来动态调整样式

二、将class与style绑定

我们可以这样声明一个div

<div
    class="baseStyle" 
    :class="{vip:vipFlag,svip:sVipFlag}"
    > 
        <p>尊敬的{{welcomeInfo}},您好!</p>
 </div>

// 初始化响应式变量
const userType = ref(0)
const vipFlag =ref(0)
const sVipFlag = ref(0)
const welcomeInfo = ref('普通用户')

.baseStyle {
    font-family: "HarmonyOS Sans SC";
}
.vip {
    color: red;
}
.svip {
    font-style: italic;
}

然后通过后端接口,在页面渲染完毕的时候获取数据,将数据渲染上去

onMounted(() => {
    // 假设这个方法是从后端调接口获取用户信息数据
    getuserInfo();
    // console.log("")
    setUsertype()
})

const getuserInfo = () => {
    userType.value = debugArray.value[0]
    vipFlag.value  = debugArray.value[1]
    sVipFlag.value = debugArray.value[2]
}

const setUsertype = () => {
     welcomeInfo.value = (vipFlag.value ===1 || sVipFlag.value === 1)? "超级用户":"普通用户"
}

通过判断后端传来的不同数据(前端使用一个数组进行模拟)来渲染不同的样式

三、功能示例

四、代码展示

<template>
    <p>我是样式绑定</p>
    <div
    class="baseStyle" 
    :class="{vip:vipFlag,svip:sVipFlag}"
    > 
        <p>尊敬的{{welcomeInfo}},您好!</p>
    </div>
</template>

<script lang="ts" setup>
import { computed, onMounted } from "vue";
import { ref } from 'vue'
// 初始化响应式变量
const userType = ref(0)
const vipFlag =ref(0)
const sVipFlag = ref(0)
const welcomeInfo = ref('普通用户')

const debugArray = ref([0,1,1])
// const welcomeInfo = () => computed(() => {
//     if (vipFlag.value ===1 || sVipFlag.value === 1){
//         return '超级用户'
//     }
//     return '普通用户'
//     // return (vipFlag.value ===1 || sVipFlag.value === 1)? "超级用户":"普通用户"
// })

const getuserInfo = () => {
    userType.value = debugArray.value[0]
    vipFlag.value  = debugArray.value[1]
    sVipFlag.value = debugArray.value[2]
}

const setUsertype = () => {
     welcomeInfo.value = (vipFlag.value ===1 || sVipFlag.value === 1)? "超级用户":"普通用户"
}
onMounted(() => {
    // 假设这个方法是从后端调接口获取用户信息数据
    getuserInfo();
    // console.log("")
    setUsertype()
})
</script>

<style scoped>
.baseStyle {
    font-family: "HarmonyOS Sans SC";
}
.vip {
    color: red;
}
.svip {
    font-style: italic;
}
</style>
相关推荐
egekm_sefg43 分钟前
一个基于Rust适用于 Web、桌面、移动设备等的全栈应用程序框架
开发语言·前端·rust
ObjectX前端实验室1 小时前
交互式md文档渲染实现
前端·github·markdown
小怪瘦791 小时前
JS实现Table表格数据跑马灯效果
开发语言·javascript·信息可视化
励志成为大佬的小杨2 小时前
c语言中的枚举类型
java·c语言·前端
罗_三金2 小时前
微信小程序打印生产环境日志
javascript·微信小程序·小程序·bug
shuishen492 小时前
Web Bluetooth API 开发记录
javascript·web·js
前端熊猫2 小时前
Element Plus 日期时间选择器大于当天时间置灰
前端·javascript·vue.js
傻小胖3 小时前
React 组件通信完整指南 以及 自定义事件发布订阅系统
前端·javascript·react.js
JaxNext3 小时前
开发 AI 应用的无敌配方,半小时手搓学英语利器
前端·javascript·aigc
万亿少女的梦1683 小时前
高校网络安全存在的问题与对策研究
java·开发语言·前端·网络·数据库·python