来源: 吾推网  发布时间: 2018-03-31   次浏览
html部分:
<a href="#" id="a">test</a>
css部分(正确顺序):
body{
   background: #000;
}
(顺序一)
a:link{
   color:blue
}
a:visited{
   color:green
}
a:hover{
   color:pink;
}
a:active{
   color:red;
}
首先我们需要知道一点
a伪类的权重是2和class一样
接下来我们分布了解下这4个伪类的意思:
        a:link 表示未被访问的链接 (在页面上写了,还没有访问过)
        a:visited 表示已经被访问过后的链接 (访问过了,注:判断是否访问过,是以浏览器的浏览记录为依据)
        a:hover 表示鼠标指针位于其上的链接
        a:active 表示活动链接 (当鼠标点下时的链接)
以上顺序是正确的顺序,所以肯定是没什么问题的
开始的时候是蓝色,因为页面没访问过
鼠标移上去是粉色
点下去不抬起来的时候是红色
抬起来后是绿色,因为已经访问过了
好接下来让我们把顺序打乱一下
body{
background: #000;
}
(顺序二)
a:visited{
color:green
}
a:hover{
color:pink;
}
a:active{
color:red;
}
a:link{
color:blue
}
现在我把link伪类放最后了
这下我们再把鼠标放上去
会惊奇的发现
耶?怎么没效果了,
一直是蓝色
原因就是
这个顺序问题
为了形象点形容
我们打个比方
假设link是老大最高的一个
visited是老二第二高的一个
hover是老三第三高的一个
active是老四第四高的一个
现在让他们站成一排直线
当他们最高的站最后面
最矮的站最前面的时候
我们是不是能看到所有人的脸
当他们顺序一打乱
比如像顺序二
把老大放最前面了
是不是就会把后面全部人的脸都挡住了
只能看到老大蓝色的脸
好了,顺序问题就解释到这
第二个问题权重问题
我们前面说过
伪类的权重和class一样
现在我们把样式改下
body{
   background: #000;
}
#a{
  color:white
}
a:link{
   color:blue
}
a:visited{
   color:green
}
a:hover{
   color:pink;
}
a:active{
   color:red;
}
现在我们会发现
伪类的顺序无论怎么换
都没有效果
永远是白色
这是为什么呢?
因为我设置了
#a{
  color:white
}
它的权重是最高的
所以a永远都是白色