在CSS中,a标签有4种伪类,分别为:

a:link, a:visited, a:hover, a:active

对其稍有了解的前端er都知道,4个伪类是有固定顺序的(LVHA),否则很容易出现预期之外的效果。

大部分人,都会用自己的方式,对这个顺序死记硬背。

熟记顺序,无疑是写样式时最快捷的方法,牛人们的记忆方法也是五花八门。

我见过有酱婶的:lv的包包hao,这倒是实话。

比较奇葩的,我在baidu上输入lvha,竟然自动关联出鹿晗。

还有歪果仁们,则戏称LvHa为爱恨原则。

记是记住了,但是疑惑也就来了,我知道这顺序一定是有说法的,本着往祖坟上刨的原则,下面就来探究一下,到底为什么。

首先,我再把4个伪类的效果唠叨一遍:

a:link是a链接的默认样式,即a链接未被点击过时a标签内容在页面上呈现的视觉效果。

a:visited是a链接被访问过后的样式,即a链接被点击后a标签内容在页面上呈现的视觉效果。

a:hover是鼠标移动到a链接上面时的样式,即鼠标悬浮在a标签内容上方时,其在页面上呈现的视觉效果。

a:active是鼠标点击a链接时的样式,即从鼠标按键按下到鼠标按键弹起的过程中,a标签内容在页面上呈现的视觉效果。

我们来分析一下,一个a链接要发生所有的样式,是怎样一个过程:

  • 首次进入页面时,a链接未被点击过,应该呈现a:link的效果,
  • 当鼠标移动到a链接上时,应该呈现a:hover的效果,
  • 当鼠标点击a链接时,应该呈现a:active的效果,
  • 最后,a链接应该呈现a:visited的效果。
如果,a:link 写在 a:hover 之后,依据 CSS 层叠特性,a:link 将覆盖 a:hover 样式,鼠标移动到a链接上时a:hover将不会生效,这不是我们预期的效果,所以 a:link 要写在 a:hover 前。

如果,a:link 写在 a:active 之后,同理,a:link 覆盖了 a:active 样式,鼠标点击a链接时,a:active 将不会生效,所以,a:link 要写在 a:active 前。

如果,a:hover 写在 a:active 之后,那么,a:hover 讲覆盖 a:active 样式,要想点击a链接,一定会先经过鼠标移动到a链接之上这个步骤,所以,当点击a链接时,a:active 将不会生效,所以,a:hover 要写在 a:active 前。

而 a:visited,跟 a:link 类似,它发生在 a:link 之后,a:hover 和 a:active 之前,它的位置,只能在第二位了。

以上便是我们分析出的lvha顺序的由来。

希望通过这简短的文章,能让一些死记硬背的前端er理解,为什么要按照lvha顺序来写样式。因为在笔者的认知里,理解是最好的记忆方法。

各位看官,您是否赞同我的认知呢?

理解是最好的记忆方法 之 CSS中a链接的4个伪类为何有顺序的更多相关文章

  1. 理解是最好的记忆方法 之 CSS中a链接的④个伪类为何有顺序

    理解是最好的记忆方法 之 CSS中a链接的④个伪类为何有顺序 在CSS中,a标签有4种伪类,分别为: a:link, a:visited, a:hover, a:active 对其稍有了解的前端er都 ...

  2. CSS躬行记(2)——伪类和伪元素

    一.伪类选择器 伪选择器弥补了常规选择器的不足,能够实现一些特殊情况下的样式,例如在鼠标悬停时或只给字符串中的第一个字符指定样式.与类选择器类似,可以从HTML元素的class属性中查看到,但伪选择器 ...

  3. CSS样式学习-3、轮廓、伪类/元素、display-flex布局

    一.轮廓 outline绘制于元素周围的一条线,位于边框边缘外围. 属性规定元素轮廓的样式.颜色.宽度. outline-width轮廓宽度,属性:thin细轮廓.medium中等(默认值).thic ...

  4. CSS 高级:尺寸、分类、伪类、伪元素

    CSS 尺寸:允许你控制元素的高度和宽度.同样,还允许你增加行间距. CSS 分类:允许你控制如何显示元素,设置图像显示于另一元素中的何处,相对于其正常位置来定位元素,使用绝对值来定位元素,以及元素的 ...

  5. CSS 选择器之基本选择器 属性选择器 伪类选择器

    CSS 选择器 常见的选择器列表图 CSS选择器笔记 基本选择器 通配符选择器(*) 元素选择器(E) 类选择器(.className)    所有浏览器都支持类选择器,但多类选择器(.classNa ...

  6. CSS链接四种状态注意顺序、UI伪类选择器的顺序

    css定义超链接是要有先后顺序的.否则,可能会出现某个或某几个样式不起作用的bug.例如:visited与hover顺序颠倒了,则不能显示hover和active的样式了. 正确的顺序: a:link ...

  7. CSS入门(定位之浮动定位、伪类之鼠标悬停、光标修改和透明度修改和列表样式)

    一.定位 所为定位,实际上就是定义元素框相对于其正常位置,应该出现在哪儿 定位就是改变元素在页面上的默认位置 分类: 普通流定位(元素默认的定位方式) 浮动定位 相对定位 绝对定位 固定定位 1.普通 ...

  8. css宽度+字体+颜色+边框+文本+光标+伪类选择器

    常用属性: width:宽 height:高 min-width:最小宽度 :可以设置如果宽度变小了,有个滑动效果(常常在我们布局的过程中需要去设置) min-height;最小高度 max-widt ...

  9. CSS 属性 :before && :after的用法,伪类和伪元素的区别

    一::before && :after的用法 :before 如同对伪元素的名称一样,:before 是用来给指定的元素的内容前面插入新的内容.举例说明: .before:before ...

随机推荐

  1. linux后台运行命令

    Ctrl+z/bg/nohup/setsid/& screen 区别待续

  2. Dapper用法小记

    https://github.com/StackExchange/Dapper dapper in 查询 string sql = "SELECT * FROM SomeTable WHER ...

  3. 服务器上使用matplotlib.pyplot绘图

    在linux服务器端执行python脚本,有时候需要画图,但是linux没有GUI界面,因此需要在导入matplotlib.pyplot库之前先执行 import matplotlib as mpl ...

  4. Atitit.协议的转换smb2http 原理

    Atitit.协议的转换smb2http 原理 1. 协议的转换原理 stream的转换.. 2. 常用协议转换的情形 android通过SMB访问局域网共享文件 作者::  ★(attilax)&g ...

  5. Linux下查看分区UUID

    有两种方法: 1.#:blkid 2.ls -l /dev/disk/by-uuid/

  6. Unity3D - 使用TexturePacker打包图集以及NGUI对旋转sprites的支持

    作者:EnigmaJJ 博客地址:http://www.cnblogs.com/twjcnblog/ 在Unity中使用NGUI时,为了减少draw call,我们会将美术用到的小图打成一张图集,如图 ...

  7. DataUml Design 介绍11 - DataUML 1.5版本功能(支持无Oracle客户端连接,有图有真相)

    DataUML Design1.5版本主要更新内容包括: 1.优化数据库登录界面: 2.查询分析器智能提示: 3.优化数据库浏览插件,数据库登录组件,支持历史记录缓存: 4.支持无Oracle客户端连 ...

  8. tomcat遇到版本问题

    1.Dynamic web module 2.J2EE  Web modules 3.Tomcat version 4.<web-app xmlns:xsi="http://www.w ...

  9. sscanf()的用法

    头文件 #include 定义函数 int sscanf (const char *str,const char * format,........); 函数说明             sscanf ...

  10. 程序运行缺少MSVCR110.dll

    Download Visual C++ Redistributable for Visual Studio 2012 Update 4 from Official Microsoft Download ...