Как сделать CSS горизонтальное меню навигации? - PullRequest
0 голосов
/ 01 февраля 2011

Мне нужно сделать навигацию css в соответствии со следующим стилем:

Желаемый вид

enter image description here

Ниже приведены проекты, которыеЯ сделал: -

1) Приложение А - сделано с использованием спрайтов

enter image description here

Примечание: Игнорировать расположениепункты меню

Плюсы: хорошо работает и имеет желаемый вид

Минусы: , если есть необходимость добавить еще один пункт меню, другое изображение должно быть сделано вручную для этого конкретного пункта меню.то есть.не расширяемый

2) Экспонат B

enter image description here

Плюсы: очень расширяемый.Если необходимо добавить другой пункт меню, новые дополнительные изображения создавать не нужно.В html-коде нужно вводить только имя меню.

Минусы: эффект наведения не совпадает с желаемым.

Мои требования

Используется Экспонат B вместе с эффектом наведения с Экспонат A , но без , когда при добавлении дополнительных изображенийсоздается пункт меню (это то, что происходит в в Приложении A , хотя и имеет нужный эффект при наведении).

Мой подход:

  1. Начало работы с Приложение B
  2. Для эффекта парения в случае одного элемента меню используйте 3 изображения

a) крайний левый край left most edge

b) повторяющийся срез средней области repeating slice of the middle area

c) самый правый край right most edge

Это правильно?

это возможно?

Есть ли лучший способ?Ссылка на запись будет в порядке.

Спасибо


1] CSS-код для приложения A

@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] код CSS для приложения B

#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 Ответ

1 голос
/ 01 февраля 2011

Ну, технически вам нужны только два спрайта, широкий левый + тело вкладки и правая сторона.Под широким, я имею в виду, 400px или какой-то произвольно широкий размер, который вы не ожидаете.Вы торгуете КБ для простоты использования.Вы можете сделать это с помощью разметки вроде:

<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 (что потенциально потребует отображения: inline-блок или высоту строки, чтобы взять это), чтобы все выровнялось хорошо.

...