《深入解析CSS》中有这样一句话
伪类选择器(如:hover)和属性选择器(如[type="input"])与一个类选择器的优先级相同。通用选择器(*)和组合器(>、+、~)对优先级没有影响。
也就是说对于以下四个伪类,没有优先级之分。
如果某一个链接同时处于两个或者以上的状态,并且状态对应的样式产生了冲突,后出现的样式就会覆盖掉前面的样式。
a:link {
color: blue;
text-decoration: none;
}
a:visited {
color: purple;
}
a:hover {
text-decoration: underline;
}
a:active {
color: red;
}
那么为什么需要遵循LOHA(link visited\hover active)顺序呢?分析如下:
:link 这两个伪类是固定的状态(:link是最原始的状态,:visited是被点击过后就产生,这两个状态产生之后是一直存在的)
:hover :active 不是固定的,需要鼠标去触发,并且触发完毕之后会消失。
所以:link作为最原始的状态,它的样式应该放在最前面,:visited紧随其后 。
而对于:hover以及:active,设想一下如果:active在:hover之前,鼠标放到链接上去的时候,直接显示:hover的颜色。点击链接的时候,由于:hover在:active下面,会覆盖active的颜色,这并不符合我们的需求,所以:active应该在:hover之后。
综上,由于伪类的优先级一致,后出现的样式会覆盖前面的样式,所以链接的样式应该遵循LOHA顺序
(方便记忆:love hate —> link visited hover active)
标签:hover,样式,选择器,link,active,visited,链接,LOHA From: https://www.cnblogs.com/KazooTTT/p/16945591.html