Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Создание горизонтального динамического меню
 
 автор: pautina   (03.06.2008 в 09:53)   письмо автору
 
 

Здравствуйте Уважаемое сообщество. Ни подскажете как создать горизонтальное динамическое меню на css. Что то подобное реализовывал Влад Маржевич.

   
 
 автор: tuder   (04.06.2008 в 06:05)   письмо автору
 
   для: pautina   (03.06.2008 в 09:53)
 

http://www.realcoding.net/article/view/2731

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

   
 
 автор: pautina   (04.06.2008 в 16:09)   письмо автору
 
   для: tuder   (04.06.2008 в 06:05)
 

Я использовал немного другой код, но за ссылку спасибо.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Документ без названия</title>
<script language="JavaScript">
function startMenu() {

// Проверяем, поддерживает ли текущий браузер DOM
 if (document.getElementById) {

// Получаем объект с именем идентификатора menu
   nav = document.getElementById('menu');

// Пробегаемся по всем дочерним элементам нашего меню
   for (i=0; i<nav.childNodes.length; i++) {
     node = nav.childNodes[i];

// Если дочерний элемент - LI, то идем дальше
     if (node.nodeName == 'LI') {

// При наведении курсора на пункт меню, присваиваем LI класс over
       node.onmouseover = function() {
         this.className = 'over';
       }
       node.onmouseout = function() {

// При перемещении курсора за пределы пункта убираем класс over
         this.className = '';
       }
     }
   }
 }
}
</script>
<style type="text/css">
 #content { left:0px; right:0px; top:0px; width:100%; height:100px; position:absolute;  background-color:#2afcb4}
 #content-menu { left:5px; top:107px; position:absolute; }
 #content-center { left:10px; top:140px; width:70%; position:absolute; z-index:-1}
 UL {
  
  list-style: none;            /* Для списка убираем маркеры */
  margin: 0px;                /* Нет отступов вокруг */
  padding: 0px;                /* Убираем поля вокруг текста */
  font-family:Verdana, Helvetica, sans-serif;    /* Рубленый шрифт для текста меню */
  font-size: 14px            /* Размер текста в пункте меню */
}
 
 UL LI {
  position: relative;        /* Подпункты позиционируются относительно */
  background: #9bff4a;        /* Цвет фона пунктов меню */
  float: left;            /* Пункты первого уровня располагаются горизонтально */
  padding: 4px 0px;        /* Поля вокруг пунктов первого уровня */
  margin-right: 0px        /* Расстояние между пунктами по горизонтали */
}
 UL LI UL LI {
 padding: 0px            /* Отменяем поля вокруг рамки пунктов меню второго уровня */
}
 LI UL {
  position: absolute;        /* Подменю позиционируются абсолютно */
  display: none;        /* Скрываем подменю */
  width: 180px;            /* Ширина пунктов подменю */
  margin-top: 5px        /* Сдвигаем подменю немного вниз */
}
* HTML LI UL {            /* Только для браузера Internet Explorer */
  left: 0px;            /* Положение подменю по горизонтали */
  top: 21px            /* Положение подменю по вертикали */
}
 LI A {
  padding: 3px;        /* Поля вокруг надписей основного меню */
  padding-left: 12px;        /* Добавляем отступ слева для рисунка */
  text-decoration: none;    /* Подчеркивание у ссылок убираем */
  color:#000000;            /* Цвет текста */
  border: 1px solid #ccc;    /* Рамка вокруг пунктов меню */
  background:             /* Для основных пунктов отображаем рисунок */
    url(bullet2.gif)     /* Указываем путь к рисунку со стрелкой */
    left center         /* Выравниваем рисунок по центру слева */
    no-repeat        /* Отменяем повторение фона */
}
 LI UL LI A {
  display: block;        /* Отображаем ссылку как блочный элемент */
  padding: 4px;        /* Поля вокруг надписей подменю */
  width: 180px;        /* Ширина пунктов подменю */
  border-bottom: none;    /* Границу снизу не проводим */
  background-image: none    /* Для подпунктов рисунок убираем */
}
 LI A:hover {
  color:#000000;        /* Цвет текста активного пункта */
  background-color: #6ce10e    /* Цвет фона активного пункта */
}
 LI:hover UL, LI.over UL { 
  display: block        /* При выделении пункта курсором мыши 
открывается подменю */
}
 .brd {
  border-bottom: 1px solid #ccc    /* Добавляем линию снизу */
}
</style>
</head>

<body onLoad="startMenu()" leftmargin="0" rightmargin="0" topmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
<div id="content">
 <img src="image/content.gif" width="990" height="100" border="0">
</div>

<div id="content-menu">

<ul id=menu>
   <li><a href=russian.html>Русская кухня</a>
    <ul> 
     <li><a href=linkr1.html>Бефстроганов</a></li>
     <li><a href=linkr2.html>Гусь с яблоками</a></li> 
     <li><a href=linkr3.html>Крупеник новгородский</a></li> 
     <li><a href=linkr4.html class=brd>Раки по-русски</a></li> 
    </ul> 
   </li> 
   <li><a href=ukrainian.html>Украинская кухня</a><ul> 
     <li><a href=linku1.html>Вареники</a></li> 
     <li><a href=linku2.html>Жаркое по-харьковски</a></li> 
     <li><a href=linku3.html>Капустняк черниговский</a></li> 
     <li><a href=linku4.html class=brd>Потапцы с помидорами</a></li> 
    </ul> 
   </li>
   <li><a href=caucasus.html>Кавказская кухня</a><ul> 
     <li><a href=linkc1.html>Суп-харчо</a></li> 
     <li><a href=linkc2.html>Лилибдж</a></li> 
     <li><a href=linkc3.html>Чихиртма</a></li> 
     <li><a href=linkc4.html class=brd>Шашлык</a></li> 
    </ul> 
   </li> 
   <li><a href=asia.html style="background-image: none; padding-left: 3px">Кухня Средней Азии</a></li> 
 </ul>

</div>

<div id="content-center">
 Пример текстового наполнения
</div>
</body>
</html>

   
 
 автор: PAT   (04.06.2008 в 18:37)   письмо автору
 
   для: pautina   (04.06.2008 в 16:09)
 

1. Вы похвалились здесь найденным вами "меню с использованием Javascript'a", а спрашивали изначально "меню с CSS". Это вообще-то две разные вещи. :-)

2. Код вполне себе рабочий, при условии, что браузер поддерживает DOM. А что будет, если DOM не поддерживается? Задумывались вы? Видимо, не задумывались, ибо варианта для "безDOMового" браузера скрипт не поддерживает. Также не задумывался об этом неизвестный мне автор скрипта.

3. Очень плохо слизывать чужие скрипты, не пытаясь даже "врубиться" в их содержание.

PS. А вообще смешно... идет проверка на поддержку DOM, но вариант меню - только для тех браузеров, что DOM поддерживают :-)
Для приличия прописали бы, что-ли, alert с призывом загрузить свежую версию браузера.
А то зайдет человек из Эксплорера4, увидит меню, а попасть куда-либо не сможет... и никто ничего ему не скажет... чего он о вас подумает? :-)

   
 
 автор: elenaki   (04.06.2008 в 19:17)   письмо автору
 
   для: PAT   (04.06.2008 в 18:37)
 

из Эксплорера4

а что, много таких ... динозавров? :О
не больше 0,0001 процента

   
 
 автор: PAT   (04.06.2008 в 19:21)   письмо автору
 
   для: elenaki   (04.06.2008 в 19:17)
 

Правильно, и я о том же.
Но в скрипте-то это дело на всякий случай ведь проверяют, что, в принципе, правильно - не будет сообщения об ошибке у обладателей древних браузеров. Но и НИКАКОГО сообщения/действия ведь для них тоже не будет, что неправильно :-)

Положим, в клубе на входе действует фейс-контроль. Охранникам даны указания - белым людям оказывать уважение и впускать вовнутрь. Но что делать с чёрными - не сказали СОВСЕМ. Что будет в результате? В результате будут проблемы. :-)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования