当前位置:首页 > VUE

vue实现card的单选

2026-02-23 00:27:34VUE

实现 Vue Card 单选功能

在 Vue 中实现 Card 单选功能可以通过以下方式完成,这里以 Vue 3 的 Composition API 为例。

数据绑定与状态管理

使用 refreactive 创建响应式数据存储当前选中的卡片 ID,并通过 v-model:class 动态绑定选中状态。

vue实现card的单选

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

const cards = [
  { id: 1, title: 'Card 1' },
  { id: 2, title: 'Card 2' },
  { id: 3, title: 'Card 3' }
];
const selectedCardId = ref(null);

const selectCard = (id) => {
  selectedCardId.value = id;
};
</script>

模板渲染与交互

通过 v-for 渲染卡片列表,根据 selectedCardId 动态添加选中样式,并通过 @click 触发选择逻辑。

vue实现card的单选

<template>
  <div class="card-container">
    <div 
      v-for="card in cards" 
      :key="card.id"
      class="card"
      :class="{ 'card--active': selectedCardId === card.id }"
      @click="selectCard(card.id)"
    >
      {{ card.title }}
    </div>
  </div>
</template>

样式控制

通过 CSS 定义卡片的基础样式和选中状态的高亮效果。

<style scoped>
.card {
  border: 1px solid #ddd;
  padding: 20px;
  margin: 10px;
  cursor: pointer;
  transition: all 0.3s;
}

.card--active {
  border-color: #42b983;
  background-color: #f0f9eb;
}
</style>

使用单选框的替代方案

如果需要更严格的表单行为,可以用 <input type="radio"> 结合透明化样式实现。

<template>
  <div class="radio-card-group">
    <label 
      v-for="card in cards" 
      :key="card.id"
      class="radio-card"
    >
      <input 
        type="radio" 
        :value="card.id"
        v-model="selectedCardId"
        hidden
      >
      <div class="card-content">
        {{ card.title }}
      </div>
    </label>
  </div>
</template>

注意事项

  • 如果卡片内容复杂,建议将卡片封装为独立组件,通过 emits 传递选中事件。
  • 对于大量卡片,考虑使用 v-show 替代 v-if 避免频繁 DOM 操作。
  • 单选逻辑也可通过计算属性实现验证,例如限制必须选择一项。

以上方法可根据实际项目需求调整,核心是通过响应式数据驱动视图更新,实现单选交互效果。

标签: 单选vue
分享给朋友:

相关文章

实现vue组件

实现vue组件

Vue 组件的基本实现 Vue 组件是 Vue.js 的核心特性之一,允许将 UI 拆分为独立、可复用的模块。以下是实现 Vue 组件的几种方式: 单文件组件 (SFC) 使用 .vue 文件格式,…

vue  实现tab

vue 实现tab

实现 Tab 切换功能 在 Vue 中实现 Tab 切换功能可以通过动态组件或条件渲染完成。以下是两种常见方法: 使用 v-if 或 v-show 实现条件渲染 通过绑定 currentTab 变量…

vue实现radio

vue实现radio

Vue 实现 Radio 按钮 在 Vue 中实现 Radio 按钮可以通过 v-model 进行数据绑定,结合 input 元素的 type="radio" 属性。以下是一个基本示例: <t…

vue实现dag

vue实现dag

Vue实现DAG(有向无环图) 在Vue中实现DAG(Directed Acyclic Graph,有向无环图)通常涉及数据结构的建模、可视化渲染以及交互逻辑处理。以下是关键实现步骤和示例代码: 数…

vue实现追加

vue实现追加

追加数据到数组或列表 在Vue中追加数据到数组或列表,可以通过push方法或concat方法实现。以下是几种常见的实现方式: 方法一:使用push方法 this.items.push(newIte…

vue 实现路径

vue 实现路径

在 Vue 中实现路径管理通常涉及路由配置、动态路由、嵌套路由等场景,以下是具体实现方法: 基础路由配置 安装 Vue Router 并创建路由实例: npm install vue-router…