当前位置:首页 > VUE

vue实现card的单选

2026-02-23 00:27:34VUE

实现 Vue Card 单选功能

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

数据绑定与状态管理

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

<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 触发选择逻辑。

<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实现card的单选

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

相关文章

vue设计与实现目录

vue设计与实现目录

以下是《Vue设计与实现》一书的典型目录结构(根据常见技术书籍及Vue核心内容整理): 响应式系统 响应式数据的基本原理 依赖收集与触发更新 实现简易响应式系统 Proxy与Reflec…

vue实现新闻

vue实现新闻

Vue 实现新闻功能 使用 Vue 实现新闻功能通常涉及新闻列表展示、新闻详情页、分类筛选等模块。以下是实现的基本思路和代码示例。 新闻列表展示 通过 Vue 组件展示新闻列表,通常使用 v-for…

实现 vue 框架

实现 vue 框架

Vue 框架的基本实现 Vue 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是实现 Vue 框架的基本步骤和核心概念。 核心概念 响应式数据绑定 Vue 的核心特性之一是响应式…

vue  实现tab

vue 实现tab

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

vue实现driver

vue实现driver

Vue 实现 Driver.js 引导功能 Driver.js 是一个轻量级的 JavaScript 库,用于在网页上创建引导式导览。以下是在 Vue 项目中集成 Driver.js 的详细方法:…

vue 实现全屏

vue 实现全屏

Vue 实现全屏功能 在 Vue 中实现全屏功能可以通过浏览器提供的 Fullscreen API 完成。以下是一个完整的实现方案: 安装依赖(可选) 如果需要跨浏览器兼容性更好,可以安装 scr…