纯CSS模拟单选框和复选框

简介: 浏览器默认的一些表单样式都不太好看,就比如说在Chrome浏览器下,默认单选框长下面这样:Chrome下默认单选框灰不溜秋的,什么鬼,其实我想要下面这样的:Chrome下美化单选框这样看起来就很不错,还加了动画效果,可是默认的单选框只能改变其大小,像背景颜色啥的并不能改变,那该怎么办呢?没关系,既然不能改变其本身,那咱就自己造一个出来。

浏览器默认的一些表单样式都不太好看,就比如说在Chrome浏览器下,默认单选框长下面这样:

Chrome下默认单选框

灰不溜秋的,什么鬼,其实我想要下面这样的:

Chrome下美化单选框

这样看起来就很不错,还加了动画效果,可是默认的单选框只能改变其大小,像背景颜色啥的并不能改变,那该怎么办呢?

没关系,既然不能改变其本身,那咱就自己造一个出来。

我们可以用个简单的span标签(当然你也可以用其他标签)来模拟原生的单选框,大概原理就是,先使用label标签将原生单选框、用于模拟单选框的span标签以及文字包起来,并将原生单选框隐藏,然后再使用:checked伪类和+选择器来给span标签加选中样式。上面GIF图中美化单选框的具体代码如下:

<!--HTML代码-->
<div class="form-group">
    <p>性别:</p>
    <label><input name="sex" type="radio" checked /><span></span>男</label>
    <label><input name="sex" type="radio" /><span></span>女</label>
</div>
/*CSS代码*/
p{ display: inline-block;}
label{ position: relative; padding:0 10px 0 25px; cursor: pointer;}
label input{ display: none;}
label span{ position: absolute; left: 0; top: 0; bottom: 0; width: 16px; height: 16px; margin: auto; border: 1px solid #ccc; border-radius: 100%;}
label span:after{ content: ''; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 6px; height: 6px; margin: auto; border-radius: 100%; background: #fff;
-webkit-transform: scale(0); transform: scale(0); -webkit-transition: all .3s; transition: all .3s;}
label input:checked + span{ border-color: #1db0fc; background: #1db0fc;}
label input:checked + span:after{ -webkit-transform: scale(1); transform: scale(1);}

以上代码可能有几个地方需要解释一下:

① label标签可以将文字和表单控件绑定在一起,当你点击其中的文字时,与之绑定的表单控件将会相应获取焦点(单选框与复选框是选中该选项);

② :checked伪类选择器是用于筛选被选中的单选框或复选框,需要注意的是,该选择器最低只兼容到IE9;

③ +选择器是用于筛选紧邻其后的兄弟元素,比如示例代码中就是筛选被选中的单选框之后紧邻的span元素。既然这里提到了,就再简单地说说与之相似的~选择器,该选择器是用于筛选其后的所有兄弟元素,这两个选择器可能平时用得比较少,但是有时候用处还是挺大的。

好了,以上就是使用纯CSS来模拟实现单选框的美化,当然复选框的美化原理其实是一样的,这里就不再赘述了。

相关文章
|
4月前
|
前端开发
使用CSS3写出一个好玩有趣的复选框
使用CSS3写出一个好玩有趣的复选框
22 1
|
前端开发
用html+css实现小米官网的模拟
用html+css实现小米官网的模拟
|
前端开发 程序员
【CSS 选择器世界】 自定义单选框
【CSS 选择器世界】 自定义单选框
163 0
【CSS 选择器世界】 自定义单选框
|
JavaScript 前端开发
html、css、js三件套实现的操作栏(模仿antDesign的单选框通过js实现单选框激活效果)
html、css、js三件套实现的操作栏(模仿antDesign的单选框通过js实现单选框激活效果)
248 0
html、css、js三件套实现的操作栏(模仿antDesign的单选框通过js实现单选框激活效果)
|
前端开发 JavaScript
使用 HTML、CSS 和 JavaScript 制作模拟时钟(初学者教02程)
使用 HTML、CSS 和 JavaScript 制作模拟时钟(初学者教程)
154 0
使用 HTML、CSS 和 JavaScript 制作模拟时钟(初学者教02程)
|
前端开发 JavaScript
使用 HTML、CSS 和 JavaScript 制作模拟时钟(初学者教程01)
使用 HTML、CSS 和 JavaScript 制作模拟时钟(初学者教程)
196 0
使用 HTML、CSS 和 JavaScript 制作模拟时钟(初学者教程01)
CSS3自定义checkbox复选框
在线演示 本地下载
750 0
|
前端开发 JavaScript API
CSS魔法堂:改变单选框颜色就这么吹毛求疵!
是否曾经被业务提出"能改改这个单选框的颜色吧!让它和主题颜色搭配一下吧!",然后苦于原生不支持换颜色,最后被迫自己手撸一个凑合使用。若抛开`input[type=radio]`重新开发一个,发现要模拟选中、未选中、不可用等状态很繁琐,而涉及单选框组就更烦人了,其实我们可以通过`label`、`::before`、`:checked`和`tabindex`,然后外加少量JavaScript脚本就能很好地模拟出一个样式更丰富的“原生”单选框。
1417 0
|
前端开发 JavaScript
css 模拟radio的样式
1、input 默认的 type 为 radio的样式,在具体场合中的改造 默认的样式这样: 但是我要这样的: 这样看来是不是比原来的好看多了。 2、优化radio的样式 {{val}}  这个是vue的一个例子,点击一个元素给它追加一个class。
1567 0