概述
本文将介绍一个 Vue.js 复选框组件的实现,该组件支持自定义形状(正方形或圆形)和颜色。通过简单的 prop 配置,你可以轻松地在项目中使用这个组件,并根据需要定制其外观。
组件功能
- 自定义形状:可以选择正方形或圆形。
- 自定义颜色:可以设置复选框选中状态的颜色。
- 响应式:点击时会切换选中状态,并触发事件通知外部。
安装与使用
确保你的项目已经安装了 Vue.js 和 uni-app 相关的依赖包。
- 创建组件文件: 创建一个名为
CheckIcon.vue
的文件,并将以下代码复制到文件中。 - 引入组件: 在你需要使用该组件的页面中引入并注册它。
示例代码
<template>
<view class="he-checkbox" :class="[value ? 'he-checkbox--checked' : '', shapeClass]" @click="toggle">
<uni-icons v-if="value" type="checkmarkempty" size="16" color="#fff"></uni-icons>
</view>
</template>
<script>
export default {
name: "checkIcon",
props: {
check: {
type: Boolean,
default: false,
},
shape: {
type: String,
default: 'square',
validator(value) {
return ['square', 'circle'].includes(value);
}
},
color: {
type: String,
default: '#277EEF'
}
},
created() {
this.value = this.check;
},
watch: {
check(val) {
this.value = val;
}
},
data() {
return {
value: ""
};
},
computed: {
shapeClass() {
return `he-checkbox--${this.shape}`;
}
},
methods: {
toggle() {
this.value = !this.value;
this.$emit('change', this.value);
}
}
}
</script>
<style lang="scss" scoped>
.he-checkbox {
border: 1px solid #AAAAAA;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
&--square {
height: 32rpx;
width: 32rpx;
}
&--circle {
height: 32rpx;
width: 32rpx;
border-radius: 50%;
}
&--checked {
border-color: var(--checkbox-color, #277EEF);
background-color: var(--checkbox-color, #277EEF);
}
}
</style>
使用示例
<template>
<view>
<check-icon :check="isChecked" @change="onChange"></check-icon>
<check-icon :check="isCheckedCircle" :shape="shape" :color="color" @change="onChange"></check-icon>
</view>
</template>
<script>
import CheckIcon from './CheckIcon.vue';
export default {
components: {
CheckIcon
},
data() {
return {
isChecked: false,
isCheckedCircle: false,
shape: 'circle',
color: '#FF0000'
};
},
methods: {
onChange(newVal) {
console.log("Checkbox state changed to:", newVal);
}
}
}
</script>
总结
通过以上步骤,你可以轻松地在 Vue.js 项目中使用这个自定义形状与颜色的复选框组件。这不仅提高了组件的灵活性,还使得界面更加美观和统一。希望这个组件能帮助你在开发过程中更加高效!
注意事项
- 确保你的项目环境中已经安装了
uni-app
和vue
的icon相关依赖。 - 如果需要进一步自定义样式,请直接修改
.he-checkbox
类中的 CSS 规则。 - 如果需要支持更多形状或颜色,请相应地扩展
props
和样式类。