【CSS】为什么a标签的伪类选择器要注意书写顺序?

微信订阅号:Rabbit_svip



<a>标签相关的伪类有很多,但最常见(也是初学者最先接触到)的有以下4个。

  1. :link
  2. :visited
  3. :hover
  4. :active


它们的大概作用分别如下(详细作用以后逐一探讨,这次的主题主要和css的优先级有关)

a:link

选取用户未访问的<a>标签,而且鼠标没有悬停在其上。

a:visited

选取已被访问过的<a>标签。

a:hover

选取鼠标悬停在其上的<a>标签。

a:active

选取用户正在点击的<a>标签。

大多数前端开发者在刚接触css时,和<a>标签有关的伪类选择器(也有的教材称之为“动态伪类选择器”)是以上4个。除了学习到以上4个伪类选择器的作用外,通常还会学到一个口诀(“LoVe/HAte”,也就是“爱/恨”。也可能是别的记忆口诀),以此来帮助记忆使用顺序。

那么到底为什么一定要按照这个顺序来写呢(如果都需要在这些场景下使用不同样式的话)?

要弄清楚这个顺序,首先要熟悉css优先级的规则。从上面的写法来看,都是由一个元素选择器和一个伪类选择器组成,所以优先级都是相同的。

因此也延伸出另一个知识点:浏览器如何处理冲突的样式?

浏览器遵循三个步骤:来源优先级源码顺序

这里假设来源相同,又因为优先级相同(上面已经说了),所以最后浏览器考虑的是源码顺序

所以在开发的时候也要从使用的角度来思考。

其实 a:linka:visited 这两个谁写在前面都没关系。

因为 a:hover 的作用是鼠标经过才生效,所以 a:linka:visited 必须写在 a:hover 前面。

a:active 的作用是点击时才生效,而点击之前鼠标是必须放到<a>标签上的,所以在触发 a:active 之前,肯定先触发 a:hover 。如果 a:active 写在 a:hover 前面,那么无论怎么点击,都只会触发 a:hover 的效果。因为它们优先级相同,所以浏览器采用源码顺序的规则。

由于“LoVe/HAte”比较有记忆点,所以现在默认都是用 a:link -> a:visited -> a:hover -> a:active 这个顺序。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值