css的选择器
### CSS 选择器详解 #### 一、概述 CSS(层叠样式表)是一种用于描述网页文档结构化标记语言(如HTML或XML)外观和格式的语言。通过使用CSS选择器,我们可以精确地定位到HTML文档中的元素,并为其应用样式规则。CSS选择器是CSS的核心组成部分之一,它们决定了哪些元素将被样式化。本文档基于W3School的资料进行整理,旨在详细介绍各种类型的CSS选择器及其使用方法。 #### 二、选择器类型 ##### 1. **类与ID选择器** **类选择器**:使用`.`来表示。类选择器可以被多次使用在不同的HTML元素上,用于选择具有相同类名的所有元素。 ```css .class { /* 样式 */ } ``` - **例子**: - `.intro`:选择所有类名为`intro`的元素。 **ID选择器**:使用`#`来表示。ID选择器在页面中应当是唯一的,用于选择具有特定ID的单个元素。 ```css #id { /* 样式 */ } ``` - **例子**: - `#firstname`:选择ID为`firstname`的元素。 ##### 2. **元素选择器** 这些选择器用来选择文档中的特定类型元素。 - **通配符选择器**:使用`*`来表示。它选择文档中的所有元素。 - **例子**: - `*`:选择所有元素。 - **元素选择器**:直接指定元素名称来选择所有该类型的元素。 - **例子**: - `p`:选择所有`<p>`元素。 - **组合元素选择器**:使用逗号`,`来组合多个选择器,选择多个不同类型的元素。 - **例子**: - `div,p`:选择所有`<div>`元素和所有`<p>`元素。 - **子元素选择器**:使用空格来选择作为另一个元素直接子元素的元素。 - **例子**: - `div p`:选择所有位于`<div>`元素内的`<p>`元素。 - **后代选择器**:使用空格来选择作为另一个元素后代的元素。 - **例子**: - `div p`:选择所有位于`<div>`元素内的`<p>`元素。 - **直接子元素选择器**:使用`>`来选择作为另一个元素直接子元素的元素。 - **例子**: - `div > p`:选择直接位于`<div>`元素内的`<p>`元素。 - **相邻兄弟选择器**:使用`+`来选择紧跟在另一元素后的元素。 - **例子**: - `div + p`:选择紧跟在`<div>`元素后面的`<p>`元素。 - **一般兄弟选择器**:使用`~`来选择紧跟在另一元素后的一系列同级元素。 - **例子**: - `p ~ ul`:选择前面有`<p>`元素的每个`<ul>`元素。 ##### 3. **属性选择器** 这些选择器允许我们根据元素的属性及其值来选择元素。 - `[attribute]`:选择具有指定属性的所有元素。 - **例子**: - `[target]`:选择具有`target`属性的所有元素。 - `[attribute=value]`:选择具有指定属性且值为某特定字符串的所有元素。 - **例子**: - `[target=_blank]`:选择所有`target`属性值为`_blank`的元素。 - `[attribute~=value]`:选择属性值中包含某个特定单词的所有元素。 - **例子**: - `[title~=flower]`:选择`title`属性中包含单词“flower”的所有元素。 - `[attribute|=value]`:选择属性值以某个特定字符串开头的所有元素。 - **例子**: - `[lang|=en]`:选择`lang`属性值以“en”开头的所有元素。 - `[attribute^=value]`:选择属性值以某个特定字符串开头的所有元素。 - **例子**: - `a[src^="https"]`:选择`src`属性值以“https”开头的所有`<a>`元素。 - `[attribute$=value]`:选择属性值以某个特定字符串结尾的所有元素。 - **例子**: - `a[src$=".pdf"]`:选择`src`属性值以“.pdf”结尾的所有`<a>`元素。 - `[attribute*=value]`:选择属性值中包含某个特定字符串的所有元素。 - **例子**: - `a[src*="abc"]`:选择`src`属性值中包含“abc”的所有`<a>`元素。 ##### 4. **伪类** 伪类用于选择元素的特定状态,而这些状态不是基于属性或元素类型。 - `:link`:选择所有未访问过的链接。 - `:visited`:选择所有已访问过的链接。 - `:active`:选择当前被激活的链接。 - `:hover`:选择鼠标悬停的元素。 - `:focus`:选择获取了焦点的元素。 - `:lang(language)`:选择具有指定语言属性的元素。 - `:first-of-type`:选择属于其父元素的第一个特定类型元素。 - `:last-of-type`:选择属于其父元素的最后一个特定类型元素。 - `:nth-of-type(n)`:选择属于其父元素第n个特定类型元素。 - `:nth-last-of-type(n)`:选择属于其父元素倒数第n个特定类型元素。 - `:only-of-type`:选择属于其父元素唯一的特定类型元素。 - `:first-child`:选择属于其父元素的第一个子元素。 - `:last-child`:选择属于其父元素的最后一个子元素。 - `:nth-child(n)`:选择属于其父元素第n个子元素。 - `:nth-last-child(n)`:选择属于其父元素倒数第n个子元素。 - `:only-child`:选择属于其父元素唯一的子元素。 - `:root`:选择文档的根元素。 - `:empty`:选择没有任何子元素(包括文本节点)的元素。 - `:target`:选择当前活动的目标元素。 - `:enabled`:选择所有启用的元素。 - `:disabled`:选择所有禁用的元素。 - `:checked`:选择所有被选中的元素。 - `:not(selector)`:选择不匹配给定选择器的元素。 ##### 5. **伪元素** 伪元素用于创建不属于文档树的元素,例如段落的第一个字母或元素的第一个子元素。 - `::first-letter`:选择元素的第一封信。 - `::first-line`:选择元素的第一行。 - `::before`:在元素的内容之前插入内容。 - `::after`:在元素的内容之后插入内容。 #### 三、总结 本文介绍了CSS中多种类型的选择器,包括类与ID选择器、元素选择器、属性选择器、伪类和伪元素等。通过这些选择器,我们可以精确控制页面的布局和样式,实现复杂的设计效果。掌握这些选择器是成为优秀前端开发人员的重要一步。