纯CSS3来自定义单选框radio与复选框checkbox
单选框(radio)自定义样式
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
//html<input type="radio" />//css部分<style> /** * 单选框自定义样式 **/ input[type=radio]{ /*去除浏览器默认样式*/ -webkit-appearance: none; -moz-appearance: none; appearance: none; /*自定义样式*/ position: relative; display: inline-block; vertical-align: top; width: 20px; height: 20px; border: 1px solid #00bfff; outline: none; cursor: pointer; /*设置为圆形,看起来是个单选框*/ -webkit-border-radius: 20px; -moz-border-radius: 20px; border-radius: 20px; } /** * 单选框 选中之后的样式 **/ input[type=radio]:after{ content: ''; position: absolute; width: 12px; height: 12px; display: block; left: 0; top: 0; right: 0; bottom: 0; margin: auto; background: #00bfff; -webkit-border-radius: 12px; -moz-border-radius: 12px; border-radius: 12px; -webkit-transform: scale(0); -moz-transform: scale(0); transform: scale(0); /*增加一些动画*/ -webkit-transition : all ease-in-out 300ms; -moz-transition : all ease-in-out 300ms; transition : all ease-in-out 300ms; } input[type=radio]:checked:after{ -webkit-transform: scale(1); -moz-transform: scale(1); transform: scale(1); }</style> |
appearance 属性介绍
appearance是css3的属性,他的意思是使得标签的样式像他设定的参数一样;
他总共有7个参数;
normal->> 将元素呈现为常规元素。
icon->> 将元素呈现为图标(小图片)。
window->> 将元素呈现为视口。
button->> 将元素呈现为按钮。
menu->> 将元素呈现为一套供用户选择的选项。
field->> 将元素呈现为输入字段。
none->> 去除浏览器默认样式
:checked伪类介绍
:checked同样是css3中的一个伪类,他的作用是某个标签被选中时来使用的,使用方法和:hover :active :link这些伪类一样;
上面我在radio后面加了一个伪类:after,他要稍微比定义的单选框要小点,这样显示出来更加美观一点,在未选中之前让他scale(0),然后配合动画,在选中的时候scale(1),这样就有一个渐变填充的动画了;
那么radio的自定义样式就这样了,最后呈现的样式如下图:

复选框(checkbox)自定义样式
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
/*** html代码**/<input type="checkbox" />/*** css代码**/<style> input[type=checkbox]{ margin: 50px; /*同样,首先去除浏览器默认样式*/ -webkit-appearance: none; -moz-appearance: none; appearance: none; /*编辑我们自己的样式*/ position: relative; width: 20px; height: 20px; background: transparent; border:1px solid #00BFFF; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; outline: none; cursor: pointer; } input[type=checkbox]:after{ content: '√'; position: absolute; display: block; width: 100%; height: 100%; background: #00BFFF; color: #fff; text-align: center; line-height: 18px; /*增加动画*/ -webkit-transition: all ease-in-out 300ms; -moz-transition: all ease-in-out 300ms; transition: all ease-in-out 300ms; /*利用border-radius和opacity达到填充的假象,首先隐藏此元素*/ -webkit-border-radius: 20px; -moz-border-radius: 20px; border-radius: 20px; opacity: 0; } input[type=checkbox]:checked:after{ -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; opacity: 1; }</style> |
写法和radio思路一致,首先都是去除浏览器样式,然后自定义样式,这里填充的那种动画,就是利用渐现和圆弧填充为四个角的这么个思路,其实css还是有很多地方挺有意思的,大家平时多挖掘就会发现了;
最后样式如下:

再来看一种开关模式的复选框;
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
input[type=checkbox]{ /*同样,首先去除浏览器默认样式*/ -webkit-appearance: none; -moz-appearance: none; appearance: none; /*编辑我们自己的样式*/ position: relative; background: #fff; border: 1px solid #00BFFF; width: 56px; height: 28px; -webkit-border-radius: 20px; -moz-border-radius: 20px; border-radius: 20px; /*增加动画*/ -webkit-transition: all ease-in-out 300ms; -moz-transition: all ease-in-out 300ms; transition: all ease-in-out 300ms; outline: none; cursor: pointer;}input[type=checkbox]:after{ content: 'off'; position: absolute; left: 2px; top: 2px; display: block; width: 22px; height: 22px; background: #00BFFF; color: #fff; text-align: center; line-height: 22px; /*增加动画*/ -webkit-transition: all ease-in-out 300ms; -moz-transition: all ease-in-out 300ms; transition: all ease-in-out 300ms; -webkit-border-radius: 20px; -moz-border-radius: 20px; border-radius: 20px; font-size: 12px;}input[type=checkbox]:checked{ background: #00BFFF;}input[type=checkbox]:checked:after{ content: 'on'; left: 30px; background: #fff; color: #00BFFF;} |
这里就是对上面普通的复选框稍微做了一些改变,首先宽度增大,自身增加一个动画,不然背景变化没有渐变;
然后伪元素位置根据选中和未选中来确定left的值和content中的值就是图中的on与off的转变;
最后样子见下图:

纯CSS3来自定义单选框radio与复选框checkbox的更多相关文章
- 用jquery修改默认的单选框radio或者复选框checkbox选择框样式
默认的radio和checkbox选框很难看.我去看了一下qq注册的页面.发现单选和复选框并没有用<input>,居然是用是A标签.然后用css背景图片展示选择框,用JavaScript控 ...
- 微信小程序:单选框radio和复选框CheckBox
单选框radio: 可以通过color属性来修改颜色. 复选框checkbox:
- JS中获取页面单选框radio和复选框checkbox中当前选中的值
单选框:单选框的name值全部相同 页面有一组单选框的元素<td><input type="radio name="radioid">满意< ...
- 【JavaScript&jQuery】单选框radio,复选框checkbox,下拉选择框select
HTML: <!DOCTYPE html> <html> <head> <title></title> <meta charset=& ...
- 组合框里添加复选框的方法(使用勾选的假象,用图片代替而已,并非QT原生支持)
组合框可以看作是列表框和文本框的组合,因其占据的空间少,使用操作方便,常被界面设计人员用于界面开发设计中,在有限个输入的条件下,组合框常用来代替文本框,这样从用户使用角度来看,更趋人性化,所见即所得. ...
- 自动化测试基础篇--Selenium单选框(Radio)复选框(CheckBox)
摘自:https://www.cnblogs.com/sanzangTst/p/7686602.html 一.什么是单选框.复选框? 二.单选框:radio 三.复选框:checkbox 四.判断是否 ...
- 可分组的选择框控件(MVVM下)(Toggle样式 仿造单选框RadioButton,复选框CheckBox功能)
原地址: http://www.cnblogs.com/yk250/p/5660340.html 效果图如下:支持分组的单选框,复选框样式和MVVM下功能的实现.这是项目中一个快捷键功能的扩展. 1, ...
- (七)对话框,单选框(radiobox),复选框(checkbox),列表框(ListBox),组合框(CComboBox),水平滚动条(Horizontal scroll bar),微调(旋转)spincontrol,列表视图控件CListCtrl,静态控件static
1,模态对话框和非模态对话框 // 模态对话框 void CMainFrame::OnDialogExec() { // TODO: 在此添加命令处理程序代码 // 创建对话框对象 CDialog d ...
- excel添加复选框和去掉复选框
添加复选框 我测试的excel版本是最新版2016,所有版本都是找开发者工具里面包含很多工具呢,大家可以慢慢测试 excel的右上角 点击文件-->选项-->自定义功能区-->添加开 ...
随机推荐
- Android中onInterceptTouchEvent、dispatchTouchEvent及onTouchEvent的调用顺序及内部原理
在Android中需要经常对用户手势进行判断,在判断手势时需要精细的分清楚每个触摸事件以及每个View对事件的接收情况,在View,ViewGroup,Activity中都可以接收事件,在对事件进行处 ...
- 如何判断http服务器是否支持range寻址
如果向支持range寻址的http服务器发带range的请求 ,会有什么结果呢?是否有错误返回?数据怎么下载? 诸葛小炎fire | 浏览 569 次 您的回答被采纳后将获得: 系统奖励20(财富 ...
- codeforces 689B B. Mike and Shortcuts(bfs)
题目链接: B. Mike and Shortcuts time limit per test 3 seconds memory limit per test 256 megabytes input ...
- 【转】python文件打开方式详解——a、a+、r+、w+区别
原文地址:http://blog.csdn.net/ztf312/article/details/47259805 第一步 排除文件打开方式错误: r只读,r+读写,不创建 w新建只写,w+新建读写, ...
- hdu3652(含有13且能被13整除的数)数位DP基础
B-number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- Spring的Task任务
转自:http://liuna718-163-com.iteye.com/blog/2215076 Spring Task提供两种方式进行配置,一种是annotation(标注),而另外一种就是XML ...
- cardboard sdk for unity 下载地址
https://github.com/googlesamples/cardboard-unity
- python运行selenium时出现的一个错误总结
1.SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame 场景:运用pan ...
- Rebel 6 破解版及使用方法
下载地址:http://www.zeroturnaround.com/jrebel/download/ 下载下来的是一个Zip压缩包,打开之后会发现一个jrebel.jar,这就是其最重要的运 ...
- Python机器学习算法 — 朴素贝叶斯算法(Naive Bayes)
朴素贝叶斯算法 -- 简介 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法.最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Baye ...