一、伪类

CSS伪类用于向某些选择器添加特殊的效果,在W3规范中,CSS伪类有如下几个:

CSS2.1
:active:向被激活的元素添加样式(激活是指点击鼠标那一下)
:focus:向拥有键盘输入焦点的元素增加样式    
:hover:当鼠标悬浮在元素上方时,向元素增加样式
:link:向未被访问的链接增加样式
:visited:向已被访问的链接增加样式
:first-child:向元素的第一个子元素增加样式
:lang:向带有指定lang属性的元素增加样式

CSS3中的伪类(注意CSS3级别的伪类可能缺乏浏览器支持,可能要准备相应的JS支持):
:nth-child
:nth-last-child
:nth-of-type
:first-of-type
:last-of-type
:empty
:target
:checked
:enabled
:disabled

提示:
1、伪类名称对大小写不敏感。比如:ACTIVE,Active,active都是合法的。
2、l v h a原则。按照 link 、visited、hover、active 的顺序来写。
3、在IE中必须声明<!DOCTYPE>,first-child伪类才会生效
4、伪类后面还可接选择器


 疑问:

对于first-child伪类,看下面的解释:

1、p:first-child 匹配第一个<p>元素选择器匹配作为任何元素的第一个子元素的 p 元素,如果<p>元素不是第一个,则无效。
成功的例子:
html:
  1. <body>
  2. <p>
  3. 哈哈哈
  4. </p>
  5. <p>
  6. <i>AAA</i>
  7. <i>bbb</i>
  8. </p>
  9. <p>
  10. <i>CC</i>
  11. <i>DD</i>
  12. </p>
  13. <p lang="en">呵呵</p>
  14. </body>

css:

  1.   p:first-child{color: yellow;}
效果:
 
其他<p>标签内的元素不改变颜色。

失败的例子:
html:
  1. <body>
  2.         <span></span>
  3. <p>
  4. 哈哈哈
  5. </p>
  6. <p>
  7. <i>AAA</i>
  8. <i>bbb</i>
  9. </p>
  10. <p>
  11. <i>CC</i>
  12. <i>DD</i>
  13. </p>
  14. <p lang="en">呵呵</p>
  15. </body>

css:
  1.     p:first-child{color: yellow;}
效果:
没有一个<p>标签内的颜色改变为黄色,因为没有一个<p>标签是作为它的父元素的第一个元素。



2、p>i:first-child 匹配所有<p>元素的第一个<i>元素 选择器匹配所有 <p> 元素中的第一个 <i> 元素,如果<i>元素不是第一个则无效。
成功的例子:
html:
  1.     <body>
  2. <p>
  3. <span>哈哈哈哈哈</span>
  4. <i>呵呵</i>
  5. 哈哈哈
  6. <i>呵呵</i>
  7. </p>
  8. <p>
  9. <i>AAA</i>
  10. <i>bbb</i>
  11. </p>
  12. <p>
  13. <i>CC</i>
  14. <i>DD</i>
  15. </p>
  16. <p lang="en">呵呵</p>
  17. </body>
css:
  1. p>i:first-child{color: green;}
效果:
,第一个<p>标签内,由于<i>不是第一个子元素,所以不会被选择器选中,颜色不会变成绿色。

 

3、p:first-child i 匹配所有作为第一个子元素<p>中的所有<i>元素 选择器匹配所有作为元素的第一个子元素的 <p> 元素中的所有 <i> 元素
成功的例子:
html:
  1. <body>
  2. <p>
  3. <span>哈哈哈哈哈</span>
  4. <i>呵呵</i>
  5. 哈哈哈
  6. <i>呵呵</i>
  7. </p>
  8. <p>
  9. <i>AAA</i>
  10. <i>bbb</i>
  11. </p>
  12. <p>
  13. <i>CC</i>
  14. <i>DD</i>
  15. </p>
  16. <p lang="en">呵呵</p>
  17. </body>
css:
  1. p:first-child i{color: red;}
效果:
  其他<p>标签不会被选中,颜色不会变成红色。

对于lang伪类,看下面的例子:
css
  1. p:lang(en){color: red;}
html:
  1. <p lang="en">呵呵</p>
效果:
 

二、伪元素

W3C规范中有4个伪元素:
CSS-1
:first-line 向文本的第一行添加样式
:first-letter 向文本的第一个字母添加特殊样式
CSS-2:
:after 在元素之后添加内容
:before 在元素之前添加内容

提示:
1、CSS3中规定伪元素的写法是要用两个冒号的,比如,::first-line,但是由于一些IE浏览器不支持,所以现在变得既可以用两个冒号,也可以用用一个冒号。
2、另外,:after和:before会在元素中添加内容,具体的方式类似于:
  1. p:after{
  2.     content:"内容";
  3. }
3、同一个标签可以使用多重伪元素,比如:
  1. p:first-line{
  2.  color:red;
  3. }
  4. p:first-letter{
  5.  color:yellow;
  6. }
其中,如果同时出现first-line,first-letter,并且相互有冲突的属性,那么会按照first-letter里面的属性来设置冲突的那些属性,而不是看其出现的先后顺序。例如上例中,第一行的第一个字母(中文是第一个字)的颜色应该为黄色。


三、伪类和伪元素的区别

1、伪类一开始单单只是用来表示一些元素的动态状态,典型的就是链接的各个状态(LVHA)。随后CSS2标准扩展了其概念范围,使其成为了所有逻辑上存在但在文档树中却无须标识的“幽灵”分类。 

2、伪元素则代表了某个元素的子元素,这个子元素虽然在逻辑上存在,但却并不实际存在于文档树中。

3、伪元素在一个选择器中只能出现一次,并且只能出现在末尾。



CSS伪类和伪元素的更多相关文章

  1. CSS中伪类及伪元素用法详解

    CSS中伪类及伪元素用法详解   伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的 ...

  2. CSS 属性 - 伪类和伪元素的区别

    伪类和伪元素皆独立于文档结构.它们获取元素的途径也不是基于id.class.属性这些基础的元素特征,而是在处于特殊状态的元素(伪类),或者是元素中特别的内容(伪元素).区别总结如下: ①写法不一样: ...

  3. 详解 CSS 属性 - 伪类和伪元素的区别[转]

    首先,阅读 w3c 对两者的定义: CSS 伪类用于向某些选择器添加特殊的效果. CSS 伪元素用于将特殊的效果添加到某些选择器. 可以明确两点,第一两者都与选择器相关,第二就是添加一些“特殊”的效果 ...

  4. CSS 属性 - 伪类和伪元素

    CSS 伪类用于向某些选择器添加特殊的效果. CSS 伪元素用于将特殊的效果添加到某些选择器. 可以明确两点,第一两者都与选择器相关,第二就是添加一些“特殊”的效果.这里特殊指的是两者描述了其他 cs ...

  5. 关于css中伪类及伪元素的总结

    css中的伪类和伪元素总是混淆,今天参考了很多资料,也查看了部分文档,现将伪类及伪元素总结如下: 一.由来: 伪类和伪元素的引入都是因为在文档树里有些信息无法被充分描述,比如CSS没有"段落 ...

  6. CSS的伪类和伪元素

    伪类 W3C:"W3C" 列指示出该属性在哪个 CSS 版本中定义(CSS1 还是 CSS2). 属性 描述 CSS :active 向被激活的元素添加样式. 1 :focus 向 ...

  7. 详解 CSS 属性 - 伪类和伪元素的区别(再也不用概念盲了!!!)

    首先,阅读 w3c 对两者的定义: CSS 伪类用于向某些选择器添加特殊的效果. CSS 伪元素用于将特殊的效果添加到某些选择器. 可以明确两点,第一两者都与选择器相关,第二就是添加一些“特殊”的效果 ...

  8. 《转载》详解 CSS 属性 - 伪类和伪元素的区别

    首先,阅读 w3c 对两者的定义: CSS 伪类用于向某些选择器添加特殊的效果. CSS 伪元素用于将特殊的效果添加到某些选择器. 可以明确两点,第一两者都与选择器相关,第二就是添加一些“特殊”的效果 ...

  9. 【从0到1学Web前端】CSS伪类和伪元素

    1.CSS中的伪类 CSS 伪类用于向某些选择器加入特殊的效果. 语法: selector : pseudo-class {property: value} CSS 类也可与伪类搭配使用 select ...

随机推荐

  1. c++友元函数

    c++友元函数分两类: 一://友员全居函数 /*#include <iostream>using namespace std;class aaa{    friend void prin ...

  2. Android MVP + 泛型,实现了友好VP交互及Activity潜在的内存泄露的优化

    Android MVP粗来已经有段时间了,在项目中我也多多少少用了一些,不得不说代码使用这种模式后,条例确实清晰了好多,整个流程看起来有点各司其职的感觉(另一种的java面向对象的方式). 不过这里是 ...

  3. 闭包内的微观世界和js垃圾回收机制

    一.什么是闭包? 官方”的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.相信很少有人能直接看懂这句话,因为他描述的太学术.其实这句话 ...

  4. Coursera台大机器学习课程笔记5 -- Theory of Generalization

    本章思路: 根据之前的总结,如果M很大,那么无论假设泛化能力差的概率多小,都无法忽略,所以问题转化为证明M不大,然后上章将其转化为证明成长函数:mh(N)为多项式级别.直接证明似乎很困难,本章继续利用 ...

  5. MIL 多示例学习 特征选择

    一个主要的跟踪系统包含三个成分:1)外观模型,通过其可以估计目标的似然函数.2)运动模型,预测位置.3)搜索策略,寻找当前帧最有可能为目标的位置.MIL主要的贡献在第一条上. MIL与CT的不同在于后 ...

  6. Material Design Lite,简洁惊艳的前端工具箱 之 交互组件。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接, 博客地址为http://www.cnblogs.com/jasonnode/ . 网站上有对应 ...

  7. leetcode 上的Counting Bits 总结

    最近准备刷 leetcode  做到了一个关于位运算的题记下方法 int cunt = 0; while(temp) { temp = temp&(temp - 1);  //把二进制最左边那 ...

  8. ES6里箭头函数的陷阱

    ECMAScript 6新增了箭头函数 原来的匿名函数 function(){},现在可以简化成()=>{} 看起来高大上,像C#什么的语法. 但是箭头函数的this对象,不能更改,总是指向函数 ...

  9. gulp操作基本功能.md

    gulp操作基本功能.示例代码: var gulp = require("gulp");//创建 gulp模块 var adel = require("del" ...

  10. Lucene中几种常用的Query

    看完图之后在来详细说明一下. 1.phrasequery是用来查询短语的.注意他只针对英文,对中文并没有什么用处. 核心用法: @Test public void test02(){ //新建查询 P ...