CSS水平导航条——XHTML+CSS导航条

横版:
css代码

CSS中值得注意的是以下几点:
  • 让ul 里的 li 浮动到左侧。ul也要浮动。a的浮动是为了修复IE/MAC的bug。
  • a的left top背景是分割线。其中.first a 没有背景。
  • link:连接平常的状态 active:连接被按下的时候 visited:连接被访问过之后 hover:鼠标放到连接上的时候

#clear { clear:both;}
ul {
    margin: 0;
    padding: 0;
    float: left;
    width: 720px;
    background: #FAA819 url(images/mainNavBg.gif) repeat-x;
    list-style: none;
    text-transform: uppercase;
}
ul li {
         float: left;
}   
ul a {
         padding: 0 2em;
         line-height: 2.1em;
         background: url(images/mainNavBorder.gif) repeat-y left top;
         text-decoration: none;
         color: #fff;
         float: left;
         display: block;
}
ul a:link {
    color: yellow;
}
ul a:visited {
    color: black;
}
ul a:hover {
    color: green;
}
ul a:active{
    color: blue;
}
ul .first a {
    background: none;
}


html代码
<ul>
    <li class="first selected"><a href="#">Home</a></li>	
    <li><a href="#">About</a></li>	
    <li><a href="#">XHTML</a></li>	
    <li><a href="#">CSS</a></li>	
    <li><a href="#">Blueidea</a></li>	
    <li><a href="#">ALA</a></li>
</ul>


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 .






你可能感兴趣的:(css,浏览器,XHTML,IE,活动)