整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

原生CSS3教你写一个漂亮的,带动画的checkbox效果


在之前的一篇文章《默认的input标签太丑?教你如何使用CSS写出带动画的样式》中有讲过如何实现一个漂亮的input标签样式。

既然已经折腾了,今天这篇文章我们就继续折腾,看看如何通过CSS3实现一个带动画的checkbox样式?

CSS3

感兴趣的可以自行去github上看源文件,地址如下:

https://github.com/zhouxiongking/article-pages/blob/master/articles/beautifulCheckbox/beautifulCheckbox.html

checkbox

checkbox作为多选框,在form表单中的使用频率是非常高的,例如问卷调查的多选题,个人兴趣爱好的选择时都会用到多选框。

而浏览器默认的checkbox样式都很丑,看起来就是一个小小的方框,虽然Bootstrap已经有好看的checkbox样式,但是它不支持动画,在交互上仍然存在缺陷,所以我们就试图自己写出一个带动画的checkbox效果。

首先我们来看看checkbox的动态效果图(中间的黑色圆圈实际为录制GIF图时产生的,请忽略)

checkbox效果图

具体组成

接下来我们具体分析下页面的元素组成,主要包括以下部分。

  1. 默认的checkbox标签,将其display设置为none,隐藏起来。

  2. label标签,表现为实际显示的动态选中和未选中效果。

我们需要达到的效果是,在未选中checkbox时,默认为灰色的边框,白色的背景;在选中checkbox时,改变背景色,出现白色的打勾动画效果。

代码组成

在这部分,我们来具体分析下页面的代码组成。

  • HTML

首先是页面的HTML部分代码,如上一部分所示,页面其实只有两个元素组成,这两个元素放在一个容器下,故HTML代码如下所示。

HTML部分代码

  • CSS

我们来看看CSS部分的代码,因为CSS部分代码比较多,我们一一来分析。

首先是外层container的样式,同时对页面的html和body也做一些简单处理,代码如下所示。

container样式

其次是checkbox标签的样式,因为原生的checkbox除了在传输数据时有用处,在页面呈现上并没有作用,故设置display:none;将其隐藏。

checkbox样式

然后是最重要的label部分,在未点击之前label呈现一个正方形,有基本的样式。

基本样式

在点击方形框后,出现的对勾是通过伪元素::before和::after实现的,对勾实际为两个矩形拼接而成,左侧的矩形用::after元素表示,右侧的矩形用::before元素表示。两者的通用样式通过如下代码实现。

伪元素实现

然后是针对::before和::after所特有的样式,因为两者的位置和旋转的角度不同,代码也会出现差异。

特有样式

然后是定义的打钩的动画效果,这里使用keyframes关键字定义,考虑到浏览器兼容性,定义的动画具有不同的前缀。定义的动画也包括两部分,首先是右侧的矩形动画效果。

右侧矩形动画效果

然后是左侧矩形的动画效果,同样考虑到浏览器的兼容性,样式代码如下。

左侧矩形动画

至此,所有代码都已讲解完毕,如果运行之后就会看到文章开始的动画效果。

结束语

本篇文章主要讲的是如何使用自定义的动画完成checkbox效果,感兴趣的可以直接去github上看源文件代码,后续会写一个跟开关switch有关的文章,敬请期待~


在之前的一篇文章《默认的input标签太丑?教你如何使用CSS写出带动画的样式》中有讲过如何实现一个漂亮的input标签样式。

既然已经折腾了,今天这篇文章我们就继续折腾,看看如何通过CSS3实现一个带动画的checkbox样式?

CSS3

感兴趣的可以自行去github上看源文件,地址如下:

https://github.com/zhouxiongking/article-pages/blob/master/articles/beautifulCheckbox/beautifulCheckbox.html

checkbox

checkbox作为多选框,在form表单中的使用频率是非常高的,例如问卷调查的多选题,个人兴趣爱好的选择时都会用到多选框。

而浏览器默认的checkbox样式都很丑,看起来就是一个小小的方框,虽然Bootstrap已经有好看的checkbox样式,但是它不支持动画,在交互上仍然存在缺陷,所以我们就试图自己写出一个带动画的checkbox效果。

首先我们来看看checkbox的动态效果图(中间的黑色圆圈实际为录制GIF图时产生的,请忽略)

checkbox效果图

具体组成

接下来我们具体分析下页面的元素组成,主要包括以下部分。

  1. 默认的checkbox标签,将其display设置为none,隐藏起来。

  2. label标签,表现为实际显示的动态选中和未选中效果。

我们需要达到的效果是,在未选中checkbox时,默认为灰色的边框,白色的背景;在选中checkbox时,改变背景色,出现白色的打勾动画效果。

代码组成

在这部分,我们来具体分析下页面的代码组成。

  • HTML

首先是页面的HTML部分代码,如上一部分所示,页面其实只有两个元素组成,这两个元素放在一个容器下,故HTML代码如下所示。

HTML部分代码

  • CSS

我们来看看CSS部分的代码,因为CSS部分代码比较多,我们一一来分析。

首先是外层container的样式,同时对页面的html和body也做一些简单处理,代码如下所示。

container样式

其次是checkbox标签的样式,因为原生的checkbox除了在传输数据时有用处,在页面呈现上并没有作用,故设置display:none;将其隐藏。

checkbox样式

然后是最重要的label部分,在未点击之前label呈现一个正方形,有基本的样式。

基本样式

在点击方形框后,出现的对勾是通过伪元素::before和::after实现的,对勾实际为两个矩形拼接而成,左侧的矩形用::after元素表示,右侧的矩形用::before元素表示。两者的通用样式通过如下代码实现。

伪元素实现

然后是针对::before和::after所特有的样式,因为两者的位置和旋转的角度不同,代码也会出现差异。

特有样式

然后是定义的打钩的动画效果,这里使用keyframes关键字定义,考虑到浏览器兼容性,定义的动画具有不同的前缀。定义的动画也包括两部分,首先是右侧的矩形动画效果。

右侧矩形动画效果

然后是左侧矩形的动画效果,同样考虑到浏览器的兼容性,样式代码如下。

左侧矩形动画

至此,所有代码都已讲解完毕,如果运行之后就会看到文章开始的动画效果。

结束语

本篇文章主要讲的是如何使用自定义的动画完成checkbox效果,感兴趣的可以直接去github上看源文件代码,后续会写一个跟开关switch有关的文章,敬请期待~

果您觉得该文章对您有帮助,让更多人受用,请关注“键盘码农”,转发该文章。谢谢您的支持!

今天跟大家写了一份js的联动全选的源码,代码少,清晰易懂。

效果是这样的:

点击全选下面的就会被全部全选,或者下面的被一一选择,全选按钮也会被选中。运用复选框来实现的联动全选的功能。

点击上面的复选框就会被全选

Javascript:联动全选

当下放的复选框没有被全选,最上面的全选按钮未被选中

复选框联动全选js代码实现:

<!DOCTYPE html>

<html>

<head>

<title></title>

<meta charset="utf-8">

<script type="text/javascript">

window.onload = function ()

{

var oBtn1 = document.getElementById('btn1');

var oBox = document.getElementById('box');

var oInputs = oBox.getElementsByTagName('input');

oBtn1.onclick = function ()

{

if (oBtn1.checked == true) {

for (var i = 0; i < oInputs.length; i++) {

oInputs[i].checked = true;

}

} else {

for (var i = 0; i < oInputs.length; i++) {

oInputs[i].checked = false;

}

}

}

//点击每一个input框

for (var i = 0; i < oInputs.length; i++) {

oInputs[i].onclick = function ()

{

var n = 0;

for (var i = 0; i < oInputs.length; i++) {

if (oInputs[i].checked == true) {

n++;

}

}

if (n == oInputs.length) {

oBtn1.checked = true;

} else {

oBtn1.checked = false;

}

}

}

}

</script>

</head>

<body>

<h1>全选/全不选</h1>

<input type="checkbox" id="btn1">

<div id="box">

<input type="checkbox" name="">

<input type="checkbox" name="">

<input type="checkbox" name="">

<input type="checkbox" name="">

</div>

</body>

</html>

相对比较简单,对于初学者应该有很好的帮助!请关注键盘码农。后期继续更新,如有什么看法请在下方评论。第一时间为您解答哦!