前言

checkbox和radio样式自定义在网页中是很常见的, 比如在进行表单输入时性别的选择,用户注册时选择已阅读用户协议。随着用户对产品体验要求越来越高,我们都会对checkbox和radio重新设计,checkbox默认的样式非常丑 ,无法直接修改checkbox和radio的样式,这里我们借助label标签来对它进行样式美化。

先看实现效果图,如下:

实现思路

1.设置input 属性hidden对该input进行隐藏,或者通过display:none也可以

<input type="radio" name="type" id="adviceRadio1" value="1" checked hidden/>

2.借助label for标签通过id绑定input ,这样在点击label时实际就是点击了input

<input type="radio" name="type" id="adviceRadio1" value="1" checked hidden/><label for="adviceRadio1" class="advice"></label>

3.定义label的样式,设置未选中状态的背景图

.advice{height: 12px;width: 12px;display: inline-block;background-image: url('https://caiyunupload.b0.upaiyun.com/newweb/imgs/icon-unchecked.png');background-repeat: no-repeat;background-position: center;vertical-align: middle;margin-top: -4px;}

4.使用相邻选择器设置选中状态label的样式

input[type="radio"]:checked + .advice{background-image: url('https://caiyunupload.b0.upaiyun.com/newweb/imgs/icon-checked.png');}

实现代码

请选择反馈的问题:<label><input type="radio" name="type" id="adviceRadio1" value="1" checked hidden/><label for="adviceRadio1" class="advice"></label><span class="radio-name">问题</span></label><label><input type="radio" name="type" id="adviceRadio2" value="2" hidden/><label for="adviceRadio2" class="advice"></label><span class="radio-name">建议</span></label><span id="result">1</span><style type="text/css">.advice{height: 12px;width: 12px;display: inline-block;background-image: url('https://caiyunupload.b0.upaiyun.com/newweb/imgs/icon-unchecked.png');background-repeat: no-repeat;background-position: center;vertical-align: middle;margin-top: -4px;}input[type="radio"]:checked + .advice{background-image: url('https://caiyunupload.b0.upaiyun.com/newweb/imgs/icon-checked.png');}</style>

以上是radio单选框的实现代码,checkbox也是类似 将input type定义成checkbox即可

获取radio及checkbox选中的值

1.获取radio的值
使用jquery获取radio的值有3种方式:

$('input:radio:checked').val();
$("input[type='radio']:checked").val();
$("input[name='rd']:checked").val();

2.获取checkbox的值

 var obj = document.getElementsByName("hobby");var check_val = [];for(k in obj){if(obj[k].checked){check_val.push(obj[k].value);}}

遇到的坑

一开始写的时候,我是使用伪元素的方式实现,先将input进行隐藏 ,然后设置input:after定义它的样式,代码如下:

//html
<input type="radio" name="sex" id="male" /><label for="male"> Male</label>//css
input[type=radio]{visibility: hidden;}input[type=radio]:checked::after{background-image: url('./img/sprite.png');background-repeat: no-repeat;background-position: -59px -10px;visibility: visible;}input[type=radio]::after{content: ' ';display: block;height: 20px;width: 20px;background-image: url('./img/sprite.png');background-repeat: no-repeat;background-position: -24px -10px;visibility: visible;}

但是后来发现这种方式兼容性有问题,在firefox浏览器无法显示,经查资料是因为input不支持伪元素:after,:before 。
火狐浏览器无法插入内容DOM元素,伪元素都是在容器内进行渲染的。input无法容纳其他元素,因此它不支持伪元素。
input,img,iframe等元素都不能包含其他元素,所以不能通过伪元素插入内容。至于Chrome 中checkbox和radio可以插入应该就是bug了
input要配合其它容器元素(i,span)等实现预期效果

戳我在线查看demo

完整的代码我已经上传到了https://github.com/fozero/frontcode,可以点击查看,如果觉得还不错的话,记得star一下哦!

相关资料

https://www.cnblogs.com/u-drive/p/7888155.html
https://fatesinger.com/74438

作者:fozero
声明:原创文章,转载请注明出处,谢谢!http://www.cnblogs.com/fozero/p/8902116.html
标签:radio,checkbox美化

Css实现checkbox及radio样式自定义相关推荐

  1. html表单复选框样式,美化表单——自定义checkbox和radio样式

    如果你对本站比较观注的话,应该很清楚,前面就有这方面的介绍.因为大家都知道表单中的部分元素如果单单使用CSS是没办法完成的,所以最近花全力在学习这方面的制作.在本站有关于这样制作有好几个教程了,比如说 ...

  2. html怎么调搜索框宽高,百度站内搜索css:输入框宽度及样式自定义

    近日网站使用了百度站内搜索api,目的是为了提高站内搜索的速度,减轻查询站内数据库带来的服务器压力. 不过在使用百度站内搜索api(生效范围:*webkaka.com/*)后发现一个问题,不同的频道模 ...

  3. html去除radio的样式,【HTML+CSS】纯CSS设置checkbox大小和样式 附Radio的去除默认样式和自定义样式...

    话不多说,直接上效果图: 一.使用的基本div: 正常复选框 复选框checked 复选框disableed 二.自定义样式: input[type=checkbox] { margin-right: ...

  4. CSS美化上传按钮、checkbox和radio样式

    思路: 美化思路是,先把之前的按钮透明度opacity设置为0,然后,外层用div包裹,就实现了美化功能. input[type=file]上传按钮美化 代码如下: 样式一: /*a upload * ...

  5. html radio替换图片,html修改radio、checkbox样式_纯CSS改写checkbox样式,让复选框看起来更舒服一些...

    原享一多很.等考指的似是很面一也者效下行插生的checkbox.radio样式不好看,试试把以下代码朋支不器几事为的时后级功发发来久都这样含制层是请些间例业多在上屏屏有到进去看看. /* .myche ...

  6. [css] 如何修改美化radio、checkbox的默认样式?

    [css] 如何修改美化radio.checkbox的默认样式? 利用after伪元素自定义radio或者checkbox 或是利用图片进行样式修改 个人简介 我是歌谣,欢迎和大家一起交流前后端知识. ...

  7. html改变复选框颜色,如何利用纯CSS改变html?radio/checkbox默认背景颜色样式

    本篇文章给大家带来的内容是关于如何利用纯CSS改变html?radio/checkbox默认背景颜色样式,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. CSS代码:input[typ ...

  8. CSS 自定义Radio样式

    效果图 HTML代码 <table><tr><td style="font-weight: bold;">检查事项</td>< ...

  9. checkbox和radio的样式美化问题

    如果你下定决心要改变现有的默认的checkbox和radio的样式,那么我目前有两种办法: 1.自己动手写一个,也就是自己写代码实现将input的checkbox和radio默认的样式隐藏掉,使用绝对 ...

最新文章

  1. 记录 之 TypeError: ‘int‘ object is not subscriptable
  2. [MyBatisPlus]Plus分页插件的配置和使用
  3. 布隆过滤器速度_详解布隆过滤器的原理、使用场景和注意事项
  4. LeetCode 1610. 可见点的最大数目(atan2函数求夹角)
  5. Windows服务一直“正在启动”怎么杀
  6. [Java] 蓝桥杯ADV-213 算法提高 3-2求存款
  7. java创建实体 内存_加载Java实体时内存不足
  8. 蓝桥杯-奇妙的数字(2015-A-3)
  9. tomcat解决get请求中文乱码问题(两种解决方案)
  10. 1013: 【顺序结构】数字各位分割
  11. 物联网全景动态图谱2.0|PaaS物联网平台汇总
  12. 一个农村博士的独白:全家为什么只有我读到了博士?
  13. itunes计算机无法启动,电脑怎么打开itunes
  14. 【疑难杂症爆破委员会】UEFI Linux、Windows双系统,丢失Windows的efi文件导致找不到启动项(恢复Windows的efi文件)
  15. 9.9 力扣652. 寻找重复的子树
  16. 百度上传控件webUPload 的使用
  17. 读论文:Charting the Right Manifold:Manifold Mixup for Few-shot Learning
  18. [Python]tabulate可如此优雅地创建表格
  19. ICP许可证 [互联网信息服务业务]
  20. lisp医院化验系统_lis系统参数(医院实验室信息管理系统).doc

热门文章

  1. linux下如何判断oracle数据库tns是否设置正常
  2. resin启动时报错com.caucho.config.LineConfigException的解决
  3. [转]开发网路游戏的延迟处理方法,广播
  4. LeetCode 59 Spiral Matrix II(螺旋矩阵II)(Array)
  5. 关于EventSource的精华
  6. JavaScript之function类型
  7. 一起谈.NET技术,在没有安装 ASP.NET MVC3 的服务器上运行 MVC3
  8. web记录文章浏览数_内网渗透 -- 获取内网浏览器历史记录等相关信息
  9. flutter-webview的坑用到第三方插件的
  10. JAVA SE学习day_02:StringBuilder、正则表达式、Object