zoukankan      html  css  js  c++  java
  • 【经验】在CSS中定义a:link、a:visited、a:hover、a:active顺序

    曾经用CSS一直没有遇到过这个问题。在近期给一个本科同学做的项目里面。出现一些问题。搜索引擎查了一些站点和资料,发现非常多人问到这个问题。给出的结果我试了试,大部分都不对。
     
    给出我试的顺序,可能会对大家有一些帮助:

    复制代码
    代码
    A:link {
     color
    : #000000;
     TEXT-DECORATION
    : none
    }
    A:visited 
    {
     COLOR
    : #000000;
     TEXT-DECORATION
    : none
    }
    A:hover 
    {
     COLOR
    : #ff7f24;
     text-decoration
    : underline;
    }
    A:active 
    {
     COLOR
    : #ff7f24;  
     text-decoration
    : underline;
    }
    复制代码

     

     
    今天看到一位匿名朋友的问题,又去查了一些资料,这个人讲的很透彻:引自灵眸●第一炉沉香博客
     
    a :link、a:hover、a:visited这几个元素,定义CSS时候的顺序不同,也会直接导致链接显示的效果不同。
    我想,原因就在于浏览器解释CSS时遵循的“就近原则”。

    举例来说:
    我想让未訪问链接颜色为蓝色,活动链接为绿色,已訪问链接为红色:
    • 第一种情况:我定义的顺序是a:visited、a:hover、a:link,这时会发现:把鼠标放到未訪问过的蓝色链接上时。它并不变成绿色,仅仅有放在已訪问的红色链接上,链接才会变绿。
    • 另外一种情况:我把CSS定义顺序调整为:a:link、a:visited、a:hover,这时,不管你鼠标经过的链接有没有被訪问过,它都会变成绿色啦。


    这是由于,一个鼠标经过的未訪问链接同一时候拥有a:link、a:hover两种属性,在第一种情况下,a:link离它近期,所以它优先满足a:link。而放弃a:hover的反复定义。
    在另外一种情况,不管链接有没有被訪问过。它首先要检查是否符合a:hover的标准(即是否有鼠标经过它),满足。则变成绿色,不满足。则继续向上查找。一直找到满足条件的定义为止。


    一句话:在CSS中。假设对于同样元素有针对不同条件的定义。宜将最一般的条件放在最上面,并依次向下,保证最以下的是最特殊的条件


    这样,浏览器在显示元素时。才会从特殊到一般、逐级向上验证条件。才会使你的每个CSS语句都起到效果。


    当然,假设有益打乱顺序,也会造成一些特殊的效果。比方,能够为链接制造出下划线颜色与文字颜色的差异。



    近日突然发现,原来这个CSS问题早已有高人提出啦。还是个老外呢。

    他给总结了一个便于记忆的“爱恨原则”(LoVe/HAte),即四种伪类的首字母:LVHA。
    再反复一遍正确的顺序:a:link,a:visited,a:hover,a:active .

     
     
     
     

    最后经验补充:

    1.鼠标经过的“未訪问链接”同一时候拥有a:link、a:hover两种属性,后面的属性会覆盖前面的属性定义。

    2.鼠标经过的“已訪问链接”同一时候拥有a:visited、a:hover两种属性,后面的属性会覆盖前面的属性定义

     

    所以说,a:hover定义一定要放在a:link、a:visited的后面,,,

     

     

     

     

     

  • 相关阅读:
    LeetCode Path Sum II
    LeetCode Longest Palindromic Substring
    LeetCode Populating Next Right Pointers in Each Node II
    LeetCode Best Time to Buy and Sell Stock III
    LeetCode Binary Tree Maximum Path Sum
    LeetCode Find Peak Element
    LeetCode Maximum Product Subarray
    LeetCode Intersection of Two Linked Lists
    一天一个设计模式(1)——工厂模式
    PHP迭代器 Iterator
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6797768.html
Copyright © 2011-2022 走看看