Vue 3中按条件设置HTML元素的class值,同时附加其他的class值

Le Mon 24 February 2025

姑娘想给一个HTML元素的class属性添加一些内容。这些内容有的是直接写死的,有的要按条件设置。 这时候,姑娘需要给这个元素添加两个class属性。这让姑娘惊异不已。

<template>
<div class="flex justify-between" :class="{'color-white': enableWhite, 'color-red': enableRed}">
</template>

<script setup>
    import { ref } from 'vue'

    const enableWhite = ref(false)
    const enableRed = ref(true)
</script>

这样,可用达到div的class属性最终合并为一的效果。这样的写法真是不耐看。

上述写法渲染后,可能的几种结果:

<div class="flex justify-between"></div>
<div class="flex justify-between color-white"></div>
<div class="flex justify-between color-red"></div>
<div class="flex justify-between color-white color-red"></div>

样式class与v-if的结合使用:

<PaymentMethod class="p-1" v-if="selected" v-for="({icon, label}, index) in payment_via_list" :index="index" :icon="icon" :label="label" @click="payment_method_clicked"></PaymentMethod>

<PaymentMethod class="p-1" v-if="!selected" v-for="({icon, label}, index) in payment_via_list" :index="index" :icon="icon" :label="label" @click="payment_method_clicked"></PaymentMethod>

样式class与v-for的结合使用:

<PaymentMethod class="p-1" class="{'bg-white': selected}" v-for="({icon, label}, index) in payment_via_list" :index="index" :icon="icon" :label="label" @click="payment_method_clicked"></PaymentMethod>

写法杂乱,难言美观。

Par 纳兰风来, Catégorie : 25-003

Tags :