当前位置:首页 > VUE

vue 实现复选框

2026-02-21 21:45:26VUE

实现复选框的基础用法

在 Vue 中实现复选框可以通过 v-model 绑定到布尔值。当复选框被选中时,绑定的值为 true,反之为 false

<template>
  <div>
    <input type="checkbox" id="checkbox" v-model="checked">
    <label for="checkbox">勾选我</label>
    <p>当前状态: {{ checked }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      checked: false
    }
  }
}
</script>

处理多个复选框

当需要处理多个复选框时,可以将 v-model 绑定到一个数组,数组中的元素对应选中的复选框的 value 值。

<template>
  <div>
    <input type="checkbox" id="option1" value="选项1" v-model="selectedOptions">
    <label for="option1">选项1</label>
    <input type="checkbox" id="option2" value="选项2" v-model="selectedOptions">
    <label for="option2">选项2</label>
    <input type="checkbox" id="option3" value="选项3" v-model="selectedOptions">
    <label for="option3">选项3</label>
    <p>选中的选项: {{ selectedOptions }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedOptions: []
    }
  }
}
</script>

自定义复选框样式

可以通过隐藏原生复选框并使用 CSS 自定义样式来实现更美观的复选框。

vue 实现复选框

<template>
  <div>
    <label class="custom-checkbox">
      <input type="checkbox" v-model="checked">
      <span class="checkmark"></span>
      自定义样式复选框
    </label>
  </div>
</template>

<script>
export default {
  data() {
    return {
      checked: false
    }
  }
}
</script>

<style>
.custom-checkbox {
  display: inline-block;
  position: relative;
  padding-left: 25px;
  cursor: pointer;
}

.custom-checkbox input {
  position: absolute;
  opacity: 0;
  cursor: pointer;
}

.checkmark {
  position: absolute;
  top: 0;
  left: 0;
  height: 18px;
  width: 18px;
  background-color: #eee;
  border-radius: 3px;
}

.custom-checkbox:hover input ~ .checkmark {
  background-color: #ccc;
}

.custom-checkbox input:checked ~ .checkmark {
  background-color: #2196F3;
}

.checkmark:after {
  content: "";
  position: absolute;
  display: none;
}

.custom-checkbox input:checked ~ .checkmark:after {
  display: block;
}

.custom-checkbox .checkmark:after {
  left: 6px;
  top: 2px;
  width: 5px;
  height: 10px;
  border: solid white;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
</style>

使用第三方组件库

对于更复杂的复选框需求,可以考虑使用第三方 UI 组件库,如 Element UI、Vuetify 或 Ant Design Vue。

以 Element UI 为例:

vue 实现复选框

<template>
  <div>
    <el-checkbox v-model="checked">备选项</el-checkbox>
    <p>当前状态: {{ checked }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      checked: false
    }
  }
}
</script>

表单验证中的复选框

在使用 Vue 的表单验证库(如 VeeValidate)时,可以对复选框进行验证。

<template>
  <div>
    <input 
      type="checkbox" 
      id="terms" 
      v-model="terms" 
      v-validate="'required'" 
      name="terms"
    >
    <label for="terms">同意条款</label>
    <span v-show="errors.has('terms')" class="error">
      {{ errors.first('terms') }}
    </span>
  </div>
</template>

<script>
export default {
  data() {
    return {
      terms: false
    }
  }
}
</script>

<style>
.error {
  color: red;
}
</style>

动态生成复选框

当需要根据数据动态生成复选框时,可以使用 v-for 指令。

<template>
  <div>
    <div v-for="option in options" :key="option.value">
      <input 
        type="checkbox" 
        :id="option.value" 
        :value="option.value" 
        v-model="selectedOptions"
      >
      <label :for="option.value">{{ option.label }}</label>
    </div>
    <p>选中的选项: {{ selectedOptions }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      options: [
        { value: 'opt1', label: '选项一' },
        { value: 'opt2', label: '选项二' },
        { value: 'opt3', label: '选项三' }
      ],
      selectedOptions: []
    }
  }
}
</script>

标签: 复选框vue
分享给朋友:

相关文章

vue实现放大效果

vue实现放大效果

使用 CSS transform 实现放大效果 在 Vue 中实现放大效果可以通过 CSS 的 transform: scale() 属性。这种方法简单高效,适合大多数交互场景。 定义一个 CSS…

拖拽式编程vue实现

拖拽式编程vue实现

拖拽式编程在 Vue 中的实现方法 使用 HTML5 原生拖放 API Vue 可以结合 HTML5 的拖放 API 实现基础拖拽功能。通过 draggable 属性标记可拖拽元素,监听 dragst…

vue 实现拖拽

vue 实现拖拽

Vue 实现拖拽功能 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性和相关事件实现拖拽功能。 <template> &l…

vue实现公式

vue实现公式

在Vue中实现公式展示或计算可以通过多种方式实现,以下为具体方法: 使用模板插值与计算属性 若公式较简单,可直接在模板中使用插值表达式或计算属性。例如计算圆的面积: <template>…

vue 实现关闭

vue 实现关闭

Vue 实现关闭功能的方法 在Vue中实现关闭功能通常涉及组件销毁、模态框隐藏或路由跳转等场景。以下是几种常见实现方式: 销毁当前组件 使用v-if或v-show控制组件显示/隐藏,适用于局部组件:…

vue能实现

vue能实现

Vue.js 是一个流行的前端框架,能够实现多种功能。以下是 Vue 能够实现的主要功能和特性: 响应式数据绑定 Vue 的核心特性之一是响应式数据绑定。通过数据驱动视图,当数据发生变化时,视图会自…