以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 ...
随机推荐
- Leetcode题解(34)
113. Path Sum II 题目 分析: 主要考察二叉树深度优先遍历(DFS),递归调用当前节点的左右结点即可,代码如下(copy网上): /** * Definition for binary ...
- poj 2720 Last Digits
Last Digits Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2233 Accepted: 474 Descri ...
- ajax参数解析
url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 ...
- aria-label
元素中的 aria-label用来命名一个元素 它的值可以是任何字符 读屏软件就会读出aria-label里的内容 <div role=”form” aria-labelledby= ...
- 【机器学习实战】第15章 大数据与MapReduce
第15章 大数据与MapReduce 大数据 概述 大数据: 收集到的数据已经远远超出了我们的处理能力. 大数据 场景 假如你为一家网络购物商店工作,很多用户访问该网站,其中有些人会购买商品,有些人则 ...
- java非阻塞IO(NIO)流程
单线程 多线程(Netty/Mina)
- J-Link驱动下载和Hex程序下载
J-LINK驱动下载 1.首先拥有硬件J-Link硬件. 2.安装J-Link驱动程序SEGGER 下载地址如下 https://www.segger.com/downloads/jlink/JLin ...
- Asp.Net MVC 中的 Cookie(译)
Asp.Net MVC 中的 Cookie(译) Cookie Cookie是请求服务器或访问Web页面时携带的一个小的文本信息. Cookie为Web应用程序中提供了一种存储特定用户信息的方法.Co ...
- C#实现中国身份证验证问题
C#中国身份证验证,包括省份验证和校验码验证,符合GB11643-1999标准... 今天写的 C#中国身份证验证,包括省份验证和校验码验证,符合GB11643-1999标准... 理论部分: 1 ...
- 用一条SQL语句查出每门课都大于80分的学生的姓名
用一条SQL语句查出每门课都大于80分的学生的姓名,数据表结构如下: 建表SQL如下: ; -- ---------------------------- -- Table structure for ...