专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

默认的checkbox太丑?教你如何写出一个漂亮的样式

ins518 2024-10-09 16:22:28 技术文章 14 ℃ 0 评论

前言

在之前的一篇文章《默认的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有关的文章,敬请期待~

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表