关于css伪元素和伪类看这一篇就够了

css伪类和伪元素在页面开发中经常使用到,但相对来说比较生僻,每次都要去查下文档,今日将其进行总结整理想对比记忆效果更好。

css伪类用于向某些选择器添加特殊的效果。
常用的伪类有如下

:link, :visited, :hover, :focus, :active, :first-child, :lang
css3新增的伪类:
:last-child, :only-child, :first-of-type, :last-of-type, :only-of-type, :nth-child(n), :nth-last-child(n), :nth-of-type(n), :nth-last-of-type(n), :root, :empty, :target, :enabled, :disabled, :checked, :not(selector)

其含义和使用例子;
a{

:link    a 标签(默认)

:hover   鼠标放在a标签上时

:active   鼠标点a标签时

:visited   a标签被访问过

}

input{

:focus    鼠标点进input框内
          
          :enabled   匹配已经启用的表单元素(默认)

:disabled   匹配禁用的表单元素

:checked   匹配被选中的表单元素

}

:root 匹配根元素即html

:not§ 选择不是p的所有元素

p:empty 选择没有子节点的p,包括空格

:target 用来修改被点击的a标签所对应的锚点的样式

:lang(en) 选择属性lang的值为en的元素

:first-of-type 选择每个父容器内的第一个p元素

:last-of-type 选择每个父容器内的倒数第一个p元素

:nth-of-type div:nth-of-type(2) //选择每个父容器内的第二个div元素

:nth-last-of-type div:nth-last-of-type (2)//选择每个父容器内的倒数第二个div元素
div:only-of-type 选择每个只有一个div元素的父容器内的div元素(父元素可包含多个其他元素)

:only-child div:only-child 选择每个有且仅有一个div元素的父容器内的div元素

:first-child div:first-child 选择每个父容器中的第一个且为div的子元素

:last-child div:last-child//选择每个父容器中的最后一个且为div的子元素

:nth-child(n) div:nth-child(2)//选择每个父容器中的第二个且为div的子元素

:nth-last-child(n) => div:nth-last-child(2) //选择每个父容器中的倒数第二个且为div的子元素

css伪元素用于向某些选择器设置特殊效果。
css3规定伪元素由两个冒号开头作为标示::,可能会改变dom结构,创建虚拟dom。
::first-letter, ::first-line, ::before, ::after
css3新增的伪元素
::selection

使用说明:
::before,::after 这两个伪类会在选择的元素的前面和后面创建虚拟dom 通常和content联合shiyong
::first-letter,first-line 这两个伪类只要用于改变选中元素内文本节点的第一个字母,第一行的样式
::selection 用于修改用户用鼠标选中的文本的样式,仅限于color、background、cursor、outline的修改。

css伪类和伪元素的区别

为了避免大家混淆伪类和伪元素,css3中的标准规定伪类使用单冒号“:” ,伪元素使用双冒号“::”,但在此之前都使用的单冒号“:”,所以为了保证兼容伪元素两种使用方法都是可以的。
伪类可以叠加使用,而伪元素在一个选择器中只能出现一次,并且只能出现在末尾。
.box:first-child:hover { color: #000;} //使用伪类
.box:first-letter { color: #000;} //使用伪元素
.box:first-letter:hover { color: #000;} //错误写法

css伪类和伪元素的优先级

伪类与类优先级相同,伪元素与标签优先级相同。
!important > 行内样式> ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性。
还有一个简单的计算方法,内联样式表的权值为 1000,ID 选择器的权值为 100,Class 类选择器的权值为 10,HTML 标签选择器的权值为 1,权值实际并不是按十进制计算的,用数字表示只是说明思想,我们可以把选择器中规则对应做加法,比较权值大小,权值越大优先级越高,如果权值相同前面的样式会被后面的覆盖。

借鉴自:https://www.jianshu.com/p/7d86345ac877
https://www.cnblogs.com/muzs/p/10484174.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值