我们在做一些页面时,可能会用到很多的单选框和复选框,但是原生的radio和checkbox前面的原型图标或方框样式不尽人意。于是,决定自己来实现单选框和复选框。我用的是vue,所以就用vue的方式实现单选和复选框。

下面来看一下单选框的实现:

template

        <!-- 单选框 -->
<span class="selfRadio" @click="clickRadio(1)">
<span class="selfRadioImgBox">
<img v-show="radioVal==1" src="../assets/img/checked.png" alt="选中图标">
<img v-show="radioVal!=1" src="../assets/img/noCheck.png" alt="未选中图标">
</span>
单选框
</span>
<span class="selfRadio" @click="clickRadio(2)">
<span class="selfRadioImgBox">
<img v-show="radioVal==2" src="../assets/img/checked.png" alt="选中图标">
<img v-show="radioVal!=2" src="../assets/img/noCheck.png" alt="未选中图标">
</span>
单选框
</span>

style

        .selfRadio{
cursor: pointer;
.selfRadioImgBox img{
width:18px;
height:18px;
}
.selfRadioText{
margin-left:10px;
}
}

data

        radioVal:0,

methods

        clickRadio(val){
if(this.radioVal==val){
this.radioVal=0;
}else{
this.radioVal=val;
}
}

单选框的实现,主体思想是,我们自己选两张图片,用v-show来控制其显示或隐藏,这样达到与单选框一样的效果,而且选择框可以根据自己的意愿来换。

下面来看一下多选框的实现:

data:

        checkBoxArr:[
{
text:'多选框1',
selectStatus:0
},
{
text:'多选框2',
selectStatus:0
}
]

template

        <!-- 多选框 -->
<span class="selfCheckBox" @click="clickCheckBox(index)" v-for="( item,index) in checkBoxArr" :key="index">
<span class="selfCkeckImgBox">
<img v-show="item.selectStatus==1" src="../assets/img/checked.png" alt="选中图标">
<img v-show="item.selectStatus==0" src="../assets/img/noCheck.png" alt="未选中图标">
</span>
<span class="checkBoxText">
{{ item.text }}
</span>
</span>

style

        .selfCheckBox{
cursor: pointer;
.selfCkeckImgBox img{
width:30px;
height:30px;
}
.checkBoxText{
margin-left:10px;
}
}

methods

        clickCheckBox(index){
if(this.checkBoxArr[index].selectStatus==){
this.checkBoxArr[index].selectStatus=;
}else{
this.checkBoxArr[index].selectStatus=
}
}

多选框,控制选择框的样式切换,和单选框是一样的原理,但是单选框只能选一个,而多选框可以选多个,所以在实现多选框时,我们将每个多选框里面都加了个selectStatus属性,用来表示,每个多选框的选中状态。

补充一条:选中样式图片与未选中样式图片,可以自己找,可以去ali图库里下载,想用啥用啥。

下面是将bootstrap与单复选框结合起来的使用方式,响应式,美化选择框

<template>
<div>
<!-- 单选框 -->
<div class="row">
<div v-for="(item,index) in radioList" :key="index" class="col col-xs-12 col-sm-6 col-md-4">
<input v-show="false" type="radio" name="gender" :value="item.value" :id="item.value" :checked="sex==item.value" @click="clickRadio(item.value)" />
<label :for="item.value">
<div class="imgBox">
<img v-show="sex==item.value" src="../../assets/checked.png" alt="选中">
<img v-show="sex!=item.value" src="../../assets/noCheck.png" alt="未选中">
</div>
{{item.label}}
</label>
</div>
</div>
<input type="text" v-model="sex"> <hr> <!-- 复选框 -->
<div class="row">
<div v-for="item in checkBoxList" :key="item.value" class="col col-xs-12 col-sm-6 col-md-4">
<label>
<div class="imgBox">
<img v-show="fruit.includes(item.value)" src="../../assets/checked.png" alt="选中">
<img v-show="!fruit.includes(item.value)" src="../../assets/noCheck.png" alt="未选中">
</div>
<input v-show="false" @click="clickCheckBox(item.value)" name="Fruit" type="checkbox" :value="item.value" :checked="fruit.includes(item.value)" />
{{item.label}}
</label>
</div>
</div> <input type="text" :value="fruit.join()">
</div>
</template> <script>
export default {
data(){
return {
radioList:[
{value:"男",label:"男"},
{value:"女",label:"女"},
{value:"人妖",label:"人妖"}
],
sex:"男",
checkBoxList:[
{value:"苹果",label:"苹果"},
{value:"香蕉",label:"香蕉"},
{value:"梨",label:"梨"},
{value:"西瓜",label:"西瓜"}
],
fruit:["苹果","香蕉"]
}
},
methods:{
clickRadio(val){
this.sex=val;
},
clickCheckBox(val){
if(this.fruit.includes(val)){
this.fruit.splice(this.fruit.indexOf(val),1);
}else{
this.fruit.push(val);
}
console.log(this.fruit.join())
}
}
}
</script> <style lang="scss" scoped>
.imgBox{
width:16px;
height:16px;
display:inline-block;
}
.imgBox img{
width:100%;
height:100%;
} </style>

上图

vue中单选框与多选框的实现与美化的更多相关文章

  1. vue.js实现单选框、复选框和下拉框

    Vue.js可以很方便的实现数据双向绑定,所以在处理表单,人机交互方面具有很大的优势.下边以单选框.复选框和下拉框为例介绍他们在HTML和Vue.js中的具体实现方式. 一.单选框   在传统的HTM ...

  2. Android笔记(十五) Android中的基本组件——单选框和复选框

    单选框和多选框通常用来在设置用户个人资料时候,选择性别.爱好等,不需要用户直接输入,直接在备选选项中选择,简单方便. 直接看代码: <?xml version="1.0" e ...

  3. Android开发之使用AlertDialog创建对话框,单选框和多选框

    对话框: 对话框的icon,title,message等都可以不设置. 单选框和多选框与对话框勾选步骤基本上一致. 对话框的构建步骤: 1.使用AlertDialog类的内部类Builder类new ...

  4. AngularJS进阶(二十四)AngularJS与单选框及多选框的双向动态绑定

    AngularJS与单选框及多选框的双向动态绑定      赠人玫瑰,手留余香.若您感觉此篇博文对您有用,请花费2秒时间点个赞,您的鼓励是我不断前进的动力,共勉! AngularJS 在 <in ...

  5. CSS学习笔记三:自定义单选框,复选框,开关

    一点一点学习CCS,这次学习了如何自定义单选框,复选框以及开关. 一.单选框 1.先写好body里面的样式,先写几个框 <body> <div class="radio-1 ...

  6. 使用jQuery为文本框、单选框、多选框、下拉框、下拉多选框设值及返回值的处理

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  7. 微信小程序-修改单选框和复选框大小的方法

    方法有两种: 一:采用css的zoom属性 zoom缩放会将元素保持在左上角,并且会有毛边,可能会稍稍改变元素原来的形状. 二:采用css3的transform:scale属性 zoom缩放会将元素保 ...

  8. HTML--使用单选框、复选框,让用户选择

    在使用表单设计调查表时,为了减少用户的操作,使用选择框是一个好主意,html中有两种选择框,即单选框和复选框,两者的区别是单选框中的选项用户只能选择一项,而复选框中用户可以任意选择多项,甚至全选.请看 ...

  9. jQuery获取单选框(复选框)选中的状态

    jQuery 获取单选框(复选框)选中的状态 <input type="checkbox" name="" id="choose"/& ...

随机推荐

  1. Java lesson17 homework

    package lesson17; /**1. 创建自定义类Triangle包含如下属性: 最小夹角 a(整型.单位度) 最大夹角 b(整型.单位度) 编写构造方法包含两个参数(夹角),并根据参数计算 ...

  2. CentOS/RHEL 安装EPEL第三方软件源

    EPEL源简介 EPEL(Extra Packages for Enterprise Linux) 是由 FedORA 社区打造,为 RHEL 及衍生发行版如 CentOS等提供高质量软件包的项目.装 ...

  3. 【weixin】微信支付---Native支付模式一

    [模式一]:商户后台系统根据微信支付规则链接生成二维码,链接中带固定参数productid(可定义为产品标识或订单号).用户扫码后,微信支付系统将productid和用户唯一标识(openid)回调商 ...

  4. 05 正确运行一个Go程序

    Go代码文件,程序中必须指定启动函数main() Hello.go package main //声明为main包,即可以编译成二进制程序 import "fmt" //导入fmt ...

  5. php迭代器Iterator接口

    以前也看过迭代器Iterator接口,感觉不如yied好用,因此实际工作中并没有用到过. 今天看了一篇网上的博客(https://www.cnblogs.com/wwjchina/p/7723499. ...

  6. centos7 php7.3

    ./configure --prefix=/root/php/php-7.3.10/output \ --with-mhash \ --with-openssl \ --with-mysqli=sha ...

  7. 第八章· MySQL日志管理

    一.MySQL日志简介  二.错误日志 1.作用: 记录mysql数据库的一般状态信息及报错信息,是我们对于数据库常规报错处理的常用日志. 2.默认位置: $MYSQL_HOME/data/ 3.开 ...

  8. iptables实现内外网端口映射及转发上网

    前两天在工作中遇到一个需求,某192.168.1.0/24内网网段内只有一台主机A连接到了公网,A的两块网卡分别有一个公网地址(123.234.345.456)和一个内网地址(192.168.1.10 ...

  9. SQL 语句 连接

    SQL连接可以分为内连接.外连接.交叉连接. 数据库数据:             book表                                          stu表 1.内连接 ...

  10. pip命令及虚拟环境的建立

    以下命令是pip命令,是帮助我们安装解决python所需要的环境包 列出已经安装的包 pip list 安装要安装的包 pip install 包名 安装特定版本 pip install django ...