原生实现多选框

4 篇文章 0 订阅
<template>
  <div>
    <div class="box">
      <label
        id="label"
        :for="item3"
        :title="item3"
        :class="{ 'bg': checkedValue.includes(item3), 'bgColor': true }"
        @click="chooseType($event, index3)"
        v-for="(item3, index3) in type"
        :key="index3"
      >
        <input
          type="checkbox"
          :value="item3"
          :id="item3"
          v-model="checkedValue"
        />
        <div class="name">{{ text(item3) }}</div>
      </label>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      checkedValue: [],
      type: [
        "中国中国中国中国中国中国",
        "美国",
        "日本",
        "中国1",
        "美国2",
        "日本3",
        "中国4",
        "美国5",
        "日本6",
      ],
    };
  },
  mounted() {},
  methods: {
    chooseType(e, index) {
      if (e.target.checked) {
        this.checkedValue.push(e.target.defaultValue);
        console.log(this.checkedValue.includes(e.target.defaultValue));
      } else {
        this.checkedValue = this.checkedValue.filter(
          (item) => item != e.target.defaultValue
        );
      }
      console.log(this.checkedValue, index);
    },

    text(texts) {
      return texts;
    },
  },
};
</script>

<style lang="scss" scoped>
.box {
  width: 600px;
  display: flex;
  flex-wrap: wrap;
}

.bg {
  color: #FEFEFE !important;
  background: #21AD89 !important;
}

.bgColor {
  font-size: 14px;
  font-weight: 400;
  color: #666666;
  background: #ffffff;
  box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.12);
  border-radius: 10px;
}

.box label {
  display: flex;
  align-items: center;
  margin: 0 10px;
  cursor: pointer;
  padding: 5px;
  margin-bottom: 10px;
  border-radius: 3px;
}

.box label input {
  cursor: pointer;
}

.box .name {
  margin-left: 8px;
}
input[type="checkbox"]{
		width: 12px;
		height: 12px;
		// background: #fff;
		// border: 1px solid #000;
		float: left;
		margin-right: 11px;
		cursor: pointer;
		-webkit-appearance:none;
		outline: none;
		background: url('../assets/image/Box unchecked.png') 0 0/12px 12px no-repeat;
	}

input[type="checkbox"]:checked{
		background: url('../assets/image/Check box.png') 0 0/12px 12px no-repeat;
	}
</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值