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 相关文章推荐
Iframe 自适应高度并实时监控高度变化的js代码
Oct 30 Javascript
js 处理URL实用技巧
Nov 23 Javascript
使用JQuery和CSS模拟超链接的用户单击事件的实现代码
May 23 Javascript
在jQuery中 常用的选择器介绍
Apr 16 Javascript
js传中文参数controller里获取参数乱码问题解决方法
Jan 03 Javascript
基于JavaScript实现树形下拉框
Aug 10 Javascript
Angular directive递归实现目录树结构代码实例
May 05 Javascript
vue.js的computed,filter,get,set的用法及区别详解
Mar 08 Javascript
微信小程序实现带缩略图轮播效果
Nov 04 Javascript
微信小程序云开发之模拟后台增删改查
May 16 Javascript
Vue使用v-viewer实现图片预览
Oct 21 Javascript
vue实现input输入模糊查询的三种方式
Aug 14 Vue.js
深入浅析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 中的面向对象编程:通向大型 PHP 工程的办法
2006/12/03 PHP
PHP字符串处理的10个简单方法
2010/06/30 PHP
web目录下不应该存在多余的程序(安全考虑)
2012/05/09 PHP
yii2.0之GridView自定义按钮和链接用法
2014/12/15 PHP
静态html文件执行php语句的方法(推荐)
2016/11/21 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
javascript css float属性的特殊写法
2008/11/13 Javascript
jquery动态加载图片数据练习代码
2011/08/04 Javascript
JavaScript图片放大技术(放大镜)实现代码分享
2013/11/14 Javascript
JavaScript中的pow()方法使用详解
2015/06/15 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
2016/01/07 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
webpack+vue.js快速入门教程
2016/10/12 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
python中文乱码的解决方法
2013/11/04 Python
Python中的startswith和endswith函数使用实例
2014/08/25 Python
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
使用python实现画AR模型时序图
2019/11/20 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
马来西亚时装购物网站:ZALORA马来西亚
2017/03/14 全球购物
全球航班旅行搜索网站:Cheapflights
2017/05/19 全球购物
出国留学自荐信
2013/10/25 职场文书
舞蹈专业求职信
2014/06/13 职场文书
交通事故协议书范本
2014/11/18 职场文书
返乡农民工证明
2015/06/24 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
最新的离婚协议书范本!
2019/07/02 职场文书
jquery插件实现搜索历史
2021/04/24 jQuery