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

HTML+CSS+JavaScript

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

 

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

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

тема: выпадающее меню
 
 автор: ubahuba   (19.06.2014 в 10:52)   письмо автору
 
 

Всем привет. Помогите, пожалуйста, новичку, люди.
Есть такой код:

<html>
    <head>
        <meta charset="utf-8">
        <style>
            .submenu {
                display: none;
            }
            
            li {
                cursor: pointer;
            }
        </style>
        <script src="jquery 2.1.1.min.js"></script>
        <script>
        $(function(){
            $("li").hover(
                function(event){
                    $("ul.submenu").css("display","block");
                },
                function(event){
                    $("ul.submenu").css("display","none");
                }
            );
        });
        </script>
    </head>
    <body>
        <ul class="menu">
            <li>menu 1
                <ul class="submenu">
                    <li>submenu 1</li>
                    <li>submenu 2</li>
                </ul>
            </li>
            <li>menu 2
                <ul class="submenu">
                    <li>submenu 1</li>
                    <li>submenu 2</li>
                </ul>
            </li>
        </ul>
    </body>
</html>

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

  Ответить  
 
 автор: confirm   (19.06.2014 в 11:59)   письмо автору
 
   для: ubahuba   (19.06.2014 в 10:52)
 

$('li').has('ul').hover(function() {
    $(this).children().removeClass('submenu');
}, function() {
    $(this).children().addClass('submenu');
});

  Ответить  
 
 автор: ubahuba   (19.06.2014 в 12:07)   письмо автору
 
   для: confirm   (19.06.2014 в 11:59)
 

Спасибо за помощь)

  Ответить  
 
 автор: moonfox   (19.06.2014 в 14:36)   письмо автору
 
   для: ubahuba   (19.06.2014 в 12:07)
 

а зачем вообще js в выпадающем меню??

  Ответить  
 
 автор: ubahuba   (19.06.2014 в 14:38)   письмо автору
 
   для: moonfox   (19.06.2014 в 14:36)
 

как зачем???

  Ответить  
 
 автор: moonfox   (19.06.2014 в 14:43)   письмо автору
 
   для: ubahuba   (19.06.2014 в 14:38)
 

зайдите в яндекс и поищите по запросу
- выпадающее меню на css
любой сложности выпадающее меню - можно реализовать на чистом css
более того на css3 есть некоторые фишки из серии эффектов

  Ответить  
 
 автор: ubahuba   (19.06.2014 в 14:52)   письмо автору
 
   для: moonfox   (19.06.2014 в 14:43)
 

далеко не все можно сделать на css.

  Ответить  
 
 автор: moonfox   (19.06.2014 в 14:55)   письмо автору
 
   для: ubahuba   (19.06.2014 в 14:52)
 

читайте еще раз)
меню с любым количеством выпадающих элементов - чистый css
тем более ваш пример)
li:hover > ul { display:block; }
все остальные навороты - спецэффекты - да скорее нужен js

  Ответить  
 
 автор: Commander   (19.06.2014 в 18:53)   письмо автору
 
   для: ubahuba   (19.06.2014 в 14:52)
 

Да, можно на чистом CSS сделать выпадающее меню. Правда, мне попадались только версии, которые для IE использовали JS, но это было довольно давно.

  Ответить  
 
 автор: Rikone   (23.06.2014 в 11:09)   письмо автору
 
   для: confirm   (19.06.2014 в 11:59)
 

Добрый день. Прошу у Вас еще раз помочь мне. Код страницы тот же, но хочу применить эффект slide(up/down). Но не получается никак выбрать нужный li . Эффект применяется ко всем li. Пожалуйста помогите с выборкой. Вот код:

<html>
    <head>
        <meta charset="utf-8">
        <style>
            .submenu {
                display: none;
            }
            
            li {
                cursor: pointer;
            }
        </style>
        <script src="jquery 2.1.1.min.js"></script>
        <script>
            $(function () {
                $("ul > li").mouseover(function () {
                    $(this).children().slideDown();
                });
                $("ul > li").mouseout(function () {
                    $(this).children().slideUp();
                });
            });
        </script>
    </head>
    <body>
        <ul id="menu">
            <li>menu 1
                <ul class="submenu">
                    <li>submenu 1</li>
                    <li>submenu 2</li>
                    <li>submenu 3</li>
                </ul>
            </li>
            <li>menu 2
                <ul class="submenu">
                    <li>submenu 1</li>
                    <li>submenu 2</li>
                    <li>submenu 3</li>
                </ul>
            </li>
        </ul>
    </body>
</html>

  Ответить  
 
 автор: confirm   (23.06.2014 в 11:33)   письмо автору
 
   для: Rikone   (23.06.2014 в 11:09)
 

Ну так вы всем LI и устанавливаете обработчик. А кроме того, что я написал, писать более нечего

$('li').has('ul').hover - это означает - элементам LI, которые имеют дочерний элемент UL установить обработчик...

А уж в обработчике пишите свои эффекты, какие надо

  Ответить  
 
 автор: Rikone   (23.06.2014 в 11:36)   письмо автору
 
   для: confirm   (23.06.2014 в 11:33)
 

Здесь :hover уже нет, это рас, и два, эффект применяется ко всем li, а нужно, чтоб применялся только к верхним.

  Ответить  
 
 автор: Rikone   (23.06.2014 в 11:41)   письмо автору
 
   для: confirm   (23.06.2014 в 11:33)
 

Все. Огромное спасибо. Дошло наконец-то.

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

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