选择器

基本选择器

警告

不建议使用*选择器

选择器示例描述
.class.intro选择 class="intro" 的所有元素
#id#firstname选择 id="firstname" 的所有元素
**选择所有元素
elementp选择所有p元素
element, elementdiv, p选择所有div元素和所有p元素
element + elementdiv + p选择紧接在div元素之后的所有p元素

结构选择器

选择器示例描述
element elementdiv p选择div内部的所有p
element > elementdiv > p选择父元素为div的所有p
element + elementdiv + p选择紧接在div之后的p
element ~ element2p ~ 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" 结尾的所有 元素

伪类选择器

状态示例说明
:linka:link选择所有未被访问的链接
:visiteda:visited选择所有已被访问的链接
:hovera:hover鼠标移动到元素上时
:activea:active点击正在发生时
:focusinput:focus选择获得焦点的 input 元素
:root:root选择文档的根元素即html。
:emptyp:empty选择没有子元素的每个p(包括文本节点)
:first-childp:first-child选择属于父元素的第一个子元素的每个元素
:last-childp:last-child选择属于其父元素最后一个子元素每个元素
:first-of-typep:first-of-type选择属于其父元素的首个元素的每个元素
:last-of-typep:last-of-type选择属于其父元素的最后元素的每个元素
:only-of-typep:only-of-type选择属于其父元素唯一的元素的每个元素
:only-childp: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)选择非元素的每个元素

表单伪类

选择器示例说明
:enabledinput:enabled选择每个启用的 input 元素
:disabledinput:disabled选择每个禁用的 input 元素
:checkedinput:checked选择每个被选中的 input 元素
:requiredinput:required包含required属性的元素
:optionalinput:optional不包含required属性的元素
:validinput:valid验证通过的表单元素
:invalidinput:invalid验证不通过的表单

字符伪类

状态示例说明
::first-letterp:first-letter选择每个元素的首字母
::first-linep:first-line选择每个元素的首行
::beforep:before在每个元素的内容之前插入内容
::afterp:after在每个元素的内容之后插入内容

元素权重

元素会被多个样式一层层作用,这就是层叠样式表的来源。如果多个样式做用在元素上就会产生优先级权重问题。

使用类、ID、伪类都有不同的权重,具体应用哪条规则要看权限大小。

相同权重的规则应用最后出现的 可以使用 !important 强制提升某个规则的权限

规则粒度
ID0100
class,类属性值0010
标签,伪元素0001
*0000
行内样式1000
贡献者: mankueng