jQuery CSS3自定义美化Checkbox实现代码


Posted in Javascript onMay 12, 2016

效果图:

jQuery CSS3自定义美化Checkbox实现代码

是不是比默认的好看多了,个人的审美观应该还是可以的。

接下来我们一起来看看实现这款美化版Checkbox的源代码,主要思路是利用隐藏原来的checkbox和radiobox,用一个div来模拟checkbox/radiobox,并使用jQuery来完成选择切换时的动画效果。

先来看看HTML代码:

<div class="wrapper">
  <ul>
   <li>
    <p>Gender:</p>
   </li>
   <li>
    <input type="radio" name="radio-btn" />Male
   </li>
   <li>
    <input type="radio" name="radio-btn" />Female
   </li>
  </ul>
  <ul>
   <li>
    <p>推荐网站:</p>
   </li>
   <li>
    <input type="checkbox" name="check-box" /> <span>何问起</span>

   </li>
   <li>
    <input type="checkbox" name="check-box" /> <span>柯乐义</span>

   </li>
   <li>
    <input type="checkbox" name="check-box" /> <span>hwq2.com</span>

   </li>
   <li>
    <input type="checkbox" name="check-box" /> <span>hovertree.net</span>

   </li>
  </ul>
 </div>

然后我们用jQuery代码来为每一个checkbox和radiobox创建一个div,这个div的classname为check-box和radio-btn。

$("input[name="radio-btn"]").wrap("<div class="radio-btn"><i></i></div>");
$("input[name="check-box"]").wrap("<div class="check-box"><i></i></div>");

那么我们接下来要让原来的checkbox隐藏,同时设置模拟div的样式:

.radio-btn input[type="radio"], .check-box input[type="checkbox"] {
 visibility: hidden;
}


.check-box {
 width: 22px;
 height: 22px;
 cursor: pointer;
 display: inline-block;
 margin: 2px 7px 0 0;
 position: relative;
 overflow: hidden;
 box-shadow: 0 0 1px #ccc;
 -webkit-border-radius: 3px;
 -moz-border-radius: 3px;
 border-radius: 3px;
 background: rgb(255, 255, 255);
 background: -moz-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, 1)), color-stop(47%, rgba(246, 246, 246, 1)), color-stop(100%, rgba(237, 237, 237, 1)));
 background: -webkit-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
 background: -o-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
 background: -ms-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
 background: linear-gradient(to bottom, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff", endColorstr="#ededed", GradientType=0);
 border: 1px solid #ccc;
}
.check-box i {
 background: url("http://hovertree.com/texiao/html5/32/css/check_mark.png") no-repeat center center;
 position: absolute;
 left: 3px;
 bottom: -15px;
 width: 16px;
 height: 16px;
 opacity: .5;
 -webkit-transition: all 400ms ease-in-out;
 -moz-transition: all 400ms ease-in-out;
 -o-transition: all 400ms ease-in-out;
 transition: all 400ms ease-in-out;
 -webkit-transform:rotateZ(-180deg);
 -moz-transform:rotateZ(-180deg);
 -o-transform:rotateZ(-180deg);
 transform:rotateZ(-180deg);
}
.checkedBox {
 -moz-box-shadow: inset 0 0 5px 1px #ccc;
 -webkit-box-shadow: inset 0 0 5px 1px #ccc;
 box-shadow: inset 0 0 5px 1px #ccc;
 border-bottom-color: #fff;
}
.checkedBox i {
 bottom: 2px;
 -webkit-transform:rotateZ(0deg);
 -moz-transform:rotateZ(0deg);
 -o-transform:rotateZ(0deg);
 transform:rotateZ(0deg);
}
/*Custom radio button*/
 .radio-btn {
 width: 20px;
 height: 20px;
 display: inline-block;
 float: left;
 margin: 3px 7px 0 0;
 cursor: pointer;
 position: relative;
 -webkit-border-radius: 100%;
 -moz-border-radius: 100%;
 border-radius: 100%;
 border: 1px solid #ccc;
 box-shadow: 0 0 1px #ccc;
 background: rgb(255, 255, 255);
 background: -moz-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, 1)), color-stop(47%, rgba(246, 246, 246, 1)), color-stop(100%, rgba(237, 237, 237, 1)));
 background: -webkit-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
 background: -o-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
 background: -ms-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
 background: linear-gradient(to bottom, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff", endColorstr="#ededed", GradientType=0);
}
.checkedRadio {
 -moz-box-shadow: inset 0 0 5px 1px #ccc;
 -webkit-box-shadow: inset 0 0 5px 1px #ccc;
 box-shadow: inset 0 0 5px 1px #ccc;
}
.radio-btn i {
 border: 1px solid #E1E2E4;
 width: 10px;
 height: 10px;
 position: absolute;
 left: 4px;
 top: 4px;
 -webkit-border-radius: 100%;
 -moz-border-radius: 100%;
 border-radius: 100%;
}
.checkedRadio i {
 background-color: #898A8C;
}/* 何问起 hovertree.com */

上面这段CSS3代码就是用样式来自定义div,让div的样式和checkbox和radiobox一样。

最后我们来模拟点击选中和取消选中,这部分也是用jQuery来实现:

$(".radio-btn").on("click", function () {
 var _this = $(this),
  block = _this.parent().parent();
 block.find("input:radio").attr("checked", false);
 block.find(".radio-btn").removeClass("checkedRadio");
 _this.addClass("checkedRadio");
 _this.find("input:radio").attr("checked", true);
});



$.fn.toggleCheckbox = function () {
 this.attr("checked", !this.attr("checked"));
}
$(".check-box").on("click", function () {
 $(this).find(":checkbox").toggleCheckbox();
 $(this).toggleClass("checkedBox");
});/* 何问起 hovertree.com */

以上就是本文的全部内容,希望对大家学习jquery程序设计有所帮助。

Javascript 相关文章推荐
IE6下通过a标签点击切换图片的问题
Nov 14 Javascript
jQuery Jcrop插件实现图片选取功能
Nov 23 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
Jan 13 Javascript
浅谈js中的引用和复制(传值和传址)
Sep 18 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
Oct 21 Javascript
微信小程序 textarea 详解及简单使用方法
Dec 05 Javascript
详解javascript中对数据格式化的思考
Jan 23 Javascript
thinkjs之页面跳转同步异步操作
Feb 05 Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
Feb 08 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
Dec 14 Javascript
微信小程序获取地理位置及经纬度授权代码实例
Sep 18 Javascript
vue中可编辑树状表格的实现代码
Oct 31 Javascript
深入浅析JavaScript中with语句的理解
May 12 #Javascript
基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作
May 12 #Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
May 12 #Javascript
基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
May 12 #Javascript
基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
May 12 #Javascript
基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
May 12 #Javascript
基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用
May 12 #Javascript
You might like
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
PHP查询大量数据内存耗尽问题的解决方法
2016/10/28 PHP
索趣科技的答案
2007/02/07 Javascript
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
2014/10/17 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
Bootstrap入门书籍之(一)排版
2016/02/17 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
2016/06/17 Javascript
详解Node.Js如何处理post数据
2016/09/19 Javascript
D3.js实现简洁实用的动态仪表盘的示例
2018/04/04 Javascript
详解vue-router传参的两种方式
2018/09/10 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
2018/10/08 Javascript
JavaScript遍历数组和对象的元素简单操作示例
2019/07/09 Javascript
微信小程序视频弹幕发送功能的实现
2020/12/28 Javascript
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
在类Unix系统上开始Python3编程入门
2015/08/20 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
python中使用iterrows()对dataframe进行遍历的实例
2018/06/09 Python
Django框架实现逆向解析url的方法
2018/07/04 Python
利用Python实现原创工具的Logo与Help
2018/12/03 Python
jupyter notebook中美观显示矩阵实例
2020/04/17 Python
基于python实现判断字符串是否数字算法
2020/07/10 Python
含精油的天然有机化妆品:Indemne
2019/08/27 全球购物
地理教师岗位职责
2014/03/16 职场文书
职位说明书范文
2014/05/07 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
介绍信样本
2015/01/31 职场文书
小学教师岗位职责
2015/04/02 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书
Nginx已编译的nginx-添加新模块
2021/04/01 Servers
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏