选择器
基本选择器
| 选择器 | 示例 | 描述 |
|---|
| .class | .intro | 选择 class="intro" 的所有元素 |
| #id | #firstname | 选择 id="firstname" 的所有元素 |
| * | * | 选择所有元素 |
| element | p | 选择所有p元素 |
| element, element | div, p | 选择所有div元素和所有p元素 |
| element + element | div + p | 选择紧接在div元素之后的所有p元素 |
结构选择器
| 选择器 | 示例 | 描述 |
|---|
| element element | div p | 选择div内部的所有p |
| element > element | div > p | 选择父元素为div的所有p |
| element + element | div + p | 选择紧接在div之后的p |
| element ~ element2 | p ~ ul | 选择p同级并在p后面的所有ul |
属性选择器
| 选择器 | 示例 | 描述 |
|---|
| [attribute] | [target] | 带有 target 属性所有元素 |
| [attribute=value] | [target=_blank] | targe 属性 等于"_blank" 的所有元素 |
| [attribute~=value] | [title~=mkimq] | title 属性包含单词 "mkimq" 的所有元素 |
| [attribute|=value] | [title|=hd] | title 属性值为 "hd"的单词,或hd-cms 以-连接的的独立单词 |
| [attribute*=value] | a[src*="mkimq"] | src 属性中包含 "mkimq" 字符的每个 元素 |
| [attribute^=value] | a[src^="https"] | src 属性值以 "https" 开头的每个 元素 |
| [attribute$=value] | a[src$=".jpeg"] | src 属性以 ".jpeg" 结尾的所有 元素 |
伪类选择器
| 状态 | 示例 | 说明 |
|---|
| :link | a:link | 选择所有未被访问的链接 |
| :visited | a:visited | 选择所有已被访问的链接 |
| :hover | a:hover | 鼠标移动到元素上时 |
| :active | a:active | 点击正在发生时 |
| :focus | input:focus | 选择获得焦点的 input 元素 |
| :root | :root | 选择文档的根元素即html。 |
| :empty | p:empty | 选择没有子元素的每个p(包括文本节点) |
| :first-child | p:first-child | 选择属于父元素的第一个子元素的每个元素 |
| :last-child | p:last-child | 选择属于其父元素最后一个子元素每个元素 |
| :first-of-type | p:first-of-type | 选择属于其父元素的首个元素的每个元素 |
| :last-of-type | p:last-of-type | 选择属于其父元素的最后元素的每个元素 |
| :only-of-type | p:only-of-type | 选择属于其父元素唯一的元素的每个元素 |
| :only-child | p:only-child | 选择属于其父元素的唯一子元素的每个元素 |
| :nth-child(n) | p:nth-child(2) | 选择属于其父元素的第二个子元素的每个元素 |
| :nth-child(odd) | p:nth-child(odd) | 选择属于其父元素的奇数元素 |
| :nth-child(even) | p:nth-child(even) | 选择属于其父元素的偶数元素 |
| :nth-of-type(n) | p:nth-of-type(2) | 选择属于其父元素第二个元素的每个元素 |
| :nth-last-child(n) | p:nth-last-child(2) | 同上,从最后一个子元素开始计数 |
| :nth-last-of-type(n) | p:nth-last-of-type(2) | 同上,但是从最后一个子元素开始计数。 |
| :not(selector) | :not(p) | 选择非元素的每个元素 |
表单伪类
| 选择器 | 示例 | 说明 |
|---|
| :enabled | input:enabled | 选择每个启用的 input 元素 |
| :disabled | input:disabled | 选择每个禁用的 input 元素 |
| :checked | input:checked | 选择每个被选中的 input 元素 |
| :required | input:required | 包含required属性的元素 |
| :optional | input:optional | 不包含required属性的元素 |
| :valid | input:valid | 验证通过的表单元素 |
| :invalid | input:invalid | 验证不通过的表单 |
字符伪类
| 状态 | 示例 | 说明 |
|---|
| ::first-letter | p:first-letter | 选择每个元素的首字母 |
| ::first-line | p:first-line | 选择每个元素的首行 |
| ::before | p:before | 在每个元素的内容之前插入内容 |
| ::after | p:after | 在每个元素的内容之后插入内容 |
元素权重
元素会被多个样式一层层作用,这就是层叠样式表的来源。如果多个样式做用在元素上就会产生优先级权重问题。
使用类、ID、伪类都有不同的权重,具体应用哪条规则要看权限大小。
相同权重的规则应用最后出现的 可以使用 !important 强制提升某个规则的权限
| 规则 | 粒度 |
|---|
| ID | 0100 |
| class,类属性值 | 0010 |
| 标签,伪元素 | 0001 |
| * | 0000 |
| 行内样式 | 1000 |