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

HTML+CSS+JavaScript

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

 

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

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

тема: Выпадающее горизонтальное меню
 
 автор: Diman   (26.08.2012 в 19:57)   письмо автору
951.6 Кб
 
 

Добрый день. Понадобилось сделать выпадающее вертикальное меню, но немного не совсем обычное. В архиве картинка и файлы своей разработки вместе со стилями. Не совсем получается то что бы хотелось. А именно, когда навожу на ссылку "Разработка", то она расширяется, а должна бы оставаться на месте, а третье за ним слово вообще тогда сползает на другую строчку. А выпадающий список появляется, но он должен находится за бордюрчиком в виде точек. На рисунке и открыв сам файл, думаю можно понять что я имею в виду. Помогите пожалуйста разобраться

  Ответить  
 
 автор: DJ Paltus   (27.08.2012 в 13:40)   письмо автору
 
   для: Diman   (26.08.2012 в 19:57)
 

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

  Ответить  
 
 автор: diman   (27.08.2012 в 22:08)   письмо автору
 
   для: DJ Paltus   (27.08.2012 в 13:40)
 

Т.е. получается, что вложение списка в список уже не надо делать, а сделать ниже один блок, а при наведении содержимое показывать в нем?

  Ответить  
 
 автор: DJ Paltus   (27.08.2012 в 22:32)   письмо автору
 
   для: diman   (27.08.2012 в 22:08)
 

Это - как вариант, решений всегда несколько.
Можно задать родительскому li свойство overflow:visible, поиграться с выравниванием текста и высотой-шириной блока, но это все ни к чему, раз jQuery уже подключили.

  Ответить  
 
 автор: Diman   (27.08.2012 в 22:39)   письмо автору
4.3 Кб
 
   для: DJ Paltus   (27.08.2012 в 22:32)
 

Сделал в коде следующее, но мне кажется уже бред получается
<li><a href="#">РАЗРАБОТКА</a>
    <!-- Элементы подменю -->
     <ul class="sub">
    
            <div id="sub">
                     <li><a href="#">Сайты под ключ</a></li>
                     <li><a href="#">Приложения для мобильных устройств</a></li>
                     <li><a href="#">Приложения для социальных медиа</a></li>
             </div>
     </ul>
</li>

Выпадать то, выпадает, но теперь эта "дочка" берет ширину от "мамаши" своей "Разработка".

  Ответить  
 
 автор: Diman   (27.08.2012 в 23:02)   письмо автору
 
   для: Diman   (27.08.2012 в 22:39)
 

В общем заработало. Почему не понял, но убрал position:relative из файла стилей для div#navig li. Ну и уже для блока #sub подправил верхний внутренний отступ padding и теперь работает. Остается по дизайну теперь красоту подогнать и все. Вот только почему позиция мешала, не могу понять. Спасибо Вам за подсказку, я упустил из виду, что дочка же наследует стили от родителя

  Ответить  
 
 автор: DJ Paltus   (27.08.2012 в 23:29)   письмо автору
 
   для: Diman   (27.08.2012 в 23:02)
 

маленький совет - не выкидывайте на рассмотрение большие куски кода.
Есть затыка - откусывайте главное и на конкретном примере решайте. То есть, если надо запилить выпадючее меню, то нужен ТОЛЬКО этот кусок разметки, ЭТОТ кусок стилей и ЭТОТ кусок скрипта. В хорошо поставленном вопросе 99% ответа. И листинги на десять килобайт никто читать не хочет. И я бы не стал, если бы не лень было работу работать.
По правде, я ваше меню на работе сделал и запустил. Но лучше дать человеку удочку, нежели рыбу )

  Ответить  
 
 автор: Diman   (28.08.2012 в 22:47)   письмо автору
 
   для: DJ Paltus   (27.08.2012 в 23:29)
 

Еще раз спасибо. В следующий раз буду выбирать конкретные куски кода. Появилась еще одна заминка. Оказывается, когда стал проверять в опере (не люблю этот браузер) выпадающее меню вылезает как вертикальный столбец. Из за чего это может быть?

  Ответить  
 
 автор: DJ Paltus   (28.08.2012 в 22:48)   письмо автору
 
   для: Diman   (28.08.2012 в 22:47)
 

ширина списка? ширина родителя? свойство float?

  Ответить  
 
 автор: Diman   (29.08.2012 в 15:09)   письмо автору
 
   для: DJ Paltus   (28.08.2012 в 22:48)
 

В чем проблема разобрался. Но, испробовав все хаки для опера (у меня лично 12.01 версия) так и не получилось, т.е. не работают эти хаки.
@media all and (-webkit-min-device-pixel-ratio:10000),
not all and (-webkit-min-device-pixel-ratio:0) {  
    #sub{ position: static; }  /* для Opera 9.6 и выше */

@media (0) { 
    #sub{ position: static; }  /* для Opera 10.0 */


html:first-child #sub{ position: static; } /* для Opera 9.2 и ниже */

@media all and (min-width: 0)
{
   #sub{ position: static; } 
}

*|html[xmlns*=""] #sub{ position: static; } 


Какой же хак все же подходит под новую оперу?

  Ответить  
 
 автор: DJ Paltus   (29.08.2012 в 15:37)   письмо автору
 
   для: Diman   (29.08.2012 в 15:09)
 

Это дебри. Надо начать с начала, отделить меню от всего остального и заставить работать отдельно, а потом вставить в проект. Берем отдельно кусок разметки, отвечающий за меню, пишем ему свой стиль и свои скрипты.
Поверьте, для такой простой штуки, как выпадающее меню, никакие хаки не нужны со времен 6-го IE.

  Ответить  
 
 автор: Diman   (29.08.2012 в 15:56)   письмо автору
 
   для: DJ Paltus   (29.08.2012 в 15:37)
 

Хаки все же потребовались. Но уже не такие дебри, это точно. Все решил. Спасибо за помощь и подсказку

  Ответить  
Rambler's Top100
вверх

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