CSS3和jQuery实现的自定义美化Checkbox

效果图:是不是比默认的好看多了,个人的审美观应该还是可以的。当然我们可以在这里查看DEMO演示。接下来我们一起来看看实现这款美化版Checkbox的源代码。主要思路是利用隐藏原来的checkbo

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

效果图:

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120534.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【大话QT之十六】使用ctkPluginFramework插件系统构建项目实战「建议收藏」

    【大话QT之十六】使用ctkPluginFramework插件系统构建项目实战「建议收藏」”使用ctkPluginFramework插件系统构建项目实战”,这篇文章是写博客以来最纠结的一篇文章。倒不是因为技术都多么困难,而是想去描述一个项目架构采用ctkPluginFramework来构建总是未尽其意,描述的太少未免词不达意,描述的太多又显得太啰嗦。有些看过之前写的【大话QT之四】ctkPlugin插件系统实现项目插件式开发这篇文章的朋友也想了解一下到底如果从零开始架构一个项目。在写这

    2022年6月6日
    29
  • 2020年5月份编程语言排行榜「建议收藏」

    2020年5月份编程语言排行榜「建议收藏」前言本文章中语言排名数据来自TIOBE排行榜和PYPL排行榜。这段时间一直在忙,都忘记更新这个排行榜了,今天重操旧业,给大家看一下5月份的编程语言排行榜TIOBE排行榜5月份数据2020年5月TIOBE指数以下是官方说明五月标题:编程语言C又回到了第一位Java和C在4月份已经非常接近了,但是这个月C再次超越了Java。上一次C排名第一是在2015年。我们只能猜测为什么C又是第一名。其中一个原因可能是冠状病毒。这听起来可能很傻,但有些编程语言确实从这种情况中受益。数据科学领域的例子有P

    2022年5月31日
    61
  • opencv识别多条形码数字_opencv测试代码

    opencv识别多条形码数字_opencv测试代码这其实是一个小工程完成的功能: 使用摄像头采集图像进行预处理(检测部分) 提取出预处理的条形码图像(识别部分) 将条形码进行存入数据库(存储部分) 首先接到这个图像识别的小工程需要先确定这个工程的最初输入,和最后输出,输入就是普通的RGB图像,输出是数据库文件。其中需要完成的过程,就是我需要做得功能,检测部分、识别部分和存储部分,话不多说,上部分代码:/…

    2025年6月27日
    4
  • iostat命令详解——linux性能分析[通俗易懂]

    iostat命令详解——linux性能分析[通俗易懂]之前总结uptime和free命令,今天继续来总结一下iostat。给自己留个笔记,同时也希望对大家有用。版本信息:         sysstatversion9.0.4         (C)SebastienGodard(sysstatorange.fr)基本使用:          iostat[-c][-d][-N][-n

    2022年10月6日
    1
  • Python_note_003(Python中的输入函数input()、运算符用法)「建议收藏」

    Python_note_003(Python中的输入函数input()、运算符用法)「建议收藏」输入函数input()作用:接收来自用户的输入返回值类型:输入值的类型为str值的存储:使用=对输入的值进行存储#输入函数inputpre=input('你叫什么名字?')

    2022年7月6日
    26
  • 吐血总结:解决 Reboot and select proper boot device or ……以及其它蓝屏黑屏「建议收藏」

    吐血总结:解决 Reboot and select proper boot device or ……以及其它蓝屏黑屏「建议收藏」程序猿一枚,笔记本用了两年了,被我鼓捣的死去活来,难免会跟我闹些“小别扭”,借助各种黑屏蓝屏对我“发脾气”~开始还好(一年前),一些小错误还都镇的住,免去了重装系统带来的麻烦。近来不知怎地,各种傲娇,疯狂蓝屏、自动重启外加重启后黑屏,最让我头疼的就是Rebootandselectproperbootdeviceor。。。这个错误,以前都还好,出现这个错误之后进入BIOS面板来回调…

    2022年4月30日
    240

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号