多状态映射不同样式(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>
相关推荐
华仔啊24 分钟前
Vue3 + Element Plus 动态菜单实现:一套代码完美适配多角色权限系统
前端·vue.js
慧慧吖@1 小时前
关于在本地去模拟生产环境检测页面内容注意事项
前端·javascript·vue.js
黄团团1 小时前
Vue2整合Electron开发桌面级应用以及打包发布(提供Gitee源码)
前端·javascript·vue.js·elementui·electron
独角仙梦境2 小时前
同事:架构太复杂了,源码文件找半天。 我:源码溯源了解一下?
前端·vue.js
我叫张小白。3 小时前
Vue3 路由:单页面应用的核心引擎
前端·javascript·vue.js·前端框架·vue3
猫头虎-前端技术4 小时前
小白也能做AI产品?我用 MateChat 给学生做了一个会“拍照解题 + 分步教学”的AI智能老师
前端·javascript·vue.js·前端框架·ecmascript·devui·matechat
前端加油站4 小时前
使劲折腾Element Plus的Table组件
前端·javascript·vue.js
十五喵4 小时前
智慧物业|物业管理|基于SprinBoot+vue的智慧物业管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设·智慧物业管理系统
用户841794814564 小时前
如何用 vxe-table 实现粘贴数据自动进入新增行与新增列
vue.js
朕的剑还未配妥5 小时前
vue2中transition使用方法解析,包含底部弹窗示例、样式未生效踩坑记录
前端·vue.js