如何制作CSS水平导航菜单?

时间:2011-02-01 06:20:02

标签: html css css-sprites menubar

我需要根据以下样式制作CSS导航:

渴望了解

enter image description here

以下是我所做的设计: -

1)展览A - 使用精灵制作

enter image description here

注意:忽略菜单项的排列

优点:运作良好,具有理想的外观

缺点:如果需要添加其他菜单项,则必须为该特定菜单项手动制作另一个图像。即。不可扩展

2)图表B

enter image description here

优点:非常具有可扩展性。如果必须添加另一个菜单项,则无需新的额外图像。只需要在html代码中输入菜单名称。

缺点:悬停效果与所需外观不同。

我的要求

是否使用 Exhibit B ,以及来自 Exhibit A 的悬停效果,但是没有时必须在菜单项中添加额外的图像已创建(这是 Exhibit A 中发生的情况,尽管它具有所需的悬停效果)。

我的方法:

  1. 开始使用附件B
  2. 对于单个菜单项的情况下的悬停效果,请使用3张图像
  3. a)最左边left most edge

    b)重复中间区域repeating slice of the middle area

    的切片

    c)最右边right most edge

    这是对的吗?

    这可能吗?

    有更好的方法吗?指向tute的链接没问题。

    由于


    1]图表A的css代码

    @charset "UTF-8";
    * {
    margin:0;
    padding:0;
    list-style: none;
    }
    
    ul {
    list-style: none;
    margin: 0;
    padding: 0;
    }
    
    img {
        border: none;
    }
    
    .clear {
    clear:both;
    }
    
    .nav-container {
    width: 960px;
    }
    #navMenu{
    display: inline;
    margin: 0;
    padding: 0px;
    position: relative;
    z-index: 5;
    }
    #navMenu li{
    float: left;
    display: inline;
    }
    
    #navMenu li.navRepeat{
    float: left;
    display: inline;
    background-image:url("../images/navigation_repeat.gif");
    width:425px;
    height:40px;
    }
    
    #navMenu li.navRepeatEnd{
    float: right;
    display: inline;
    background-image:url("../images/navigation_repeat_end.gif");
    width:1px;
    height:40px;
    }
    
    a.navReservations{
    display:block;
    float:left;
    width:89px;
    height:40px;
    background-repeat:no-repeat;
    background: url("../images/reservations.gif")
    }
    
    a.navReservations:hover{
    background: url("../images/reservations.gif") 0 40px;
    }
    
    a.navRentals{
    display:block;
    float:left;
    width:62px;
    height:40px;
    background-repeat:no-repeat;
    background: url("../images/rentals.gif")
    }
    
    a .navReservations {
    float: left;
    display: inline;
    height: 100px;
    width: 400px;
    }
    
    a.navRentals:hover{
    background: url("../images/rentals.gif") 0 40px;
    }
    
    a.navTariffs{
    display:block;
    float:left;
    width:59px;
    height:40px;
    background-repeat:no-repeat;
    background: url("../images/tariffs.gif")
    }
    
    a.navTariffs:hover{
    background: url("../images/tariffs.gif") 0 40px;
    }
    
    a.navFleet{
    display:block;
    float:left;
    width:64px;
    height:40px;
    background-repeat:no-repeat;
    background: url("../images/fleet.gif")
    }
    
    a.navFleet:hover{
    background: url("../images/fleet.gif") 0 40px;
    }
    
    a.navTools{
    display:block;
    float:left;
    width:56px;
    height:40px;
    background-repeat:no-repeat;
    background: url("../images/tools.gif")
    }
    
    a.navTools:hover{
    background: url("../images/tools.gif") 0 40px;
    }
    
    a.navReports{
    display:block;
    float:left;
    width:71px;
    height:40px;
    background-repeat:no-repeat;
    background: url("../images/reports.gif")
    }
    
    a.navReports:hover{
    background: url("../images/reports.gif") 0 40px;
    }
    
    a.navSystem-Management{
    display:block;
    float:left;
    width:133px;
    height:40px;
    background-repeat:no-repeat;
    background: url("../images/system_management.gif")
    }
    
    a.navSystem-Management:hover{
        background: url("../images/system_management.gif") 0 40px;
    }
    

    2]图表B的css代码

    #navigation {
    width: 959px;
    height: 36px;
    margin: 0;
    padding: 0;
    background-image: url(images/navigation-bg.gif);
    background-repeat: no-repeat;
    background-position: left top;
    border: 1px solid #CCC;
    } 
    #navigation ul {
    list-style: none;
    margin: 0;
    padding: 0;
    } 
    #navigation ul li {
    display: inline;
    margin: 0px;
    } 
    #navigation ul li a {
    height:27px;
    display: block;
    float: left;
    color: #000;
    text-decoration: none;
    font-family: Arial;
    font-size: 12px;
    font-weight: bold;
    background-image: url(images/navigation-separator.gif);
    background-repeat: no-repeat;
    background-position: right center;
    padding-top: 6px;
    padding-right: 15px;
    padding-left: 15px;
    vertical-align: 10%;
    padding-bottom: 4px;
    } 
    
    #navigation ul li a:hover {
    color:#FFF;
    background-image: url(images/navigation-hover.gif);
    background-repeat: repeat-x;
    background-position: left top;
    }
    
    #navigation ul li#active a {
    color:#363636;
    background: url(images/navigation-hover.png) repeat-x left top;
    }
    

1 个答案:

答案 0 :(得分:1)

从技术上讲,你只需要两个精灵,一个宽的左侧+标签主体和一个右侧。宽,我的意思是,400px或一些任意宽的尺寸,你没有预料到击中。你交易kb易于使用。您可以通过标记来完成此操作:

<ul class="list">
    <li><a href="#">Text</a></li>
</ul>

与css一样:

ul.list
{
    list-style-type: none;
    margin: 0;
}
ul.list li 
{
    float: left;
    background: url(leftpluswide.png) top left no-repeat;
}
ul.list li a
{
    background: url(right.png) top right no-repeat;
}

唯一需要注意的是,由于right.png将与li的背景重叠,因此您需要确保它没有任何透明度。

另外,为了完整起见,您可能需要对li和a应用高度(可能需要显示:内联块或行高)以使一切顺利排列。