CSS的伪类(Pseudo-classes)分为两种:UI伪类和结构化伪类,伪类一般用于向某些选择器添加特殊的效果,伪类选择符用"  : "进行标示,如果是“ ::  ” 表示CSS3新增伪类

UI伪类

UI伪类会在HTML标签处于某种状态时,应用CSS样式,最常使用UI伪类的标签是a,利用链接伪类,用户可以在鼠标悬停是改变的颜色,去掉文本的下划线或提示信息面板等

我们先来讨论下链接伪类。链接伪类总共有四个,因为链接始终是以下四种状态之一

  • link  等待用户点击
  • visited 用户此前点击过
  • hover 鼠标悬停状态
  • active 链接正在被点击

下面是使用四个伪类选择符的链接a标签

a:link{color:black;}
a:visited{color:green;}
a:hover{text-decoration: none;}
a:active{color: red;}

由于四种状态的特指度相同,上面链接在初始状态时是黑色,点击之后是绿色,悬停时下划线消失,正在点击时显示为红色

需要说明的时候,伪类可以应用任何元素,而不仅仅是a元素

p:hover{background-color: blue;}

上面代码,可以让段落,在悬停时改变背景色为蓝色

结构化伪类

结构化伪类可以根据标签的结构关系应该样式

e:first-child  代表一组同胞元素中的第一个元素

e:last-child  代表一组同胞元素中的最后一个元素

下面的CSS标记,会将列表的第一行文本设置为红色

ol.results li:first-child{color:red;}
<ol class="results">
<li>My Fast Pony</li>
<li>Steady Trotter</li>
<li>Slow Ol' Nag</li>
<li>My Fast Pony</li>
<li>Steady Trotter</li>
<li>Slow Ol' Nag</li>
</ol>

同理

ol.results li:last-child{color:green;}

将该列表最后一行文本设置为绿色

e:nth-child(n)

这个伪类更加灵活,而不像e:first-child或e:last-child只是用于设置第一个和最后一个元素那么简单,e:nth-child(n)它可以指定同一组中的任何一个元素

像上面那样的样式,我们可以使用e:nth-child(n)完成同样的效果

 ol.results li:nth-child(1){color:red;}
 ol.results li:nth-child(6){color:green;}

数字1、6 代表第一个元素和最后一个元素

ol.results li:nth-child(4){color:yellow;}

上面的CSS将列表的第四项设置为黄色

然而e:nth-child()真正强大之处在于,它可以实现奇偶选择

 ol.results li:nth-child(odd){color:red;}
ol.results li:nth-child(even){color:green}

这样整个列表的1、3、5项文本被设置为红色,而2、4、6项被设置为绿色

伪元素

e::first-letter

选择首字母

可以使用e::first-letter将段落的首字母字体变大

p::first-letter{font-size: 300%;}

伪元素实际上是替我们添加了无形的标签

e::first-line

选择元素的第一行

例如,使用e::first-line将段落的第一行字体放大

p::first-line{font-size: 300%;}

e::before和e::after

分别用于在特别元素的前面或后面添加特定内容

下面有一个段落

<p class="demo">This is a demo</p>

CSS样式

 p.demo::before{content: "CSS-Study:"}

效果如下:

上面的所有,需要注意的是搜索引擎,不会取得伪元素的信息,因为它本身就不存在

下面是伪类总结结构图

二.CSS的伪类的更多相关文章

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

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

  2. 奇妙的CSS之伪类与伪元素

    我们都知道,在CSS中有很多选择器,例如id(#), class(.),属性[attr],这些虽然可以满足一些需要,但有时候还力有未逮.伪类和伪元素就提供了一个有益的补充,可以使我们更高效编码.伪类和 ...

  3. HTML&CSS基础-伪类选择器

    HTML&CSS基础-伪类选择器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.html源代码 <!DOCTYPE html> <html> & ...

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

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

  5. CSS :first-child 伪类

    CSS :first-child 伪类  向元素的第一个子元素添加样式,示例如下:   例 1 - 匹配第一个 <p> 元素(第一个段落显示为红色) <style type=&quo ...

  6. CSS :focus 伪类

    :focus -- CSS :focus 伪类,适用于已获取焦点的元素的样式 语法: :focus CSS版本:CSS2 说明: 适用于已获取焦点的元素的样式,例如:表单的input输入框可以输入文字 ...

  7. 关于css的伪类和伪元素

    现在才发现自己一直没有分清楚css的伪类和伪元素啊,so,总结一下. CSS 伪类用于向某些选择器添加特殊的效果. CSS 伪元素用于将特殊的效果添加到某些选择器. 可以明确两点,第一两者都与选择器相 ...

  8. CSS锚伪类顺序需注意的几点

    CSS锚伪类有以下几种: a:link{color:pink} /*未访问的链接*/ a:visited{color:red} /*已访问的链接*/ a:hover{color:blue} /*鼠标移 ...

  9. css hover伪类选择器与JQuery hover()方法

    css hover伪类选择器 它属于anchor伪类 在支持 CSS 的浏览器中,<a>标签链接的不同状态都可以以不同的方式显示,常常用来改链接的颜色效果 实例 a:link {color ...

随机推荐

  1. c++ 中文字符串处理方法

    转自:http://hi.baidu.com/hehehehello/item/dcc44a4a6afc690e6dc2f08b C++处理中文的问题困扰我很久了.之前一旦遇到中文基本就投诸java怀 ...

  2. udt nat traverse

    https://github.com/bakwc/udt-nat-traverse Example of nat traversal using udt library. UDT is a udp b ...

  3. 开发过程中常用的Linux命令

    做Java开发好几年了,部署JavaWeb到服务器上,一般都选择Linux,Linux作为服务器真是不二之选,高性能,只要熟悉Linux,操作快捷,效率很高. 总结一下工作中常用的Linux命令备忘: ...

  4. iOS10适配知识点

    http://ios.jobbole.com/89551/ http://ios.jobbole.com/88982/ 2.隐私数据访问问题 问题出现 现在app能运行了,当我打开相机时突然又cras ...

  5. 怎样对ListView的项进行排序

    当您使用资源浏览器查看文件时,您能够随心所欲的按名称.大小.类型及改动日期不同的列对文件进行大小排序..Net提供的ListView组件没有直接提供这样的功能,但要实现并不难.   ListView. ...

  6. 安卓 SQLite数据库操作实例

    前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...

  7. Javascript 异步加载详解

    Javascript 异步加载详解 本文总结一下浏览器在 javascript 的加载方式. 关键词:异步加载(async loading),延迟加载(lazy loading),延迟执行(lazy ...

  8. MVC4数据注释与验证 2

    Using Validation Annotations Required必须项验证属性 [Required] public string FirstName { get; set; } [Requi ...

  9. oc-24-点语法

    /** 点语法的本质是方法的调用,而不是访问成员变量,当使用点语法时, 编译器会自动展开成相应的方法.切记点语法的本质是转换成相应的set和get方法, 如果没有set和get方法,则不能使用点语法. ...

  10. Java核心技术卷二部分笔记

    第1章 流与文件 1.2 文本输入与输出 第3章 网络 3.3 可中断套接字 第4章 数据库编程 4.5.2 读写LOB 4.6 可滚动和可更新的结果集 4.8 元数据 第6章 高级Swing 6.1 ...