伪类(Pseudo classes)

由于状态的变化是非静态的,所以元素达到一个特定状态时,它可能得到一个伪类的样式;当状态改变时,它又会失去这个样式。由此可以看出,它的功能和 class 有些类似,但它是基于文档之外的抽象,所以叫伪类。

语法:selector:pseudo-class {}

:root

选择 html 元素,在声明全局 CSS 变量时很有用。

:root {
--first-color: #488cff;
--second-color: #ffff8c;
} #firstParagraph {
background-color: var(--first-color);
} #secondParagraph {
background-color: var(--second-color);
}

:target

若当前页面 URL 为:http://a.cn/index.html#section2,则<section id="section2">Example</section>可以通过 :target 选中。

:first-child

选择作为一组兄弟元素中的第一个元素,与父元素如何无关!

p:first-child 选择 p 元素,要求该元素是一组兄弟元素中的第一个元素(即 p 元素前面没有兄弟元素)。

p > i:first-child 选择 i 元素,要求:① 该 i 元素的父元素是 p 元素。② 该 i 元素是一组兄弟元素中的第一个元素。

p:first-child i 选择 i 元素,要求:① 该 i 元素的父元素是 p 元素。② 该 p 元素是一组兄弟元素中的第一个元素

:first-of-type

选择第一次出现的元素,相比于 :first-child,不要求没有前兄弟节点

  • p:first-of-type 选择 p 元素,要求该元素是某层级中第一次出现的 p 元素(与p 元素前面有没有兄弟元素无关)。

:last-child 和 :last-of-type

:first-child:first-of-type 的区别在于是否有 前兄弟元素,:last-child:last-of-type 的区别在于是否有 后兄弟元素。

  • p:last-child 选择 p 元素,要求该元素是一组兄弟元素的最后一个元素。
  • p:last-of-type 选择 p 元素,要求该元素是一组元素中最后一次出现的 p 元素,与该 p 元素后面是否还有兄弟元素无关。

:nth-child(an+b)

先找到一组兄弟元素,然后从 1 开始排序,选择符参数次序要求的元素。a、b 必须是整数。

  • div:nth-child(0n+1) 匹配一组兄弟元素中的第一个元素,且该元素是 div 元素。等同 div:nth-child(1) div:first-child
  • tr:nth-child(odd) 匹配表格中的奇数行,等同 tr:nth-child(2n+1)
  • tr:nth-child(even) 匹配表格中的偶数行,等同 tr:nth-child(2n+0)
  • span:nth-child(-n+3) 匹配前三个子元素中的 span 元素
  • .a span:nth-child(2n+1) 匹配 span 元素,要求:① 父元素的类为 a。② 该 span 元素在所在组兄弟元素中,次序为奇数

:nth-child():nth-last-child() 相反。

:nth-of-type(an+b)

针对具有一组兄弟节点的标签, 用参数来筛选出在一组兄弟节点的位置。

/* 奇数段 */
p:nth-of-type(2n+1) {
color: red;
}
<div>
<p>这是第一段。</p><!-- 被选择 -->
<div>这段不参与计数。</div>
<p>这是第二段。</p>
<p>这是第三段。</p><!-- 被选择 -->
</div>

:nth-of-type():nth-last-of-type() 相反。

其他伪类

  • a:link 未访问的链接
  • a:visited 已访问的链
  • a:hover 鼠标划过链接
  • a:active 已选中的链接
  • :checked 选择选中状态下的 radio 元素、checkbox 元素或 select 的 option
  • :disabled 选择被禁用的元素
  • :enabled 选择被启用的元素
  • div:focus 当 div 元素获得焦点时将被选中
  • div:focus-within 即使是 div 的子元素——而不是 div 自身获得焦点,也能被选中
  • p:not(.fancy) 选择类名不是 fancy 的 p 元素
  • :empty 选择元素内无任何子元素、文本、空格的元素
  • :only-child 匹配没有兄弟元素的元素,等同 :first-child:last-childnth-child(1):nth-last-child(1)
  • main :only-of-type 选择 main 元素下只出现一次的元素
  • :validinvalid 分别选择通过验证、未通过验证的表单元素

伪元素(Pseudo elements)

CSS伪元素控制的内容和元素是没有差别的,但是它本身只是基于元素的抽象,并不存在于文档中,所以称为伪元素。

语法:selector::pseudo-element {}。伪元素通常用两个冒号 ::,以便与伪类区别。

伪元素可以和伪类一起使用。

::before 和 ::after

创建一个伪元素,其将成为匹配选中的元素的第一个/最后一个子元素。常通过 content 属性来为一个元素添加修饰性的内容。此元素默认为行内元素

content 仅能用于 ::before::after 中,值有以下几种:

div::before {
content: none;
content: normal;
content: 'some text';
content: url(pic.jpg);
content: attr();
}

当值为 none 或 normal 时,伪元素无效;若想使用伪元素但又不想添加字符或图片,可以 content: ''

::first-letter

选中块级元素第一行的第一个字。允许设置的属性:与文字相关的属性、背景、边框、内边框、外边框。

::first-line

选中块级元素的第一行。允许设置的属性:与文字相关的属性、背景。

::selection

选中被用户选中的文字。允许设置的属性:color、background-color、cursor、caret-color、outline、text-decoration、text-emphasis-color、text-shadow。

参考资料

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

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

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

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

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

  3. CSS中的伪类与伪元素

    在前端开发中,大家或多或少的有接触过CSS伪类和伪元素,使用伪元素的时候,总感觉和伪类很相似,但又不能详细的说出两者的区别和联系,那么两者到底有什么区别和联系呢? 在 W3C 中定义: 伪类:用于向某 ...

  4. css中伪类与伪元素的区别

    一:伪类:1:定义:css伪类用于向某些选择器添加特殊效果. 伪类其实与普通的css类相类似,可以为已有的元素添加样式,但是他只有处于dom无法描述的状态下才能为文档树中的元素添加样式,所以将其称为伪 ...

  5. css中伪类和伪元素的区别

    转载:http://www.cnblogs.com/ihardcoder/p/5294927.html CSS3伪类和伪元素的特性和区别   前端er们大都或多或少地接触过CSS伪类和伪元素,比如最常 ...

  6. css伪选择器使用总结——css中关于伪类和伪元素的知识总汇

    CSS 伪类用于向某些选择器添加特殊的效果,而CSS引入伪类和伪元素的概念是为了实现基于文档树之外的信息的格式化.这里讲总结关于css伪类和伪元素的相关使用 伪元素 :before/:before 在 ...

  7. CSS3 动态生成内容(在Web中插入内容)====CSS的伪类或者伪元素

    # css3 .类:伪类::伪元素 /* CSS3伪元素/伪类 :https://www.w3.org/TR/css3-selectors/#selectors ::selection 伪元素(F12 ...

  8. 前端开发 CSS中你所不知道的伪类与伪元素的区别--摘抄

    做过前端开发的人都熟悉伪类与伪元素,而真正能够彻底了解这二者的区别的人并不多.伪类与伪元素确实很容易混淆. 伪元素主要是用来创建一些不存在原有dom结构树种的元素,例如:用::before和::aft ...

  9. css中伪类和伪元素

    伪类和伪元素时对那些我们不能通过class.id等选择元素的补充 伪类的操作对象是文档树中已有的元素(可以给已有元素加了一个类替代),而伪元素则创建了一个文档数外的元素(可以添加一个新元素替代) CS ...

  10. CSS伪类和伪元素

    一.伪类 CSS伪类用于向某些选择器添加特殊的效果,在W3规范中,CSS伪类有如下几个: CSS2.1 :active:向被激活的元素添加样式(激活是指点击鼠标那一下) :focus:向拥有键盘输入焦 ...

随机推荐

  1. 微信内置浏览器对于html5的支持

    微信内置浏览器对于html5的支持 来源: 作者: 热度:102 日期:14-06-10, 09:10 AM 我在做针对微信的HTML5应用, 目前遇到的几个问题是 一. 安卓版微信直接调用系统浏览器 ...

  2. Building Applications with Force.com and VisualForce(Dev401)( 八):Designing Applications for Multiple Users: Controling Access to Records.

    Module Objectives1.List feature that affect access to data at the record level.2.List the organizati ...

  3. 震惊!程序员的福音!不需要敲代码就能完成复杂的逻辑应用? —— Azure Logic App

    (大家看完标题可能以为是营销号,哈哈哈哈哈哈哈哈哈...客官请留步, 正经博主....好吧) 今天我们的主题是Azure Logic Apps Azure Logic Apps 是什么? 官方解释:h ...

  4. Mysql数据库主键,外键,索引概述

    主键: 主键是数据表的唯一索引,比如学生表里有学号和姓名,姓名可能有重名的,但学号确是唯一的,你要从学生表中搜索一条纪录如查找一个人,就只能根据学号去查找,这才能找出唯一的一个,这就是主键;如:id ...

  5. 模块 collections 高级数据类型

    collections模块 原文来自cnblog 的 Eva-J Eva-J 介绍了collections模块的常用方法,和演示实例 在 Python cookbook 的第一章中还有一些 更加好玩的 ...

  6. 使用Azure Functions 在web 应用中启用自动更新(一)分析基于轮询的 Web 应用的限制

    1,引言 上一篇介绍了使用使用 Visual Studio 开发 "Azure Functions" 函数,此篇介绍 “Azure Functions” 的测试以及直接从 Vist ...

  7. F - 我们什么时候能见面? POJ - 2028

    F - 我们什么时候能见面? POJ - 2028 ICPC委员会希望尽快召开会议,解决下一届比赛中的每一个小问题.然而,委员会的成员都忙于疯狂地开发(可能是无用的)程序,以至于很难安排他们的会议日程 ...

  8. 老技术新谈,Java应用监控利器JMX(1)

    先聊聊最近比较流行的梗,来一次灵魂八问. 配钥匙师傅: 你配吗? 食堂阿姨: 你要饭吗? 算命先生: 你算什么东西? 快递小哥: 你是什么东西? 上海垃圾分拣阿姨: 你是什么垃圾? 滴滴司机: 你搞清 ...

  9. git使用基本步骤

    一.Git配置环境: 1.通过git init命令把某个目录变成Git可以管理的仓库: 2.生成公钥秘钥:ssh key ssh-keygen -t rsa -C "for example@ ...

  10. springboot项目下的Caused by: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

    今天遇到mybatis-puls的报错Caused by: org.apache.ibatis.binding.BindingException: Invalid bound statement (n ...