CSS伪类——动态伪类(link/visited/hover/active/focus)

本文介绍了CSS中的动态伪类,包括link(未访问)、visited(已访问)、hover(鼠标悬停)、focus(获取焦点)和active(活动状态)。详细阐述了它们的定义和使用,特别提到了定义顺序、移动端与PC端的区别以及浏览器兼容性问题。还讨论了元素焦点行为和tabIndex属性在不同设备上的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

参考资料

1、动态伪类
2、伪类的兼容性

转载于:https://juejin.im/post/5cf39a976fb9a07ebd48bf16

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值