在本文中,我们将带你了解前端极易被误导的css选择器权重计算及css内联样式的妙用技巧_html/css_WEB-ITnose在这篇文章中,同时我们还将给您一些技巧,以帮助您实现更有效的2.css选择
在本文中,我们将带你了解前端极易被误导的css选择器权重计算及css内联样式的妙用技巧_html/css_WEB-ITnose在这篇文章中,同时我们还将给您一些技巧,以帮助您实现更有效的2.css选择器_html/css_WEB-ITnose、22个必须知道的css技巧_html/css_WEB-ITnose、CSS ID选择器与CLASS选择器_html/css_WEB-ITnose、CSS3 :checked 伪类选择器妙用_html/css_WEB-ITnose。
本文目录一览:- 前端极易被误导的css选择器权重计算及css内联样式的妙用技巧_html/css_WEB-ITnose
- 2.css选择器_html/css_WEB-ITnose
- 22个必须知道的css技巧_html/css_WEB-ITnose
- CSS ID选择器与CLASS选择器_html/css_WEB-ITnose
- CSS3 :checked 伪类选择器妙用_html/css_WEB-ITnose
前端极易被误导的css选择器权重计算及css内联样式的妙用技巧_html/css_WEB-ITnose
记得大学时候,专业课的网页设计书籍里面讲过css选择器权重的计算:id是100,class是10,html标签是5等等,然后全部加起来的和进行比较。。。
我只想说:真是误人子弟,害人不浅!
最近,在前端群里还发现以上观点类似的奇葩聊天,真是***
其实,也是在很久以前,看了腾讯ISUX的一位前端工程师-麦时分享的一篇技术文章(个人站点已失效,就不贴出来了),才了解到真正的css选择器权重计算。
以下是css选择器权重计算精华所在,翻译自国外的文档(记得是W3C给出的计算规则)
如果一个声明来自style属性而不是选择器,计作1或者a=1(在一个html文档中,元素“style”的值是样式表规则,这个规则中没有选择器,所以a=1, b=0, c=0, and d=0)
选择器中id属性的个数,计作b
选择器中其他属性以及伪类的个数,计作c
选择器中元素及伪元素的个数,计作d
优先级只基与选择器的形式,特殊的,一个“[id=p33]“形式的选择器是按照属性选择器来计算的(a=0, b=0, c=1, d=0),即使用定义中包含ID
一些例子:
立即学习“前端免费学习笔记(深入)”;
1 * {} /* a=0 b=0 c=0 d=0 -> 优先级= 0,0,0,0 */ 2 li {} /* a=0 b=0 c=0 d=1 -> 优先级 = 0,0,0,1 */ 3 li:first-line {} /* a=0 b=0 c=0 d=2 -> 优先级 = 0,0,0,2 */ 4 ul li {} /* a=0 b=0 c=0 d=2 -> 优先级 = 0,0,0,2 */ 5 ul ol+li {} /* a=0 b=0 c=0 d=3 -> 优先级 = 0,0,0,3 */ 6 h1 + *[rel=up]{} /* a=0 b=0 c=1 d=1 -> 优先级 = 0,0,1,1 */ 7 ul ol li.red {} /* a=0 b=0 c=1 d=3 -> 优先级 = 0,0,1,3 */ 8 li.red.level {} /* a=0 b=0 c=2 d=1 -> 优先级 = 0,0,2,1 */ 9 #x34y {} /* a=0 b=1 c=0 d=0 -> 优先级 = 0,1,0,0 */10 /* a=1 b=0 c=0 d=0 -> 优先级 = 1,0,0,0 */
[备注]
:first-line 伪元素
[rel=up] 其他属性
了解了这些 你应该不会再对”11个class与一个id”谁的优先级高“这类的问题有疑问了吧,因为a,b,c,d只是在各自位置数字的累加,而不会越级。
其实,这里还漏了一个重要的东西,那就是!important了。这是一个神奇的东西~
首先强调的是!important的使用问题:如height:100px !important; 菜鸟一定会疑问,为什么important前面要加空格,其实没什么,不加也可以,只是为了阅读方便,呵呵~
important可以让前面所有的权重计算变得可笑,因为css属性值添加了important后,前面所有的努力白费了,行内式的权重也高不过它,除非再声明一个加important的属性值来覆盖它(注意是由css属性值读取的顺序决定的)。
比如h1{height:100px !important;}要覆盖这个height值为200px的话,要在其后加上h1{height:200px !important;}
而一般!important值的相互覆盖,是取决于浏览器在加载css文件时,对样式表的读取顺序决定的。在大项目中,很难预料你的文件是先加载还是后加载,特别是公用css文件,不建议加这个特殊值。
讲到这里,提个额外的点:css样式的读取解析,是按从右到左进行的,所以不要误以为写#id .class1 .class2 .class3{}这样的选择器,浏览器会因为唯一id存在而查找很快,其实是更慢,最好是保持三个层级,不要层级过多。
还有,很多人喜欢写.class1.class2{}这样的交集选择器,一般是跟js配合做一些显示效果。关键是IE6不支持这种交集选择器,像p.class1{}这样的标准复合选择器,IE6等低版本浏览器才能完美支持。(ps:公司同事踩过这个坑,在IE6下把我的css代码给覆盖了,我还查了老半天??最后知道真相的我眼泪掉下来)
其实,懂得上面的这些东西了,你的css水平才算入门(没错,只算入门)。
接下来,讲一些很实用的技巧(其实也就是上面基础知识的融会贯通):
场景:当鼠标hover到id为content的div后,将高度由auto改变为30px;
1.菜鸟级写法
1 $("#content").hover(function(){2 $(this).css({"height":"30px"});3 },function(){4 $(this).css({"height":"auto"});5 });
那如果这个div本身height不是auto呢,你是不是又得知道其默认的height属性值。
所以这种写法很不好,学术一点的叫做硬编码、强耦合。
2.普通写法
1 .content_normal{height:20px;} /*默 认应用的样式*/2 .content_change{height:30px} /*hover时候应用的样式*/
1 $("#content").hover(function(){2 $(this).addClass("content_change");3 },function(){4 $(this).removeClass("content_change");5 });
3.适用性的高级写法
var $extStyle = $("head").find("#extStyle");$("#content").hover(function(){ //向头部插入一个内链样式表 if($extStyle.length < 1){ var styleElem = document.createElement("style"); styleElem.setAttribute("type", "text/css"); styleElem.setAttribute("id", "extStyle"); $("head").append(styleElem); $extStyle = $("head").find("#extStyle"); } $extStyle.append("#content{height:30px;}");},function(){ $extStyle.empty();});
第三种写法的好处就是,不管需求怎么变,都可以轻松覆盖样式,也可以避免第一种写法存在的的情况。因为height:auto;有时也是致命的,在项目中就遇到过这样的问题。
缺点就是要向头部插入一个style节点,对于小需求的话就有点小题大做。但是大项目中,可以内部默认一个style节点负责插入这些暂时性修改的样式数据,方便删除,不弄脏代码。
最后提一个很重要的点:在IE下,style节点最多是31个,多了它不认,呵呵~
2.css选择器_html/css_WEB-ITnose
由第一节的语法结构可以看出css语言的核心思想就是:找到对象,然后对选定的对象进行属性赋值。其中,css中对象的选择,依靠的就是选择器。当掌握了选择器以后,就能够指哪打哪,弹无虚发了。
css的选择器有许多种,下面来逐一介绍:
1.基本选择器
使用简单且频率高的一些选择器这里归类为基本选择器,而基本选择器有包含下的内容:
立即学习“前端免费学习笔记(深入)”;
1.1 通用选择器
* { border: 1px solid red; }
说明:通用选择器的核心就是使用统配符*作为对象标识,在很多语言中,*的含义是指代所有对象,也就是所HTML文件中的所有标签都会被选中,包括 和标签。但这通常不是我们想要的结果,所有一般情况下也用不到。
立即学习“前端免费学习笔记(深入)”;
1.2 元素选择器
p { color: red;}
说明:这里的元素其实就是HTML里面的标签,例如这里的p,就是指
标签。通过使用元素选择器就可以选择特定的标签,但是要注意,元素选择器会选择HTML文档内的所有同名标签。样式的设置会对所有选中的对象生效。
立即学习“前端免费学习笔记(深入)”;
1.3 ID选择器
#abc { font-size: 20px; }<br /><br />//<p id="abc">段落</p>
说明:ID选择器会根据全局属性id的值,来选择对象,如上面的
标签所示。理论上选择到的元素是唯一的,因为根据html语言的标准,id值在一个页面中应该是唯一的。但是如果出现相同的id值,可能会选中相同id值的元素。(这个行为会根据浏览器的不同而不同,所以对不同的元素设置相同的id值要极力避免,以免发生不可估计的错误)
立即学习“前端免费学习笔记(深入)”;
1.4 类选择器
.abc { border: 1px solid red; }<br /><br />//<b>加粗</b><br />//<span>无</span>
说明:类选择器针对的是元素内class属性的值,这是常用的多对象选择器,如果有多个元素的class属性含义同样的值,那么这些元素都会被选中。
立即学习“前端免费学习笔记(深入)”;
1.5 属性选择器
/*css2*/[href] { color: orange;} <br /><br />//<a herf="..."></a><br />//<a herf="..."></a>
说明:属性选择器是css2版本新增的选择器,不过到了现在HTML5全面普及的时代,一般的主流浏览器的最新版本都应该支持。其意思是如果标签含有指定的属性,都会被选中,也就是选中多个。如上面的例子所示,其中href属性是所有标签必须声明的属性,这种写法将选中HTML页面中的所有标签。
关于属性选择器还有下面这些扩展:
/*css2*/[type="password"] { border: 1px solid red; } <br /><br />//<input type="password" />
说明:该选择器进一步限制了除了要有相应的属性之外,其属性的值也要符合要求。当有多个对象符合要求时,也会选中多个对象。
立即学习“前端免费学习笔记(深入)”;
/*css3*/[href^="http"] { color: orange;}
说明:这是css3版本中新增的,加入了正则匹配的部分特性,如上面例子表示属性的值的开头必须是http。
立即学习“前端免费学习笔记(深入)”;
/*css3*/[href$=".com"] { color: orange; }
说明:与开头匹配相对的,这里是结尾匹配。
立即学习“前端免费学习笔记(深入)”;
/*css2*/<br />[href*="baidu"] { color: orange; }
说明:这里表示,只要属性的值中含有指定的字符就能匹配,不管字符是在开头还是结尾。
立即学习“前端免费学习笔记(深入)”;
/*css2*/<br />[class~="edf"] { font-size: 50px; }<br /><br />//<div></div>
说明:当一个属性含有多个值的时候,可以用这个方式选择。
立即学习“前端免费学习笔记(深入)”;
/*css2*/<br />[lang|="en"] { color: red;} <br /><br />//<span lang="en-us"></span>
说明:当属性有多个值,且多个值间是使用-号分隔的时候,可以使用这个选择器。
立即学习“前端免费学习笔记(深入)”;
2.复合选择器
将不同的选择器进行组合形成新的特定匹配,我们称为复合选择器。
2.1 分组选择器
p,b,i,span { color: red; }
说明:将多个选择器通过逗号分割,同时设置一组样式。当然,不但可以分组元素选择器,还可以使用 ID 选择器、类选择器、属性选择器混合使用。
2.2 后代选择器
p b { color: red; } <br /><br />//<p><br />// <b>a</b><br />// <b>b</b><br />// <div><br />// <b>c</b><br />// </div><br />//</p>
//注意:这里标绿色不是css样式设置后的结果,只是表面选择器选中了哪个,下同。
说明:选择
元素内部所有元素。不在乎的层次深度,也就是父级元素内不管嵌套了几级,只要有都会被选中。当然,后代选择器也可以混合使用ID选择器、类选择器、属性选择器。
立即学习“前端免费学习笔记(深入)”;
2.3 子代选择器
ul > li { border: 1px solid red; }<br /><br />//<ul><br />// <li>a</li><br />// <li>b</li><br />// <div><br />// <li>c</li><br />// </div><br />//</ul>
说明:子代选择器和后代选择器类似,但是子代选择器只能选择父级元素的下一级元素,而后代选择器不限制层次的深度。
立即学习“前端免费学习笔记(深入)”;
2.4 相邻兄弟选择器
p + b { color: red; }<br /><br />//<p></p><br />//<b></b><br />//<b></b>
说明:相邻兄弟选择器匹配和第一个元素相邻的第二个元素,第三、第四之类的不会匹配。
立即学习“前端免费学习笔记(深入)”;
2.5 普通兄弟选择器
p ~ b { color: red; }
//<p></p><br />//<b></b><br />//<b></b>
说明:普通兄弟选择器匹配和第一个元素后面的所有元素,不管有几个。
注意:无论是相邻兄弟选择器还是普通兄弟选择器都不会先前选择。
立即学习“前端免费学习笔记(深入)”;
3.伪元素选择器
伪元素选择器是更具某些特征来选择的选择器,在css3中引入,其语法特征是包含两个冒号(::)具体如下:
3.1 ::first-line 块级首行
div::first-line { color: red; }
说明:块级,只要是针对
、
立即学习“前端免费学习笔记(深入)”;
3.2 .::first-letter 块级首字母
div::first-letter { color: red;}
说明:块级元素的首行字,若是中文文本,将选中第一个中文字符,其他同上。
立即学习“前端免费学习笔记(深入)”;
3.3 ::before 文本前插入
a::before { content: ''点击''; } <br /><br />//<a href="...">我</a> //设置前<br />//<a href="...">点击我</a> //设置后
说明:这个倒不限制是否是块级元素,多配合content属性使用,在文本前插入内容。
立即学习“前端免费学习笔记(深入)”;
3.4 ::after 文本后插入
a::after { content: ''很帅'';<br />}
//<a href="...">我</a> //设置前<br />//<a href="...">我很帅</a> //设置后
说明:在文本后插入内容。(如上所示,能一秒成帅哥)
立即学习“前端免费学习笔记(深入)”;
3.5 ::selection 文字选择时触发
span::selection { color:red; }
说明:所谓选择时触发,即是按住鼠标左键选择多个文字的时候。如上设置,表示选择后文字变成红色。
立即学习“前端免费学习笔记(深入)”;
4.伪类选择器
伪类选择器和为元素选择器类似,也是按照某些特征进行选择。其语法特点是包含一个冒号(:),所以和伪元素选择器很容易混淆。伪类选择器分为四种类型:结构性伪类、UI 伪类、动态伪类和其他伪类选择器,具体如下:
4.1 结构性伪类选择器
结构性伪类选择器能够根据元素在文档中的位置选择元素。这类元素都有一个前缀(:)。
4.1.1 根元素选择器
:root { border: 1px solid red;}
说明:匹配文档中的根元素,基本不怎么用,因为总是返回元素。
4.1.2子元素选择器
ul > li:first-child { color: red;}
//<ul><br />// <li>a</li><br />// <li>a</li><br />//</ul>
说明:这里先用子代选择器选择里
- 元素里的子代
- 元素,此时可能选中了多个子代元素,再用:first-child表示选择这些子代中的第一个。
立即学习“前端免费学习笔记(深入)”;
立即学习“前端免费学习笔记(深入)”;
ul > li:last-child { color: red;} <br /><br />
登录后复制//<ul><br />// <li>a</li><br />// <li>a</li><br />//</ul>
登录后复制登录后复制登录后复制说明:相对的,也能选择子代中的最后一个。
立即学习“前端免费学习笔记(深入)”;
ul > li:only-child { color: red;} <br /><br />
登录后复制//<ul><br />// <li>a</li><br />//</ul><br /><br />
登录后复制//<ul><br />// <li>a</li><br />// <li>a</li><br />//</ul>
登录后复制登录后复制登录后复制说明:选择只有一个子元素的那个子元素。如上面例子所示,第一个
- 下只有一个
- ,而第二个
- 下则有两个
- ,此时,第一个
- 的子元素
- 将被选中。
立即学习“前端免费学习笔记(深入)”;
ul > li:only-of-type { color: red;}
//<ul><br />// <li>a</li><br />// <li>a</li><br />//</ul>登录后复制//<ul><br />// <li>a</li><br />// <p>a</p><br />//</ul>
登录后复制说明:这里的情况比较复杂,该选择器表面的是子代中只能有一个指定的类型是,才能被选择。如上面例子所示:第一个
- 的子代只有
- 元素,而第二个
- 的子代除了
- 之外,还有
。此时,只有第一个
- 的子代
- 才能被选中。注意,选择的还是子代元素。
立即学习“前端免费学习笔记(深入)”;
4.1.3 nth-child(n)系列
ul > li:nth-child(2) { color: red; }<br /><br />//<ul><br />// <li>a</li><br />// <li>a</li><br />// <li>a</li><br />// <li>a</li><br />//</ul>
登录后复制说明:选择子代元素中的第n个元素。
立即学习“前端免费学习笔记(深入)”;
ul > li:nth-last-child(2) { color: red;} <br /><br />
登录后复制//<ul><br />// <li>a</li><br />// <li>a</li><br />// <li>a</li><br />// <li>a</li><br />//</ul>
登录后复制说明:选择子代元素中的倒数第n个元素。
立即学习“前端免费学习笔记(深入)”;
div > p:nth-of-type(2) { color: red;};<br /><br />//<div><br />// <span>1</span><br />// <p>2</p><br />// <span>3</span><br />// <p>4</p><br />//</div><br />
登录后复制登录后复制说明:选择特定子元素的第n个。
立即学习“前端免费学习笔记(深入)”;
div > p:nth-last-of-type(2) { color: red;}; <br />
登录后复制//<div><br />// <span>1</span><br />// <p>2</p><br />// <span>3</span><br />// <p>4</p><br />//</div>
登录后复制说明:选择特定子元素的倒数第n个。
立即学习“前端免费学习笔记(深入)”;
4.2 UI 伪类选择器
UI 伪类选择器是根据元素的状态匹配元素。
4.2.1 :enabled
input:enabled { border: 1px solid red;} <br /><br />//<input type="text" name=username />
登录后复制说明:选择启用状态的元素,多配合表单使用。
4.2.2 :disabled
input:disabled { border: 1px solid red;}
登录后复制//<input type="text" name=username />
登录后复制说明:选择禁用状态的元素。
4.2.3 :checked
input:checked { display: none;}
登录后复制说明:选择勾选的input元素。
立即学习“前端免费学习笔记(深入)”;
4.2.4:default
input:default { display: none;}
登录后复制说明:从一组类似的元素中选择默认元素。比如 input 被勾选的即默认的。
4.2.5 :valid 和:invalid
/*验证合法时*/input:valid { border: 1px solid blue;}/*验证不合法时*/input:invalid { border: 1px solid green;}
登录后复制说明:输入验证合法与不合法显示时选择的元素。
4.2.6 :required 和:optional
/*当表单字段是必填项时*/input:required { border: 1px solid blue;} /*当表单字段是非必填项时*/input:optional { border: 1px solid green;}
登录后复制说明:根据是否具有 required 属性选择元素。
4.3 动态伪类选择器
4.3.1 link 和 visited
a:link { color: red;} a:visited { color: orange;}
登录后复制说明: :link 表示未访问过的超链接,:visited 表示已访问过的超链接。
4.3.2 :hover
a:hover { color: blue;}
登录后复制说明: 表示鼠标悬停时。
4.3.3 :active
a:active { color: green;}
登录后复制说明:表示鼠标按下激活超链接时。
立即学习“前端免费学习笔记(深入)”;
4.3.4 :focus
input:focus { border: 1px solid red;}
登录后复制说明:表示获得焦点时。
4.4 其他伪类选择器
4.4.1 :not
a:not([href*="baidu"]) { color: red;}
登录后复制说明:对条件进行反选
4.4.2 :empty
:empty { display: none;}
登录后复制说明:匹配没有任何内容的元素
4.4.3 :target
:target { color: red;}
登录后复制说明:定位到锚点时,选择此元素
暂时总结到这里……
立即学习“前端免费学习笔记(深入)”;
- 才能被选中。注意,选择的还是子代元素。
- 之外,还有
- 元素,而第二个
- 将被选中。
- ,此时,第一个
- ,而第二个
22个必须知道的css技巧_html/css_WEB-ITnose
1、改变选中文字的背景和颜色
::selection{ /* Safari and Opera */ background:#c3effd; color:#000;}::-moz-selection{ /* Firefox */ background:#c3effd; color:#000;}
2、防止火狐滚动条跳动
html{ overflow-y:scroll; }
3、分页打印
.page-break{ page-break-before:always; }
4、使用!important
.page { background-color:blue !important; background-color:red;}
5、图像替换文字
.header{ text-indent:-9999px; background:url(''someimage.jpg'') no-repeat; height: 100px; /*dimensions equal to image size*/ width:500px;}
标注:text-indent:-9999px; 是将首行左缩进到人看不到的地方
6、兼容浏览器的最小高度
#container{ height:auto !important;/*all browsers except ie6 will respect the !important flag*/ min-height:500px; height:500px;/*Should have the same value as the min height above*/}
7、对新窗口打开得链接高亮显示
a[target="_blank"]:before,a[target="new"]:before { margin:0 5px 0 0; padding:1px; outline:1px solid #333; color:#333; background:#ff9; font:12px "Zapf Dingbats"; content: "\279C";}
8、美化li序列号
如图:
ol { font: italic 1em Georgia, Times, serif; color: #999999;}ol p { font: normal .8em Arial, Helvetica, sans-serif; color: #000000;}
9、首字下沉
如图:
p:first-letter{display:block;margin:5px 0 0 5px;float:left;color:#FF3366;font-size:3.0em;font-family:Georgia;}
10、兼容浏览器的opacity
.transparent_class { filter:alpha(opacity=50); -moz-opacity:0.5; -khtml-opacity: 0.5; opacity: 0.5; }
11、使用line-height实现垂直居中
line-height:30px;
12、居中布局
body{ width:1000px; margin:0 auto;}
13、移除ie文本域的垂直滚动条
textarea{ overflow:auto;}
14、移动超链接的虚线框
a:active, a:focus{ outline:none; }
15、ie下元素消失,给该元素添加
position:relative;
16、根据链接不一样,添加不一样的icons
a[href$=''.doc''] { padding:0 20px 0 0; background:transparent url(/graphics/icons/doc.gif) no-repeat center right;}
17、css手型点击样式
input[type=submit],label,select,.pointer { cursor:pointer; }
18、字母大写
text-transform: capitalize;
19、所有英文大写,且首字母比其他的大
font-variant:small-caps;
20、高亮文本框,不支持ie
input[type=text]:focus, input[type=password]:focus{ border:2px solid #000;}
21、移除img边框
a img{ border:none; }
22、用label实现无表格表单
HTML Code
<form method="post" action="#" ><p><label for="username" >Username</label><input type="text" id="username" name="username" /></p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1"rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p><p><span>点击下载</span>“<a href="https://teacher.php.cn/jump/126"rel="nofollow" target="_blank">修复打印机驱动工具</a>”;</p><p><label for="password" >Username</label><input type="password" id="password" name="pass" /></p><p><input type="submit" value="Submit" /></p></form>
CSS Code
p label{ width:100px; float:left; margin-right:10px; text-align:right;}
参考:http://www.cnblogs.com/guoguo-15/archive/2011/08/24/2151859.html
CSS ID选择器与CLASS选择器_html/css_WEB-ITnose
在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素。
属性选择器可以根据元素的属性及属性值来选择元素。
三种基本的选择器类型:标签名选择器、类选择器、id选择器
具体语法如下:
1、标签名选择器,如:
立即学习“前端免费学习笔记(深入)”;
html {color:black;}h1 {color:blue;}h2 {color:silver;}
立即学习“前端免费学习笔记(深入)”;
2、类选择器
类选择器允许以一种独立于文档元素的方式来指定样式。
该选择器可以单独使用,也可以与其他元素结合使用。
提示:只有适当地标记文档后,才能使用这些选择器,所以使用这两种选择器通常需要先做一些构想和计划。
要应用样式而不考虑具体设计的元素,最常用的方法就是使用类选择器。
demo:
立即学习“前端免费学习笔记(深入)”;
.important {font-weight:bold;}.warning {font-style:italic;}.important.warning {background:silver;}
立即学习“前端免费学习笔记(深入)”;
3、ID选择器
小结:
那么类选择器与ID选择器有啥区别呢?
ID 有高优先级、唯一性的特点,特指「个体」。
相对于 ID,class 的优先级比较适中,特指「特定群体」。
Class 的使用需要参考面向对象的抽象概念,把共有的属性抽象出来。
ID是先找到结构/内容,再给它定义样式;
Class是先定义好一种样式,再套给多个结构/内容。
CSS3 :checked 伪类选择器妙用_html/css_WEB-ITnose
css3中的伪类选择器例如:hover,:before,:after在已经在前端开发中被广泛使用,但是可能开发者还不太熟悉:checked这个伪类选择器。本文将介绍:checked这个伪类选择器以及如何使用它写出更加有优雅的代码。
:checked伪类选择器顾名思义,表示的是 type="checkbox" 的input元素被选中的状态。在前端开发中,我们常用:hover伪类来设置鼠标悬浮时的样式,而由于checked状态的改变需要用户进行点击操作,使用:checked伪类,我们则可以设置鼠标点击后的状态。在使用zepto、jQuery库时,有一个经常使用的方法toggle用来隐藏和再现页面上的某个元素,了解:checked伪类的定义之后,我们完全可以用纯CSS实现toggle效果。
首先定义页面结构:
接着,我们对 #toggle-trigger 的选中态进行设置
此时,我们通过点击选中或者取消选中checkbox,就能对 .toggle-item 进行隐藏和再现。
立即学习“前端免费学习笔记(深入)”;
但是我们想跟进一步,把toggle-trigger的范围扩展到checkbox之外,因为在展现toggle效果时,触发toggle的部分并不局限于checkbox一种形式。这时我们只需要使用label标签即可,label标签有一个for属性,通过设置for属性,可以将label标签指向特定的input元素,同时将checkbox隐藏,既可以达到点击label标签来触发toggle的效果。
根据caniuse的数据,:checked伪类的支持程度基本达到了100%。在下一个项目里面,你会愿意使用它嘛?
参考文章
You Don''t Need JavaScript for That!
今天关于前端极易被误导的css选择器权重计算及css内联样式的妙用技巧_html/css_WEB-ITnose的讲解已经结束,谢谢您的阅读,如果想了解更多关于2.css选择器_html/css_WEB-ITnose、22个必须知道的css技巧_html/css_WEB-ITnose、CSS ID选择器与CLASS选择器_html/css_WEB-ITnose、CSS3 :checked 伪类选择器妙用_html/css_WEB-ITnose的相关知识,请在本站搜索。
本文标签: