乐趣区

CSS伪类动态伪类linkvisitedhoveractivefocus

伪类的种类可以分为一下几个类别:

  • 动态伪类(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

 

退出移动版