CSS3和jQuery实现的自定义美化Checkbox
效果图:
是不是比默认的好看多了,个人的审美观应该还是可以的。
当然我们可以在这里查看DEMO演示。
接下来我们一起来看看实现这款美化版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 */
在线演示:http://hovertree.com/texiao/html5/32/
转自:http://hovertree.com/h/bjaf/css3checkbox.htm
特效库:http://www.cnblogs.com/roucheng/p/texiao.html
CSS3和jQuery实现的自定义美化Checkbox的更多相关文章
- CSS3和jQuery实现的自定义美化Checkbox和Radiobox
现在经常可以在网络上看到一些非常奇特的表单元素,例如Checkbox复选框和Radiobox单选框,浏览器默认的样式确实是太丑了,而且更让人蛋疼的是各个浏览器的样式还不统一,考虑到现在越来越多的用户使 ...
- 基于CSS3自定义美化复选框Checkbox组合
今天我们要来分享一组非常漂亮的CSS3自定义复选框checkbox,每一个checkbox都有其各自的特点.有几款checkbox在选中的情况下还会出现动画效果,非常不错的CSS3自定义美化check ...
- 使用HTML5、CSS3和jQuery增强网站用户体验[留存]
记得几年前如果你需要添加一些互动元素到你的网站中用来改善用户体验?是不是立刻就想到了flash实现?这彷佛年代久远的事了.使用现在最流行的Web技术HTML5,CSS3和jQuery,同样也可以实现类 ...
- input美化 checkbox和radio样式
input美化 checkbox和radio样式 看惯了input[checkbox]和input[radio]默认样式,有没有想要改变一下呢?比如下面的样式: 比起html默认的样式,上图这些 ...
- 使用CSS3和jQuery可伸缩的搜索条
使用CSS3和jQuery可伸缩的搜索条 helloweba.com 作者:月光光 时间:2013-12-09 21:23 标签: CSS3 jquery 搜索条在我们网站是必不可少的,尤其是在有限的 ...
- [jQuery]jQuery DataTables插件自定义Ajax分页实现
前言 昨天在博客园的博问上帮一位园友解决了一个问题,我觉得有必要记录一下,万一有人也遇上了呢. 问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分 ...
- 解密jQuery事件核心 - 自定义设计(三)
接上文http://www.cnblogs.com/aaronjs/p/3447483.html 本文重点:自定义事件 “通过事件机制,可以将类设计为独立的模块,通过事件对外通信,提高了程序的开发效率 ...
- jQuery radio取值,checkbox取值,select取值
语法解释: $("#select_id").change(function(){//code...}); //为Select添加事件,当选择其中一项时触发 var checkTex ...
- TreeView 自定义显示checkbox
本项目需要对TreeView进行定制,要求比较简单,主要要求如下: Winform中TreeView控件默认只支持所有级别的CheckBox显示或者不显示,不能控制制定Level的树节点显示 效果如下 ...
随机推荐
- 安卓动态调试七种武器之离别钩 – Hooking(下)
0x00 序 随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是万能的.另外工具是死的,人是活的,如果能搞懂工具的原理再结合上自身的经验,你也可以创造出属于自己的调试 ...
- 一个App完成入门篇-终结篇(八)- 应用收官
经过以上几步的学习,我们终于来到最后一个步骤了,应用APP也接近尾声. 通过之前的几节教程,不知道您对使用DeviceOne开发一个应用是不是已经得心应手了,本节教程将教会大家如何在开发完成之后通过D ...
- Net作业调度(二) -CrystalQuartz远程管理
Source Code-1.6M 介绍 上篇已经了解Quartz.NET的基本使用方法了.但如果想方便的知道某个作业执行情况,需要暂停,启动等操作行为,这时候就需要个Job管理的界面. 本文介绍Qua ...
- DDD领域驱动设计之领域服务
1.DDD领域驱动设计实践篇之如何提取模型 2.DDD领域驱动设计之聚合.实体.值对象 3.DDD领域驱动设计之领域基础设施层 什么是领域服务,DDD书中是说,有些类或者方法,放实体A也不好,放实体B ...
- gulp使用小结(一)
这篇文章不会介绍 gulp 的起源.发展:不会去一个个讲解 gulp API:也不想出现大段大段的 gulpfile.js 代码:更木有帮你分析 gulp 实现原理,只有一些我自己对 gulp 的使用 ...
- MVC缓存
MVC入门系列教程-视频版本,已入驻51CTO学院,文本+视频学效果更好哦.视频链接地址如下: 点我查看视频.另外,针对该系列教程博主提供有偿技术支持,群号:226090960,群内会针对该教程的问题 ...
- 【VC++技术杂谈004】使用微软TTS语音引擎实现文本朗读
本文主要介绍如何使用微软TTS语音引擎实现文本朗读,以及生成wav格式的声音文件. 1.语音引擎及语音库的安装 TTS(Text-To-Speech)是指文本语音的简称,即通过TTS引擎把文本转化为语 ...
- C#设计模式-外观模式
在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化,然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作 ”门面“模 ...
- 在drawable 画胶囊状
<solid android:color="@color/colorAccent"></solid> <corners android:radius= ...
- 创建分区表和查看分区表的Metadata
未分区的表,只能存储在一个FileGroup中:对table进行分区后,每一个分区都存储在一个FileGroup中.表分区是将逻辑上一个完整的表,按照特定的字段拆分成Partition set,分散到 ...