以css伪类为基础,引发的选择器讨论 [新手向]
作为第一篇技术干货,来写哪个方面的内容,我着实考虑了很久。
经过了整整30秒的深思熟虑,我决定就我第一次发现新大陆一样的内容,来进行一次讨论。
- 伪类:
伪类对元素进行分类是基于特征(characteristics)而不是它们的名字、属性或者内容;原则上特征是不可以从文档树上推断得到的。
这是百度百科给的解释。不过,大家心里应该都有伪类的概念,看来百科也许更懵逼也说不定。所以还是直接上代码吧。 - 简单的使用:
<div id='ancestor'>
<div id="father">
<div id="son">
</div>
</div>
</div> <style>
#ancestor{
width: 150px;
height: 150px;
background-color: #f00;
}
#father{
width: 100px;
height: 100px;
background-color: #0f0;
}
#son{
width: 50px;
height: 50px;
background-color: #00f;
}
#ancestor:hover{
transform: rotate(45deg);
}
</style>这段代码,十分简单应该大家都能看的懂,效果也可以预知,下面我们就来做一点。
- 代码变异:
<div id='ancestor'>
<div id="father">
<div id="son">
</div>
</div>
</div> <style>
#ancestor{
width: 150px;
height: 150px;
background-color: #f00;
}
#father{
width: 100px;
height: 100px;
background-color: #0f0;
}
#son{
width: 50px;
height: 50px;
background-color: #00f;
}
#ancestor :hover{
transform: rotate(45deg);
}
</style>2
或许乍一看,感觉这段代码和之前的那一段一模一样,但是其实有一个很大的区别。
相信拷贝代码去尝试过的小伙伴们,已经开始疑惑了。那就让我开始来哔哔一波吧。
其实仔细关注了这两段代码之后,可以发现区别实际是在 #ancestor:hover 这个选择器上。第二段代码只是多加了一个空格。
很多同学肯定已经灵光一闪,仿佛已经明白了什么。不过,还是我来提壶(醍醐)给大家灌个顶吧! - 发生了什么:
大家都知道选择器中,空格就是后代选择器。#ancestor :hover 所命中的,其实就是 #ancestor 所有后代元素的 :hover 属性。所以在 #ancestor 自身上。没有被添加到这个伪类,而 #father 、#son,被同时命中。就出现了大家所看到的效果。如果,想印证我的说法,可以使用 #ancestor>:hover 再做一次尝试. 或者再次添加更多的后代元素.看看他们是否一样有这个特殊效果。
至于我们最通常使用的 #ancestor:hover 这一种使用的方式,实际上就是两个选择器组成的交集选择器,需要同时命中这两个条件才被适用。
故而,我这一堆哔哔,也就是为了表明伪类、伪元素选择器,其实和我们使用的id选择器、类选择器等等常见的选择器一样,可以使用各种关系符,来组成各种奇怪而又好用的选择器。 - 这一堆哔哔,换来的实用性:
很多人这个时候已经在吐槽了。伪类,只有在一些特殊的场景之下才会使用到,并不会很常用。
我想说的是,伪类,并不仅仅是 :link:,:vistited,:hover,:active 等特殊状态的。
还有一些,比如:first-child,:last-child,:nth-child 这些指向特定元素的。
在我们使用这些伪类时,例如 li:first-child ,会命中的是 li 标签,同时必须是他自身父级的第一个元素。所以,很多人都会加上一个类名来实现给他的效果。
但是,如果我们这样写呢。 ul > :first-child 是不是就会显的更有语义且优雅。
亦或者,ul > ::before 给所有的子集中增加一个小箭头
后话,哔哔了这么久。其实实用性确实不是很高。我做这一篇随笔主要意义是,希望新手能正常理解,伪类、伪元素,到底是一个什么样的东西。其实它们并不特殊,和普通的选择器是一模一样的。不需要用特殊的眼光去看待他们。也不需要觉得它们有什么特别的用法。将他们看成普通的选择器,只不过他们命中的元素是一种特殊状态。记住这一点就好。
至:所有对伪类,伪元素持懵逼状态的各位。
以css伪类为基础,引发的选择器讨论 [新手向]的更多相关文章
- CSS伪类和伪元素
一.伪类 CSS伪类用于向某些选择器添加特殊的效果,在W3规范中,CSS伪类有如下几个: CSS2.1 :active:向被激活的元素添加样式(激活是指点击鼠标那一下) :focus:向拥有键盘输入焦 ...
- CSS 伪类 (Pseudo-classes)
CSS 伪类用于向某些选择器添加特殊的效果. CSS 伪类 (Pseudo-classes)实例: 超链接 本例演示如何向文档中的超链接添加不同的颜色. 超链接 2 本例演示如何向超链接添加其他样式. ...
- (五)CSS伪类(Pseudo-class)
CSS伪类用于向某些选择器添加特殊的效果.伪类的语法如下: selector : pseudo-class {property: value} CSS类也可以与伪类搭配使用: selector.cla ...
- 12、第十二节课,css伪类 (转)
一.特殊选择器 1.* 用于匹配任何的标记 2.> 用于指定父子节点关系 3.E + F 毗邻元素选择器,匹配所有紧随E元素之后的同级元素F 4.E ~ F 匹配所有E元素之后的同级元素F 5. ...
- 【从0到1学Web前端】CSS伪类和伪元素
1.CSS中的伪类 CSS 伪类用于向某些选择器加入特殊的效果. 语法: selector : pseudo-class {property: value} CSS 类也可与伪类搭配使用 select ...
- css伪类 伪元素
之前写了一篇 <详解 CSS 属性 - :before && :after> 的博文,当时自己没分清楚伪元素和伪类,所以在文章内把概念混淆了,庆幸 @riophae 兄指正 ...
- CSS 伪类 (Pseudo-classes)实例
CSS 伪类 (Pseudo-classes)实例CSS 伪类用于向某些选择器添加特殊的效果在支持 CSS 的浏览器中,链接的不同状态都可以不同的方式显示,这些状态包括:活动状态,已被访问状态,未被访 ...
- HTML转义字符 Unicode和CSS伪类介绍
CSS 伪类用于向某些选择器添加特殊的效果. a:link {color: #FF0000} /* 未访问的链接 */ a:visited {color: #00FF00} /* 已访问的链接 */ ...
- 【从0到1学Web前端】CSS伪类和伪元素 分类: HTML+CSS 2015-06-02 22:29 1065人阅读 评论(0) 收藏
1.CSS中的伪类 CSS 伪类用于向某些选择器添加特殊的效果. 语法: selector : pseudo-class {property: value} CSS 类也可与伪类搭配使用 select ...
随机推荐
- Marriage is Stable
Marriage is Stable Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- IdentityServer4 实现自定义 GrantType 授权模式
OAuth 2.0 默认四种授权模式(GrantType): 授权码模式(authorization_code) 简化模式(implicit) 密码模式(password) 客户端模式(client_ ...
- 【WEB API项目实战干货系列】- WEB API入门(一)
这篇做为这个系列的第一篇,做基本的介绍,有经验的人可以直接跳到第二部分创建 ProductController. 创建 Web API 项目 在这里我们使用VS2013, .NET 4.5.1创建 ...
- Linux网络中接收 "二进制" 流的那些事 --- 就recv的返回值和strlen库函数进行对话
1. 前言 很多朋友在做网络编程开发的时候可能都遇到这样的问题,在进行接收二进制流的数据的时候,使用strlen库函数来得到 二进制数据长度的时候并不准确.为什么呢??首先,使用strlen进行 ...
- 《天书夜读:从汇编语言到windows内核编程》六 驱动、设备、与请求
1)跳入到基础篇的内核编程第7章,驱动入口函数DriverEnter的返回值决定驱动程序是否加载成功,当打算反汇编阅读驱动内核程序时,可寻找该位置. 2)DRIVER_OBJECT下的派遣函数(分发函 ...
- 设计模式的征途—10.装饰(Decorator)模式
虽然目前房价依旧很高,就连我所在的成都郊区(非中心城区)的房价均价都早已破万,但却还是阻挡不了大家对新房的渴望和买房的热情.如果大家买的是清水房,那么无疑还有一项艰巨的任务在等着大家,那就是装修.对新 ...
- Spring JDBC 示例
在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等.但 Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQL 语句,处理异常, ...
- HCTF
题目:魂斗罗 介绍:这个是HCTF里面的杂项,很好玩的, 1,这个看链接可以下载(http://139.224.54.27/gogogo/hundouluo.nes),然后在网上下载一个虚拟器(htt ...
- csv格式订单下载,完成后伴随邮件通知下载
前言 功能开发中会遇到大量订单下载,而服务器的请求响应时间又配置的很短,导致下载时候请求超时. 这篇文章主要思路:异步查询数据,生成csv文件,放入email中并发送给用户.(异步部分本文不做介绍,配 ...
- opengl启动过程
GLuint _program = glCreateProgram(); //create shader program GLuint vertShader, fragShader;//顶点着色器,片 ...