当前位置: 首页 > news >正文

你知道hover、active这四个伪类为什么要按顺序写吗

刨根问底,你知道:hover等4个伪类为什么要按顺序排列吗


引言

:link,:visited,:hover,:active这4个伪类大家都不陌生,4个伪类要按照LvHa这个爱恨原则来排(外国友人起的记忆方法),不然有些效果会出问题。

但是你们都想过这几个属性为什么要按顺序排吗?


:link:hover

当鼠标移动到a标签上时,会触发a标签上的:hover效果,但同时,此时的:link效果仍然存在于a标签上,既然两个效果都在a标签上起作用,那么根据css的就近原则,写在后面的css样式就覆盖了前面的效果,所以

<style>
        #b1:hover{
            color: red;
        }

        #b1:link{
            color: green;
        }

</style>

<a href="#" id="b1">点击我</a>

效果:

点击我


可以看到,由于此时link位于hover之后,所以当我们鼠标移上a标签时,发现hover效果被覆盖了,并没有变成红色,如果我们把顺序换过来,那么就会看到我们预想中的效果了

<style>

    #b2:link{
        color: green;
    }
    #b2:hover{
        color: red;
    }
</style>

<a href="#" id="b2">点击我</a>

效果:

点击我

此时,hover效果起作用了,所以我们可以得出结论一:hover要位于link之后


:link:hover:active

还是原本的思路分析,当鼠标点击时,此时:link:hover:active都在a标签上产生效果,所以还是根据就近原则,上代码

<style>

    #b3:hover{
        color: red;
    }
    #b3:active{
        color: blue;
    }
    #b3:link{
        color: green;
    }
</style>

<a href="#" id="b3">点击我</a>

点击我

由于:link放在最后面,所以不管是:hover还是:active的效果都被:link覆盖了,所以此时无论鼠标以上还是点击我们都无法看到效果


<style>
    #b4:active{
        color: blue;
    }
    #b4:link{
        color: green;
    }

    #b4:hover{
        color: red;
    }
</style>

<a href="#" id="b4">点击我</a>

点击我

:hover放到了最后,此时我们可以看到,鼠标移上:hover产生了效果,同时点击时仍然无法看到:active的效果,因为此时的:active仍被:hover覆盖了


正确的代码

<style>
    
    #b5:link{
        color: green;
    }
    #b5:hover{
        color: red;
    }
    #b5:active{
        color: blue;
    }
</style>

<a href="#" id="b5">点击我</a>

点击我

至此,我们终于看到了想要的效果,同时也得出第二个结论

hover必须位于link之后,同时active必须位于hover和link之后

所以目前我们的顺序就是link/hover/active


visited

那么visited应该放哪里呢?我们先试着把它放到最后

<style>
    
    #b6:link{
        color: green;
    }

    #b6:hover{
        color: red;
    }
    #b6:active{
        color: blue;
    }
    #b6:visited{
        color: yellow;
    }
</style>

<a href="#1" id="b6">点击我</a>

点击我

鼠标移上,点击,乍一看好像没问题呀,所有的效果都正确的产生了。但是,当我们点击完了第一次a标签,再次进行点击的时候,发现:hover:active都不起效果了,原来是因为此时:visited起了作用,同时也由于:visited写在最后,所以第二次点击的时候覆盖了之前的效果


最终的代码

<style>
    
    #b7:link{
        color: green;
    }

    #b7:visited{
        color: yellow;
    }
    
    #b7:hover{
        color: red;
    }
    #b7:active{
        color: blue;
    }
    
</style>

<a href="#2" id="b7">点击我</a>

点击我

我们改了一下位置,把:visited放到了:link之后,这时,无论是第一次点击,还是第二次点击,:visited的效果都正确的产生了,同时又没有覆盖:hover:active的效果,而最终的这个顺序,也正是我们说的LvHa原则

看完此文,希望大家能够对这4个伪类有更深刻的认识,同时也能理解它们排列的顺序,其实如果理解了这几个伪类为什么这样排之后,就不再需要借助LoHa这样的窍门来记忆了,理解才是最好的记忆方法。

转载于:https://www.cnblogs.com/jelly7723/p/5620929.html

相关文章:

  • 用CHttpFile实现简单的GET/POST数据【转】
  • 《入门经典》——6.27
  • Distributed systems theory for the distributed systems engineer
  • python 学习 异常处理
  • c# 定时器
  • 图论(二分图最大权独立点集):COGS 2051. 王者之剑
  • flow.ci + Github + Slack 一步步搭建 Python 自动化持续集成
  • pct xcode7
  • 高并发性能调试经验分享
  • java中String类、StringBuilder类和StringBuffer类详解
  • 如何确认软件测试结束的呢?
  • SpringMVC(一)
  • 【转】web移动端一些常用知识
  • CSS Hack是什么意思
  • c++中while(cinstr)和ctrl z的相关问题探讨
  • [case10]使用RSQL实现端到端的动态查询
  • 【前端学习】-粗谈选择器
  • 2017届校招提前批面试回顾
  • CSS实用技巧干货
  • ES10 特性的完整指南
  • java8 Stream Pipelines 浅析
  • javascript 哈希表
  • php的插入排序,通过双层for循环
  • Python十分钟制作属于你自己的个性logo
  • vue-router 实现分析
  • 阿里云购买磁盘后挂载
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 机器学习中为什么要做归一化normalization
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 容器服务kubernetes弹性伸缩高级用法
  • 学习ES6 变量的解构赋值
  • 学习笔记TF060:图像语音结合,看图说话
  • 整理一些计算机基础知识!
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #includecmath
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (003)SlickEdit Unity的补全
  • (12)目标检测_SSD基于pytorch搭建代码
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (floyd+补集) poj 3275
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (Ruby)Ubuntu12.04安装Rails环境
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (三分钟)速览传统边缘检测算子
  • (十) 初识 Docker file
  • (四)linux文件内容查看
  • (转)http协议
  • ***测试-HTTP方法
  • *p++,*(p++),*++p,(*p)++区别?
  • .mysql secret在哪_MySQL如何使用索引
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证