多状态映射不同样式(scss语法)

如设计图中,不同状态的卡片的标题对应着不同的背景色以及不同的标签样式,所以需要根据卡片的状态值来动态改变卡片的样式。

示例代码如下:

js 复制代码
<view class="card" v-for="(item, index) in list" :key="index">
    <view :class="['card-title', classMap[item.fine_type]]">
        <view>{{item.created_date}}</view>
        <view class="tag">{{item.type_text}}</view>
    </view>
    ...
</view>
js 复制代码
data() {
    return {
        classMap: {
            0: 'fine-status0',
            1: 'fine-status1',
            2: 'fine-status2',
            3: 'fine-status3',
            4: 'fine-status4',
        },
        ...
    }
}
js 复制代码
<style lang="scss">
    $fine-statuses: (
        0: (
            title-bgc: linear-gradient(90deg, #FFEBDC 0%, rgba(255, 241, 232, 0) 100%),
            tag-bgc: #FFF0E5,
            tag-color: #FF9B54
        ),
        1: (
            title-bgc: linear-gradient(90deg, #FFF7E9 0%, rgba(255, 247, 233, 0) 100%),
            tag-bgc: #FFF3E7,
            tag-color: #FF8000
        ),
        2: (
            title-bgc: linear-gradient(90deg, #FFF3F1 0%, rgba(255, 243, 241, 0) 100%),
            tag-bgc: #FFF1EF,
            tag-color: #FF5B3F
        ),
        3: (
            title-bgc: linear-gradient(90deg, #FFF9E7 0%, rgba(255, 249, 231, 0) 100%),
            tag-bgc: #FFF7DD,
            tag-color: #D9B31D
        ),
        4: (
            title-bgc: linear-gradient(90deg, #FFF1F4 0%, rgba(255, 241, 244, 0) 100%),
            tag-bgc: #FFE8ED,
            tag-color: #F94A6F
        )
    );

    // 动态生成 fine-status 样式
    @each $key, $value in $fine-statuses {
        .fine-status#{$key} {
            background: map-get($value, title-bgc);

            .tag {
                background: map-get($value, tag-bgc);
                color: map-get($value, tag-color);
            }
        }
    }
</style>
相关推荐
晴天丨3 分钟前
Vue 3项目架构设计:从2200行单文件到24个组件
前端·vue.js
Ruihong5 分钟前
你的 Vue 3 defineAsyncComponent(),VuReact 会编译成什么样的 React?
vue.js·react.js·面试
Ruihong9 分钟前
你的 Vue 路由,VuReact 会编译成什么样的 React 路由?
vue.js·react.js·面试
慧一居士11 分钟前
Vue中的 h 作用和使用方法介绍
前端·vue.js
晴天丨12 分钟前
Element Plus 组件库实战技巧与踩坑记录
前端·vue.js
yhole1 小时前
SpringBoot + vue 管理系统
vue.js·spring boot·后端
落魄江湖行1 小时前
进阶篇五 Nuxt4 部署方案:从开发到生产
前端·vue.js·typescript·nuxt4
一个打工仔的笔记1 小时前
vue3 elementui plus 可编辑表格 完整例子
前端·vue.js·elementui
daols881 小时前
vxe-table 自定义数字行主键,解决默认字符串主键与后端类型不匹配问题
前端·javascript·vue.js·vxe-table
啥都不懂的小小白1 小时前
Vue 小白入门|Pinia 核心用法全解
javascript·vue.js·ecmascript