Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.02.2016, 15:17
Новичок на форуме
Отправить личное сообщение для simpl1k Посмотреть профиль Найти все сообщения от simpl1k
 
Регистрация: 15.02.2016
Сообщений: 3

Дергается выпадающее меню
Здравствуйте. Есть данное меню, проблема заключается в том, что если вывести курсор за область выпадающего меню и быстро вернуть обратно в эту область (не на элемент li.dropdown), то оно опять появляется, иногда бывает что оно вообще не исчезает и приходится повторно проводить курсором. Объяснение так себе, поэтому для наглядности прикладываю гифку и ссылку на песочницу с самим меню. Будьте добры подскажите в чем может быть проблема. Спасибо

http://www.picshare.ru/view/7106951/
https://jsfiddle.net/6JbtX/1380/

<ul class="menu">
    <li class="dropdown">
        <a href="#" class="toplevel">menu</a>
        <ul class="submenu">
            <li><a href="#">1</a></li>
            <li><a href="#">2</a></li>
            <li><a href="#">3</a></li>
            <li><a href="#">4</a></li>
        </ul>
    </li>
    <li class="dropdown">
        <a href="#" class="toplevel">menu2</a>
        <ul class="submenu">
            <li><a href="#">1</a></li>
            <li><a href="#">2</a></li>
            <li><a href="#">3</a></li>
            <li><a href="#">4t</a></li>
        </ul>
    </li>
</ul>


$(function()
{
    var $dropdowns = $('li.dropdown');
    $dropdowns
        .on('mouseover', function() 
        {
            var $this = $(this);

            if ($this.prop('hoverTimeout'))
            {
                $this.prop('hoverTimeout', clearTimeout($this.prop('hoverTimeout')));
            }

            $this.prop('hoverIntent', setTimeout(function()
            {
                $this.addClass('hover');
            }, 250));
        })
        .on('mouseleave', function()
        {
            var $this = $(this);

            if ($this.prop('hoverIntent'))
            {
                $this.prop('hoverIntent', clearTimeout($this.prop('hoverIntent')));
            }

            $this.prop('hoverTimeout', setTimeout(function()
            {
                $this.removeClass('hover');
            }, 50));
        });   
});
Ответить с цитированием
  #2 (permalink)  
Старый 15.02.2016, 15:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

simpl1k,
вопрос а нафига скрипт?
Ответить с цитированием
  #3 (permalink)  
Старый 15.02.2016, 15:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

simpl1k,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
      .menu {
  width: 400px;
  list-style-type: none;
}

.toplevel {
  display: block;
  padding: 0 10px;
  line-height: 2;
  color: #fff;
  text-decoration: none;
  background: #f00;
}

.dropdown > a.another-color {
  background: #eeeeee
}

.dropdown {
  position: relative;
  z-index: 200;
  float: left;
  width: 200px;
}

.submenu {
  position: absolute;
  top: 0;
  left: 0;
  display: none;
  width: 200px;
  list-style-type: none;
  padding-top: 2em;
  z-index: 200;
}

.dropdown:hover .submenu {
  display: block;
}

.submenu a {
  display: block;
  padding: 5px;
  color: #fff;
  text-decoration: none;
  background: navy;
}
ul{
  margin: 0;
  padding: 0;
}
  </style>
 </head>

<body>
  <ul class="menu">
    <li class="dropdown">
        <a href="#" class="toplevel">menu</a>
        <ul class="submenu">
            <li><a href="#">1</a></li>
            <li><a href="#">2</a></li>
            <li><a href="#">3</a></li>
            <li><a href="#">4</a></li>
        </ul>
    </li>
    <li class="dropdown">
        <a href="#" class="toplevel">menu2</a>
        <ul class="submenu">
            <li><a href="#">1</a></li>
            <li><a href="#">2</a></li>
            <li><a href="#">3</a></li>
            <li><a href="#">4t</a></li>
        </ul>
    </li>
</ul>
</body>

</html>
Ответить с цитированием
  #4 (permalink)  
Старый 15.02.2016, 19:05
Новичок на форуме
Отправить личное сообщение для simpl1k Посмотреть профиль Найти все сообщения от simpl1k
 
Регистрация: 15.02.2016
Сообщений: 3

Сообщение от рони Посмотреть сообщение
simpl1k,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
      .menu {
  width: 400px;
  list-style-type: none;
}

.toplevel {
  display: block;
  padding: 0 10px;
  line-height: 2;
  color: #fff;
  text-decoration: none;
  background: #f00;
}

.dropdown > a.another-color {
  background: #eeeeee
}

.dropdown {
  position: relative;
  z-index: 200;
  float: left;
  width: 200px;
}

.submenu {
  position: absolute;
  top: 0;
  left: 0;
  display: none;
  width: 200px;
  list-style-type: none;
  padding-top: 2em;
  z-index: 200;
}

.dropdown:hover .submenu {
  display: block;
}

.submenu a {
  display: block;
  padding: 5px;
  color: #fff;
  text-decoration: none;
  background: navy;
}
ul{
  margin: 0;
  padding: 0;
}
  </style>
 </head>

<body>
  <ul class="menu">
    <li class="dropdown">
        <a href="#" class="toplevel">menu</a>
        <ul class="submenu">
            <li><a href="#">1</a></li>
            <li><a href="#">2</a></li>
            <li><a href="#">3</a></li>
            <li><a href="#">4</a></li>
        </ul>
    </li>
    <li class="dropdown">
        <a href="#" class="toplevel">menu2</a>
        <ul class="submenu">
            <li><a href="#">1</a></li>
            <li><a href="#">2</a></li>
            <li><a href="#">3</a></li>
            <li><a href="#">4t</a></li>
        </ul>
    </li>
</ul>
</body>

</html>
Сообщение от рони Посмотреть сообщение
simpl1k,
вопрос а нафига скрипт?
Извиняюсь не уточнил, думал будет понятно для чего скрипт, скрипт нужен для задержки выпадающего меню. Плюс в окончательном варианте у меня во время выпадения меню, с такой же задержкой как и выпадающее меню меняется бэкграунд родителя. Простым css это не реализовать.

Последний раз редактировалось simpl1k, 15.02.2016 в 19:14.
Ответить с цитированием
  #5 (permalink)  
Старый 15.02.2016, 19:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от simpl1k
Простым css это не реализовать.
а может можно?
и целиком копировать сообщения смысла нет и засоряет форум
Ответить с цитированием
  #6 (permalink)  
Старый 15.02.2016, 19:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

simpl1k,
вариант с задержкой и сменой фона
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
      .menu {
  width: 400px;
  list-style-type: none;
}

.toplevel {
  display: block;
  padding: 0 10px;
  line-height: 2;
  color: #fff;
  text-decoration: none;
  background: #f00;
  -webkit-transition: all 1.2s ease-in-out .3s;
  -moz-transition: all 1.2s ease-in-out .3s;
  -o-transition: all 1.2s ease-in-out .3s;
  transition: all 1.2s ease-in-out .3s;
}

.dropdown > a.another-color {
  background: #eeeeee;

}

.dropdown {
  position: relative;
  z-index: 200;
  float: left;
  width: 200px;

}

.submenu {
  position: absolute;
  top: 0;
  left: 0;
  height: 0;
  width: 200px;
  list-style-type: none;
  padding-top: 2em;
  z-index: 200;
  overflow: hidden;
   -webkit-transition: all .8s ease-in-out .3s;
   -moz-transition: all .8s ease-in-out .3s;
   -o-transition: all .8s ease-in-out .3s;
   transition: all .8s ease-in-out .3s;
}

.dropdown:hover .submenu {
  height: 8em;
}
.dropdown:hover a.toplevel{
  background-color:  #FF00FF;
  -webkit-transition-delay: 0;
  -moz-transition-delay: 0;
  -o-transition-delay: 0;
  transition-delay: 0;
}

.submenu a {
  display: block;
  padding: 5px;
  color: #fff;
  text-decoration: none;
  background: navy;
}
ul{
  margin: 0;
  padding: 0;
}

  </style>
 </head>

<body> <script>


</script>
  <ul class="menu">
    <li class="dropdown">
        <a href="#" class="toplevel">menu</a>
        <ul class="submenu">
            <li><a href="#">1</a></li>
            <li><a href="#">2</a></li>
            <li><a href="#">3</a></li>
            <li><a href="#">4</a></li>
        </ul>
    </li>
    <li class="dropdown">
        <a href="#" class="toplevel">menu2</a>
        <ul class="submenu">
            <li><a href="#">1</a></li>
            <li><a href="#">2</a></li>
            <li><a href="#">3</a></li>
            <li><a href="#">4t</a></li>
        </ul>
    </li>
</ul>
</body>

</html>
Ответить с цитированием
  #7 (permalink)  
Старый 15.02.2016, 19:36
Новичок на форуме
Отправить личное сообщение для simpl1k Посмотреть профиль Найти все сообщения от simpl1k
 
Регистрация: 15.02.2016
Сообщений: 3

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

Последний раз редактировалось simpl1k, 15.02.2016 в 19:39.
Ответить с цитированием
  #8 (permalink)  
Старый 15.02.2016, 20:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

simpl1k,
попробуйте таймер не в prop а в data
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выпадающее меню (костыли) Sk1LL Общие вопросы Javascript 4 06.02.2016 12:47
Замена стилей класса Павел Турченко Элементы интерфейса 9 30.10.2015 15:24
Бесконечноуровневое меню на CSS ruslan_mart Ваши сайты и скрипты 5 12.01.2015 20:59
Находится ли мышка над дивом ? (выпадающее меню) advsm jQuery 31 24.09.2014 17:50
jquery ui layout + выпадающее меню Sveta jQuery 2 04.12.2012 09:04