伪类的种类可以分为一下几个类别:
- 动态伪类(link/visited等)
- 目标伪类(:target)
- 语言伪类(:lang)
- UI状态伪类(disabled/checked/enabled)
- 结构化伪类(nth等)
- 对立面伪类(not。。)
本文主要讲一下动态伪类
动态伪类
定义在链接上面的伪类
- link:用来定义链接未被访问的样式
- visited:用来定义链接已经被访问过的样式(默认状态下是跟踪了用户的行为)
定义用户行为的伪类(显示顺序hover-focus-active)
- hover:用来定义用户用鼠标划过对应的元素,但是未激活显示的样式
- focus:用来定义一个元素本身具备焦点(接受键盘、鼠标、form的输入等)之后,显示的样式
- active:用来定义用户按下鼠标后,但是并未离开时候的样式,通常是左侧的鼠标
注意⚠️
- 1、定义顺序:按照link-visited-hover-active的顺序设置对应的样式,才会有效
-
2、对于div是没有focus的行为的,因为一个div没法用鼠标获得焦点,但是可以通过设置div的tabIndex。
- tabIndex为负值,表示元素可以被聚焦,但是不能通过tab键导航到
- tabIndex为0,可以通过tab键导航到,相对顺序根据DOM的元素
- tabIndex为正值,可以通过tab键导航到,它的相对顺序按照tabindex 的数值递增而滞后获焦
- 3、一个元素可能处于不同的伪类状态,比如同时处于visited和active;处于同一种状态的伪类并没有优先级
移动端和PC端的区别
- 对于hover,移动端没有hover,hover和active会合并在一起,对于键盘设备,hover这个状态不会存在
浏览器的兼容性
移动端safari浏览器不支持focus和active
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。