巧用CSS3伪类选择器自定义checkbox和radio的样式

由于原生的checkbox和radio的样式太简陋了,在设计页面的时候,设计师往往会设计自己的checkbox和radio样式。一半情况下,为了适应各个浏览器的兼容性,我们都会用其他的元素替代原生的checkbox和radio,然后用js实现选中和未选中时候的样式,用来模拟checkbox和radio。

例如这种:

用其他元素模拟(以checkbox为例):

<div class=‘checkbox‘></div>
$(‘.checkbox‘).click(function(){
    if($(this).hasClass("checked")){
              $(this).removeClass("checked");
    }else{
             $(this).addClass("checked");
    }
});

运用JS添加点击事件,切换选中和未选中的状态。

那么,能仅仅只用样式,改变原生的checkbox的样式呢?

使用CSS实现:


在表单元素中,为了扩大checkbox的点击范围,我们经常用label和checkbox相连,现在也可以运用这个关系,把样式加在label上,隐藏checkbox(设置透明度,不能display:none,否则关联会失效)。

html结构:

<input type="checkbox" id="mycheck" />
<lable for="mycheck">check me</label>

css样式:

input[type="checkbox"] + label::before {
content: ‘\a0‘; /* non-break space */
display: inline-block;
vertical-align: .2em;
width: .8em;
height: .8em;
margin-right: .2em;
border-radius: .2em;
background: silver;
text-indent: .15em;
line-height: .65;
}

利用伪元素::before给label添加样式,利用CSS3的伪类选择器:checked,:hover,:focus,:disabled设置不用状态的样式

input[type="checkbox"]:checked + label::before {
content: ‘\2713‘;
background: yellowgreen;
}
input[type="checkbox"]:focus + label::before {
box-shadow: 0 0 .1em .1em #58a;
}
input[type="checkbox"]:disabled + label::before {
background: gray;
box-shadow: none;
color: #555;
}

这样,仅仅使用样式就能显示不同状态下的checkbox样式了。

时间: 2024-10-04 06:53:45

巧用CSS3伪类选择器自定义checkbox和radio的样式的相关文章

CSS3伪类选择器详解

前面花了两节内容分别在<CSS3基本选择器>和<CSS3属性选择器详解>介绍了CSS3选择器中的基本选择器和属性选择器使用方法,今天要和大家一起学习CSS3选择器中的第三部分,也是最后一部分——伪类选择器.伪类选择器对于大家来说最熟悉的莫过于:link,:focus,:hover之类的了,因为这些在平时中是常用到的伪类选择器,那么先和大家一起简单总结一下CSS中常用的伪类选择器的使用方法,最后把重心放到CSS3新增加的":nth-child"选择器的使用方法.

css3 巧用结构性伪类选择器

最近在国外的一个网站上看到的一个关于结构性伪类选择器的用法,觉得十分实用,就自己尝试了一下,并把它给记录下来: 这是最基本的样式: 1 <style type="text/css"> 2 li{ 3 list-style-type: none; 4 float: left; 5 width: 60px; 6 height: 60px; 7 background-color: #979698; 8 margin-left: 10px; 9 text-align: center

让 IE 8 及以下浏览器支持 CSS3伪类选择器

首先说明一下: 用IE9以下的用户,你们都是爸爸. 前言:当css3.0出现以后,出现了很多选择器,其中伪类选择器很好用,比如:nth-child,很容易判断并选择对象.让我们的工作变的更方便. 但有个麻烦,IE8及IE8以下对很多伪类选择器并不兼容. 这13个伪类选择器是比较长用到的: 会发现,IE9对这些伪类选择器都能兼容.IE8.IE7对 :first-child,:hover是兼容的,IE8对:focus是兼容的,而其他IE7,IE8并不兼容. IE 对css3的严重不支持, 这是让人无

纯css自定义checkbox和radio的样式

以上是结构.说明一下,这样写是为了展示点击文字即可选中的两种方式,因为之前我一直忽略了第二种方法. css部分也是分开写的,其实基本一样,只是为了更直观看清楚: div{ width:200px; height:100px; background:#013879; padding:15px; color:#fff; font-size:14px;} 改变checkbox: .checkbox{ width:12px; height:13px; background:#fff; border:1p

CSS3 伪类选择器 :nth-child()

:nth-child()可以选择某个的一个或多个特定的子元素,你可以按这种方式进行选择: :nth-child(length);/*参数是具体数字*/ :nth-child(n);/*参数是n,n从0开始计算*/ :nth-child(n*length)/*n的倍数选择,n从0开始算*/ :nth-child(n+length);/*选择大于length后面的元素*/ :nth-child(-n+length)/*选择小于length前面的元素*/ :nth-child(n*length+1);

CSS3伪类选择器

first-line   设置首行样式 first-letter 设置首字母样式 before  在某元素前插入内容并设置内容样式 after 在某元素后插入内容并设置内容样式 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> p:first-line{back

CSS3选择器(基础选择器、属性选择器、伪类选择器、选择器策略)

<CSS3基本选择器> 一.通配符选择器(*) *{ marigin: 0; padding: 0; } 二.元素选择器(E) li {background-color: grey;color: orange;} 三.类选择器(.className) 四.id选择器(#ID) #first {background: lime;color: #000;} #last {background: #000;color: lime;} 五.后代选择器(E F) .demo li {color: blu

CSS动态伪类选择器温故-3

动态伪类选择器 伪类选择器:大家熟悉的:[:link][:visited][:hover][:active]CSS3的伪类选择器分为六种:(1)动态伪类选择器(2)目标伪类选择器(3)语言伪类选择器(4)UI伪类选择器(5)结构伪类选择器(6)否定伪类选择器注:和其它CSS选择器的区别-伪类选择器都以冒号[:]开头 思考问题?(1)CSS3伪类选择器有什么功能?(2)选定元素能带来什么便利? 1.1.动态伪类选择器语法动态伪类包含两种:(1)在链接中常看到的锚点伪类(2)为用户行为伪类 (3)锚

CSS伪类选择器 奇偶匹配nth-child(even)

语法: :nth-child(an+b) 下面就把CSS3标准中nth-child()用法大致介绍给大家: CSS3伪类选择器:nth-child() 简单的归纳下nth-child()的几种用法. 第一种:简单数字序号写法 :nth-child(number) 直接匹配第number个元素.参数number必须为大于0的整数. 例子: li:nth-child(3){background:blue;} 第二种:倍数写法 :nth-child(an) 匹配所有倍数为a的元素.其中参数an中的字母