学习《CSS选择器Level-4》不完全版
1 概述
1.1 前言
选择器是CSS的核心组件。本文依据W3C的Selectors Level 4规范,概括总结了Level1-Level4中绝大多数的选择器,并做了简单的语法说明及示例演示。希望对程序员有所助益。
2 元素选择器
2.1 类型选择器-h1
类型选择器也可以称为标签名选择器,会选中文档中该类型元素的实例。
h1 {
color: red;
}
将文档中元素类型为h1的颜色设置成红色。
2.2 通配选择器-*
通用选择器是一种特殊类型选择器,表示任何元素类型的元素。
* {
color: red;
}
设置文档中所有元素的颜色为红色。
3 属性选择器
3.1 属性存在选择器-[name]
h1[name] {
color: red;
}
选中元素 h1 中具有属性 name 的元素。
3.2 属性值选择器
3.2.1 确切匹配-[title='cool']
h1[title='cool'] {
color: red;
}
匹配元素 h1 中包含属性 title 并且属性值是 cool 的元素。
3.2.2 包含匹配-[title|='cool']
h1[title~='cool'] {
color: red;
}
匹配元素 h1 中包含属性 title 并且属性值中包含 cool 的元素。
3.2.3 头部匹配-[title^='cool']
h1[title|='cool'] {
color: red;
}
匹配元素 h1 中包含属性 title ,并且属性值是 cool 的元素 或以 cool- 开头的元素。
3.3 属性值子串选择器
3.3.1 头部匹配-[title^='cool']
h1[title^='cool'] {
color: red;
}
匹配元素 h1 中包含属性 title ,并且属性值串以 cool 开头的元素。
3.3.2 尾部匹配-[title$='cool']
h1[title$='cool'] {
color: red;
}
匹配元素 h1 中包含属性 title ,并且属性值串以 cool 结尾的元素。
3.3.3 部分匹配-[title*='cool']
h1[title*='cool'] {
color: red;
}
匹配元素 h1 中包含属性 title ,并且属性值串包含 cool 子串的元素。
3.4 类选择器-.class
.red {
color: red;
}
匹配文档中 class 属性为 red 的元素并设置其颜色为红色。
3.5 ID选择器-#id
#title {
color: red;
}
匹配文档中 id 属性为 title 的元素并设置其颜色为红色。
4 语言学伪类
4.1 方向性伪类:dir
dir() 主要用于匹配符合某个方向性的元素,例如 :dir(ltr) 和 :dir(rtl),其中ltr是left to right简写,表示从左向右,而rtl是right to left,表示从右向左。
:dir(ltr) {
color: red;
}
匹配文字方向为从左到右的元素。
4.2 语言伪类:lang
:lang(fr) {
color: red;
}
匹配语言为法语的元素并设置其颜色为红色。
5 位置伪类
5.1 超链接伪类:any-link
匹配带有 href 属性的 <a>、<link>、<area>等元素。
:any-link {
color: red;
}
匹配任意超链接,并设置其颜色为红色。
5.2 超链接伪类:link
:link {
color: red;
}
匹配未被访问的超链接,并设置其颜色为红色。
5.3 超链接伪类:visited
:visited {
color: blue;
}
匹配访问过的超链接,并设置其颜色为蓝色。
5.4 超链接伪类:local-link
:local-link {
color: red;
}
匹配本地超链接,并设置其颜色为红色。
5.5 目标伪类:target
<h1><a href="#content">三十课</a></h1>
<p id="content">程序员的笔记本</p>
<p id="content2">程序员的笔记本2</p>
:target {
color: red;
}
点击 html 代码中的内部链接,链接的目标对象 id 为 content 的 p元素颜色变为红色。
6 用户行为伪类
6.1 用户行为伪类:hover
用户指针设备悬停于指定元素时,匹配该元素。
:hover {
color: red;
}
用户指针悬停于某元素,匹配该元素并将其设置其颜色为红色。
6.2 用户行为伪类:active
:active {
background: red;
}
当特定元素处于激活状态时,设置元素背景色为红色。
6.3 用户行为伪类:focus
:focus {
background: red;
}
当特定元素获得焦点,设置元素背景色为红色。
6.4 用户行为伪类:focus-within
div:focus-within {
border : 1px solid blue;
}
当div中的子元素获得输入焦点时,设置div元素边框为1象素值的蓝色边框。
7 时间轴伪类
7.1 时间伪类:current
在文档的语音渲染或是显示字幕期间,常会用到时间轴伪类。
:current(p) {
color: red;
}
以上规则定义了当前语音渲染段落的颜色为红色。
7.2 时间伪类:past
:past(p) {
color: red;
}
以上规则定义了以完成语音渲染段落的颜色为蓝色。
7.3 时间伪类:future
:future(p) {
color: yellow;
}
以上规则定义了以未进行语音渲染段落的颜色为黄色。
8 资源状态伪类
8.1 资源状态伪类:playing
:playing {
border : 1px solid red;
}
匹配当前播放状态的元素,并为其添加1象素的红色边框。
8.2 资源状态伪类:paused
:playing {
border : 1px solid grey;
}
匹配当前播放状态的元素,并为其添加1象素的灰色边框。
9 输入伪类
9.1 输入状态控制伪类:enabled
:enabled {
color: red;
}
匹配启用状态的元素并设置其颜色为红色。
9.2 输入状态控制伪类:disabled
:disabled{
color: yellow;
}
匹配禁用状态的元素并设置其颜色为黄色。
9.3 只读伪类:read-only
:read-only {
color: red;
}
匹配只读状态的元素并设置其颜色为红色。
9.4 读写伪类:read-write
:read-write {
color: yellow;
}
匹配读写状态的元素并设置其颜色为黄色。
9.5 伪类:placeholder-shown
:placeholder-shown {
background: red;
}
选中占位符为显示状态的元素并设置其背景色为红色。
9.6 缺省项伪类:default
:default {
color: red;
}
匹配缺省的元素并设置其颜色为红色。
9.7 选中项伪类:checked
:checked {
height: 4em;
}
匹配选中的元素并将其高度设成 4em。
9.8 不确定值伪类:indeterminate
不确定值伪类 :indeterminate 适用于其值处在不确定状态的元素。例如 : radio 元素组在未被初始选择的情况下就为不确定值状态。
:indeterminate {
height: 4em;
}
匹配不确定值元素并设置高度为 4em。
9.9 空值伪类:blank
空值伪类 :blank 用来匹配输入值为空的输入框,如 textarea 或 input 框。
:blank {
background: red;
}
目前该伪类兼容性较差。
9.10 合规性验证伪类:valid
:valid {
color: red;
}
匹配输入值合法的元素并设置其颜色为红色。
9.11 合规性验证伪类:invalid
:valid {
color: blue;
}
匹配输入值不合法的元素并设置其颜色为蓝色。
9.12 范围伪类:in-range
:in-range {
color: red;
}
匹配输入值在定义范围内的元素并设置其颜色为红色。
9.13 范围伪类:out-of-range
:out-of-range {
color: blue;
}
匹配输入值不在定义范围内的元素并设置其颜色为蓝色。
9.14 必填项伪类:required
:required {
color: red;
}
匹配定义为必填项的元素并设置其颜色为红色。
9.15 选填项伪类:optional
:optional {
color: blue;
}
匹配定义为选填项的元素并设置其颜色为蓝色。
10 树形结构伪类
10.1 根结点伪类:root
伪类 :root 表示文档的根元素。例如,在DOM文档中,伪类 :root 与Document对象的根元素匹配。 在HTML中,就表示html元素。
:root {
color: red;
}
匹配文档根元素并定义其颜色为红色。
10.2 空伪类:empty
:empty {
color : red;
}
匹配为空的元素并设置其颜色为红色。
10.3 元素索引伪类:nth-child
p:nth-child(3n+1) {
color: red;
}
匹配第1,4,7,10等 p 元素并设置其颜色为红色。
10.4 元素索引伪类:nth-last-child
p:nth-child(3n+1) {
color: red;
}
匹配倒数第1,4,7,10等 p 元素并设置其颜色为红色。
10.5 首元素伪类:first-child
p:first-child {
color: red;
}
匹配第一个 p 元素并设置其颜色为红色。
10.6 尾元素伪类:last-child
p:last-child {
color: red;
}
匹配最后一个 p 元素并设置其颜色为红色。
10.7 唯一子元素伪类:only-child
p:only-child {
color: red;
}
匹配父元素只包含唯一子元素的元素 p 并设置其颜色为红色。
10.8 类型索引伪类:nth-of-type
p:nth-of-type(3n+1) {
color: red;
}
匹配类型为 p 的第1,4,7,10等索引位置的元素并设置其颜色为红色。
10.9 类型索引伪类:nth-last-of-type
p:nth-last-of-type(3n+1) {
color: red;
}
匹配类型为 p 的倒数第1,4,7,10等索引位置的元素并设置其颜色为红色。
10.10 类型首元素伪类:first-of-type
p:first-of-type {
color: red;
}
匹配第一个类型为 p 的元素并设置及颜色为红色。
10.11 类型尾元素伪类:last-of-type
p:last-of-type {
color: red;
}
匹配倒数第一个类型为 p 的元素并设置及颜色为红色。
10.12 唯一类型元素伪类:only-of-type
p:only-of-type {
color: red;
}
匹配父元素只包含唯一类型为 p 子元素并设置其颜色为红色。
11 逻辑组合选择器
11.1 分组选择器
h1 { color: red }
h2 { color: red }
h3 { color: red }
h4 { color: red }
利用分组选则器,可以将上述CSS规则简写成下面的形式。
h1,h2,h3,h4 {
color: red
}
上述两种写法效果相同。
11.2 逻辑组合伪类:is
伪类 :is() 是一个以多个选择器做为参数的函数,匹配由其参数表示的元素。
目前兼容性较差。
*:is(:hover, :focus) {
color: red;
}
匹配伪类 hover 和 focus 的元素并设置其颜色为红色。
11.3 逻辑组合伪类:not
负向逻辑组合伪类 :not() 是一个以多个选择器做为参数的函数,匹配不在其参数表中的元素。
目前兼容性较差。
button:not([DISABLED]) {
color : red;
}
匹配不包含 DISABLED 属性的 button 元素并设置其颜色为红色。
11.4 逻辑组合伪类:has
目前兼容性较差。
a:has(> img) {
border : 1px solid red;
}
匹配包含 img 子元素的超链接并设置其边框为1象素红色。
12 组合选择器
12.1 后代选择器
h1 em {
color: red;
}
匹配 h1 的后代的 em 元素并设置其颜色为红色。
12.2 子元素选择器->
h1 > em {
color: red;
}
匹配 h1 的子元素 em 并设置其颜色为红色。
12.3 相邻兄弟选择器-+
h1 + h2 {
color: red;
}
匹配 h1 的相邻兄弟元素 h2 并设置其颜色为红色。
12.4 兄弟选择器-~
h1 ~ h2 {
color: red;
}
匹配 h1 的后面的同级结点 h2 并设置其颜色为红色。
13 结尾
13.1 参考文献
W3C Working Draft : Selectors Level 4 - 21 November 2018
13.2 结语
本文是@毛瑞依据CSS选择器规范4择取的部分CSS选择器内容编写而成。因本人水平有限,理解和翻译时难免有偏差和错误,还请程序员朋友多多指正!
文中一些选择器兼容性还很差,只能做为学习储备,不适用于实际产品中运用。
费力原创十分不易,请大家转载时一定要明确注明出处来自【三十课】!
学习《CSS选择器Level-4》不完全版的更多相关文章
- CSS选择器(CCS第三版)
什么是选择器? CSS选择器就是使样式找到应用对象. 简单选择器(Simple selectors) 在日常开发中,最常用的选择器,也是最基本的选择器. 元素选择器(Type selector) 针对 ...
- 前端学习 -- Css -- 选择器的优先级
当使用不同的选择器,选中同一个元素时并且设置相同的样式时,这时样式之间产生了冲突,最终到底采用哪个选择器定义的样式,由选择器的优先级(权重)决定优先级高的优先显示. 优先级的规则 内联样式 , 优先级 ...
- 黑马学习CSS选择器 简单选择器 结合符 选择器组合 选择器优先级
- CSS 选择器的学习
从蛋学习 CSS 选择器 + 做一个 Jumony 桌面工具,真费劲,目前Jumony Tool两大问题无法解决,完美的显示 html 文档和根据结果在文档中定位,有点儿跑题了…… 1. 选择“cla ...
- 前端学习笔记——CSS选择器
学习css选择器之前我们先了解下css规则: CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明: 选择器通常是需要改变样式的 HTML 元素. 每条声明由一个属性和一个值组成. 1.id选 ...
- 前端学习(十):CSS选择器
进击のpython ***** 前端学习--CSS选择器 每一条CSS样式声明由两部分组成: 选择器{ 样式: } 在CSS中{}之前的部分就是"选择器","选择器&qu ...
- CSS选择器的优化
前面花了几个篇幅着重介绍了CSS的选择器的使用,我将其分成三个部分:CSS基本选择器.CSS属性选择器以及CSS伪类选择器.那么今天我主要想和大家一起来学习——CSS选择器方面的性能优化.因为对性能这 ...
- 简易数据分析 15 | Web Scraper 高级用法——CSS 选择器的使用
这是简易数据分析系列的第 15 篇文章. 年末事情比较忙,很久不更新了,后台一直有读者催更,我看了一些读者给我的私信,发现一些通用的问题,所以单独写篇文章,介绍一些 Web Scraper 的进阶用法 ...
- html之css选择器学习
相关内容: 什么是css选择器 标签选择器 类选择器 id选择器 并集选择器(分组选择器) 交集选择器 后代选择器 子标签选择器 属性选择器 相邻兄弟选择器 伪类选择器 伪元素选择器(伪对象选择器) ...
随机推荐
- ssh的两种连接方法(包括无密码访问)
一.正常连接方法:ssh root@10.0.0.20 二.无密码连接方法(有两台机器:此处我把被连接的称为服务器,另一台则称为客户端): 1.先在服务器添加目录 .ssh: mkdir .ssh ...
- NodeJS”热部署“代码,实现动态调试(hotnode,可以实现热更新)
NodeJS”热部署“代码,实现动态调试 开发中遇到的问题 如果你有 PHP 开发经验,会习惯在修改 PHP 脚本后直接刷新浏览器以观察结果,而你在开发 Node.js 实现的 HTTP 应用时会 ...
- 27、BLASTN的参数
转载:http://blog.sina.com.cn/s/blog_5ecfd9d90100ksui.html http://www.docin.com/p-704735699.html 与之前的bl ...
- 8、scala面向对象编程之Trait
一.Trait基础 1.将trait作为接口使用 // Scala中的Triat是一种特殊的概念 // 首先我们可以将Trait作为接口来使用,此时的Triat就与Java中的接口非常类似 // 在t ...
- 8、泛型程序设计与c++标准模板库5.函数对象
1.函数对象 函数对象是STL提供的第四类主要组件,它使得STL的应用更加灵活方便,从而增强了算法的通用性.大多数STL算法可以用一个函数对象作为参数.所谓“函数对象”其实就是一个行为类似函数的对象, ...
- JS中apply和call的用法
JavaScript中有一个call和apply方法,其作用基本相同,但也有略微的区别. 先来看看JS手册中对call的解释: call 方法调用一个对象的一个方法,以另一个对象替换当前对象. cal ...
- JDK1.8的安装与卸载
Java的下载地址: https://www.java.com/zh_CN/download/ 下载完成后打开进入界面: 点击下一步, 上面也无需更改,也可自定义设置安装路径, 再次确认安装路径,点击 ...
- Flask 入门(第一篇)
1. 认识 Flask Flask 是一个微型 Web 框架,依赖于 jinjia2 模板系统和 Werkzeug WSGI(本质为 Socket 服务端) 服务,默认情况不支持数据库抽象层.表单验证 ...
- CODING 告诉你硅谷的研发项目管理之道(3)
前言: 本文为 CODING 教你一步步从一个程序员变身成管理者系列文章的第三篇,文章内容来自 Unity 的一位研发总监,详细叙述了他的管理风格和处事态度,同时列举了很多扩展阅读材料来帮助读者更全面 ...
- PHP中的继承
<?php class Bar { private $salary = 3000; public $lunch = 1000; // php中关于“可见性”的概念 public function ...