Меню выпадающее при наведении: Как сделать всплывающее меню при наведении

Содержание

Выпадающее меню на Bootstrap 4 при наведении (событие hover)

Как известно, стандартный dropdown список раскрывается только при нажатии на главный пункт меню. По умолчанию выпадающий список имеет свойство «display: none;», и переходит в «display: block;», когда срабатывает событие click и на оборот — чтобы скрыть, нужно опять нажать на меню.

На примере меню из документации Bootstrap 4:



<nav>

  <button type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
    <span></span>
  </button>

  <div>
    <ul>

      <li>
        <a href="#">Главная</a>
      </li>

      <li>
        <a href="#">Один</a>
      </li>

      <li>
        <a href="#">Два</a>
      </li>

      <li>
        <a href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Три</a>
        <div aria-labelledby="navbarDropdownMenuLink">
          <a href="#">Три один</a>
          <a href="#">Три два</a>
          <a href="#">Три три</a>
        </div>
      </li>

    </ul>
  </div>

</nav>

В данном варианте, если вы просто поместите это меню на сайте, подключите все необходимые библиотеки, меню будет работать по клику.

Чтобы меню раскрывалось и скрывалось при наведении (событие hover), достаточно чуть подправить css файл bootstrap 4 или прописать это в своем файле стилей:



nav.navbar .dropdown:hover > .dropdown-menu {
 display: block; 

Теперь при наведении, нашему списку будет присваиваться свойство «block» и он раскроется. Вот так легко это делается, не правда ли?

Чтобы это работало только на ПК версиях экранов, и не работало на мобильных устройствах, так как там просто отсутствует нормальная работа события hover. Я рекомендую прописать ниже еще вот такой код:



@media only screen and (max-device-width: 992px){
    nav.navbar .dropdown:hover .dropdown-menu{
        display: none;
    }
}

Учтите, что этим вы не отменяете событие click – раскрытие меню по клику. Оно будет так же работать наравне и с наведением.

Как отключить событие click и оставить только событие hover, вы можете прочитать в этой статье:

Переход по ссылке главного (верхнего) меню раскрывающегося списка в Bootstrap 4

 

Всем удачи!

 

Возможно вам так же будет интересно:

Показывать выпадающее меню при наведении и закрывать при нажатии только с помощью CSS

Быстрая проверка: Рабочий JSFiddle

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

Объяснение того, почему это поведение: Да, вы правы. Это связано с тем, как вы используете логику селектора :active. Чтобы объяснить подробно, рассмотрите ваше правило CSS

.container:hover .test1:active {
    display: none;
}

У вас есть ссылки меню под вашим основным li.test1, и любой щелчок по внутренним ссылкам также всплывает до этого элемента, так что все равно, что щелкнуть по li. Поэтому, как только мышь удерживается нажатой (событие мыши), она вызывает событие :active, и вы скрываете links (то есть: li.test1), но событие click завершается только тогда, когда мышь одновременно нажата и убрана. Таким образом, к настоящему времени li скрыт, а mouse up больше не находится на ссылке. Так что, как вы видите, шансов на событие щелчка не будет. Это проблема.


I saw other answers which you seem to be interested in and this really doesn't need any kind of hack, It can be done by just formatting your HTML and with some CSS changes.


Solution: Вместо того, чтобы заключать ссылки внутреннего меню в li.test1, вы можете работать с двумя разными li, одним для X CLose и другим для хранения menu links. Имея это в виду, мы можем быть уверены, что когда li.test1 активен (т. Е. Мышь не работает), мы можем скрыть его, а также другую новую li, которая прилегает к нему. Таким образом, это означает, что когда пользователь нажимает на X Closeli, мы скрываем меню. Если он нажимает на другие пункты меню, вы перенаправлены.

Таким образом, изменения в вашей структуре HTML должны быть

<ul>
  Drop down menu
  <li>
    <a href="#">X Close</a>
  </li>
  <li>
    <ul>
      <!-- all your links go here-->
    </ul>
  </li>
</ul>

И главное правило CSS это 

.container:hover .test1:active,
.container:hover .test1:active + .MenuLinks {
  display: none;
}

Ниже приведен SO рабочий фрагмент

body {
  padding: 20px;
}
.container {
  border: 1px solid Lime;
  padding: 10px;
  width: 200px;
  list-style-type: none;
}
.test1,
.MenuLinks {  
  display: none;
  border-color: orange;
  border-style: dashed;
  background: green;
  pointer-events: none;
}
.test1 {
  padding: 10px;
  border-width: 1px 1px 0px 1px;
}
.MenuLinks {
  border-width: 0px 1px 1px 1px;
}
.container:hover li {
  display: block;
}

/*Rule to hide both test1 and MenuLinks when X Close is clicked*/
.container:hover .test1:active,
.container:hover .test1:active + .MenuLinks {
  display: none;
}


a {
  pointer-events: auto;
  color: Lime;
  font-weight: bold;
}
<ul>
  Drop down menu
  <li>
    <a href="#">X Close</a>
  </li>
  <!--seperate li for close-->

  <li>
    <!--wrap all your menu items here-->
    <ul>
      CLOSE THIS CONTENT
      <li><a href="http://www.google.com">Go to link 1</a>
      </li>
      <li><a href="https://www.google.co.uk">Go to link 2</a>
      </li>
      <li><a href="https://www.google.co.uk">Go to link 3</a>
      </li>
    </ul>
    <li>
</ul>

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

Refused to display 'https://www.google.co.in/?gfe_rd=cr&ei=x2VWWLL2Ae-K8Qfwx4ngDQ' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.

Однако вы можете увидеть запросы на вкладке сети, когда вы нажимаете на ссылки.

Надеюсь это поможет!!

Jquery выпадающее меню при наведении

При наведении на определенные псевдо-ссылки, должны появляться меню под ними. И чтоб он исчезал, если курсор отошел более чем, допустим, 200px от появившегося меню и псевдо-ссылки.
Ну или хотя бы не при наведении, а нажатии. То есть уже если кликнул куда-то вне меню, то оно пропадает.

Как в VK, к примеру:

Мне просто нужно знать какие проверки в JS совершать.

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

Как вы уже догадались, наше выпадающее меню построено на базе маркированных списков. При наведении курсора мыши на тег
Sub 1 … раскрываться будет все, что в него заключено, а именно:

Но как, спросите вы? Да все на самом деле очень просто. Для начала давайте разберемся с таблицей стилей нашего списка навигации, выглядеть она будет следующим образом:

Из таблицы стилей видно, что изначально выпадающий список не скрыт, но этот момент мы и будем исправлять при помощи jQuery:

Теперь подробно разберем jQuery код выпадающего меню, т.к. возможно кому-то он будет не совсем понятен. В самом начале прописана следующая конструкция:

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

Что означает эта запись? Конструкция «$()» позволяет произвести выборку элементов. Следовательно в самом начале нам необходимо скрыть наш выпадающий список. Мы берем конструкцию «$()» и пишем в ней интересующий нас объект. В нашем случае этим объектом будет маркированный список с классом «menu». Далее прописываем метод «hide()», позволяющий скрыть интересующий нас объект.

Далее идет следующая конструкция:

Что она делает? Она ищет тег родительскому элементу которого присвоен класс «menu» и, при помощи метода «css(‘background’, ‘url(«down.png»)’)”, происходит присваивание свойству стиля «background» значения «url(«down.png»)». «down.png» – это иконка, показывающая, что список может раскрываться.

Затем идет конструкция, которая и будет раскрывать наш список, выглядит она следующим образом:

Мы ищем тег родительскому элементу которого присвоен hover” и в скобках две функции. Первая функция будет выполняться при наведении курсора мыши, а вторая выполниться, если курсор мыши покинет интересующий нас элемент.

В первой функции прописано:

Конструкция «$(this)” означает, что нас интересует тот элемент, на который мы в данный момент навели (this от англ. этот). А навели мы на тег
Sub 1 …. . Далее у тега при помощи метода «children(«ul»)» мы ищем вложенный тег и методом «show()» отображаем его.

После этого у тега мы ищем потомков, а именно: тег и у него меняем фон на другую иконку.

После этого прописана функция, которая делает все, как было изначально, после того, как курсор мыши покинет элемент списка:

Чтобы написанный код на jQuery заработал и наше выпадающее меню работало корректно, необходимо скачать с сайта jquery.com библиотеку и подключить её, прописав после открывающего тега строку .

Ну вот и все! В заключении хочу отметить, что если ваш сайт довольно увесист, то возможно, скрипт будет запускаться слишком поздно (сайт будет долго грузиться) и пользователи будут видеть, как навигация сначала раскрывается полностью, а только потом скрывается, что, согласитесь, очень некрасиво. Следовательно, необходимо вынести все jQuery команды за эту конструкцию: «$(document).ready(function()<>)». Выглядеть это будет следующим образом:

Подключение нашего скрипта необходимо перенести из тега в самый конец, перед закрывающим тегом

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

Но в данном уроке мы построим простое выпадающее меню с использованием jQuery. Оно будет работать с помощью метода анимации для генерирования задержанных эффектов. Вместе с кодом JavaScript также применяются эффекты переходов CSS3. В результате получается заготовка для навигации сайта.

Сначала построим основной шаблон HTML5. Потребуется последняя версия jQuery, которую мы получаем из API Google. Также добавляем файл стилей styles.css, который будет представлен ниже:

Теперь рассмотрим структуру, которая построена на основе неупорядоченного списка в верху страницы. Весь список помещается в элемент HTML5 © 2019 Евгений Попов. Все права защищены. Служба поддержки
Сайт мониторится с помощью сервиса ping-admin 🙂

Анимированное меню на CSS3

В этом небольшом уроке мы создадим красочное выпадающее меню, используя только CSS3 и шрифт иконок Font Awesome. Шрифт иконок, как следует из названия, шрифт, который отображает иконки вместо букв. Это означает, что вы получите симпатичные векторные иконки в любом браузере, который поддерживает пользовательские шрифты HTML5 (практически все современные браузеры). Чтобы добавить иконку к элементам, вам нужно всего лишь присвоить класс элементу и иконка будут добавлена при помощи псевдо-класса :before.

HTML

Мы будем использовать следующую разметку:

<nav>
    <ul>
        <li>
            <a href=»#»></a>
            <ul>
                <li><a href=»#»>Выпадающий пункт 1</a></li>
                <li><a href=»#»>Выпадающий пункт 2</a></li>
                <!— Остальные выпадающие пункты меню —>
            </ul>
        </li>
        <!— Пункты меню—>
    </ul>
</nav>

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

CSS

Как вы видите из HTML-фрагмента выше, мы имеем один список, вложенный в основной, таким образом, мы должны писать CSS с осторожностью. Потому как мы не хотим, чтобы стили верхнего списка распространялись на потомков. Для этого мы будем использовать CSS селектор «>«:

#colorNav > ul{
    width: 450px;
    margin:0 auto;
}

Эти правила ограничивают ширину и отступы только для первого неупорядоченного списка, который является прямым потомком пункта #colorNav. Теперь определим стили для пунктов верхнего уровня:

#colorNav > ul > li{ /* стили для верхнего уровня li */
    list-style: none;
    box-shadow: 0 0 10px rgba(100, 100, 100, 0.2) inset,1px 1px 1px #CCC;
    display: inline-block;
    line-height: 1;
    margin: 1px;
    border-radius: 3px;
    position:relative;
}

Мы укажем для свойства display значение inline-block, чтобы элементы списка отображались в одну линию, и зададим относительное позиционирование. Анкоры содержат иконки, как это определено шрифтом Awesome.

#colorNav > ul > li > a{
    color:inherit;
    text-decoration:none !important;
    font-size:24px;
    padding: 25px;
}

Теперь мы можем заняться выпадающим меню. Здесь мы будем определять CSS3 анимацию. Мы будем устанавливать максимальную высоту в 0 пикселей, которая будет скрывать выпадающий список. При наведении мыши мы будем изменять максимальную высоту, и список будет постепенно раскрывается:

#colorNav li ul{
    position:absolute;
    list-style:none;
    text-align:center;
    width:180px;
    left:50%;
    margin-left:-90px;
    top:70px;
    font:bold 12px ‘Open Sans Condensed’, sans-serif;
    /* This is important for the show/hide CSS animation */
    max-height:0px;
    overflow:hidden;
    -webkit-transition:max-height 0.4s linear;
    -moz-transition:max-height 0.4s linear;
    transition:max-height 0.4s linear;
}

И это будет анимироваться:

#colorNav li:hover ul{
    max-height:200px;
}

Значение 200px является произвольным и его придется увеличить, если ваш выпадающий список содержит много значений.

На следующем шаге определим стили для выпадающих пунктов:

#colorNav li ul li{
    background-color:#313131;
}
#colorNav li ul li a{
    padding:12px;
    color:#fff !important;
    text-decoration:none !important;
    display:block;
}
#colorNav li ul li:nth-child(odd){ /* zebra stripes */
    background-color:#363636;
}
#colorNav li ul li:hover{
    background-color:#444;
}
#colorNav li ul li:first-child{
    border-radius:3px 3px 0 0;
    margin-top:25px;
    position:relative;
}
#colorNav li ul li:first-child:before{ /* the pointer tip */
    content:»;
    position:absolute;
    width:1px;
    height:1px;
    border:5px solid transparent;
    border-bottom-color:#313131;
    left:50%;
    top:-10px;
    margin-left:-5px;
}
#colorNav li ul li:last-child{
    border-bottom-left-radius:3px;
    border-bottom-right-radius:3px;
}

И, конечно, поэкспериментируем немного с цветами! Вот 5 версий:

#colorNav li.green{
    /* Это цвет пункта меню */
    background-color:#00c08b;
    /* Это цвет иконки */
    color:#127a5d;
}
#colorNav li.red{        background-color:#ea5080;color:#aa2a52;}
#colorNav li.blue{        background-color:#53bfe2;color:#2884a2;}
#colorNav li.yellow{    background-color:#f8c54d;color:#ab8426;}
#colorNav li.purple{    background-color:#df6dc2;color:#9f3c85;}

Еще один плюс использования шрифта иконок, это то, что вы можете легко изменить цвет значка просто изменив свойство color. Это означает, что все настройки вы можете сделать при помощи одного CSS.

Готово!

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

Демонстрация

Скачать исходные файлы

Перевод статьи с tutorialzine.com

Если у Вас возникли вопросы, то для скорейшего получения ответа рекомендуем воспользоваться нашим форумом

jquery выпадающее меню при наведении


На чтение 4 мин. Просмотров 75 Опубликовано

При наведении на определенные псевдо-ссылки, должны появляться меню под ними. И чтоб он исчезал, если курсор отошел более чем, допустим, 200px от появившегося меню и псевдо-ссылки.
Ну или хотя бы не при наведении, а нажатии. То есть уже если кликнул куда-то вне меню, то оно пропадает.

Как в VK, к примеру:

Мне просто нужно знать какие проверки в JS совершать.

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

Как вы уже догадались, наше выпадающее меню построено на базе маркированных списков. При наведении курсора мыши на тег
Sub 1 … раскрываться будет все, что в него заключено, а именно:

Но как, спросите вы? Да все на самом деле очень просто. Для начала давайте разберемся с таблицей стилей нашего списка навигации, выглядеть она будет следующим образом:

Из таблицы стилей видно, что изначально выпадающий список не скрыт, но этот момент мы и будем исправлять при помощи jQuery:

Теперь подробно разберем jQuery код выпадающего меню, т.к. возможно кому-то он будет не совсем понятен. В самом начале прописана следующая конструкция:

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

Что означает эта запись? Конструкция «$()» позволяет произвести выборку элементов. Следовательно в самом начале нам необходимо скрыть наш выпадающий список. Мы берем конструкцию «$()» и пишем в ней интересующий нас объект. В нашем случае этим объектом будет маркированный список с классом «menu». Далее прописываем метод «hide()», позволяющий скрыть интересующий нас объект.

Далее идет следующая конструкция:

Что она делает? Она ищет тег родительскому элементу которого присвоен класс «menu» и, при помощи метода «css(‘background’, ‘url(«down.png»)’)”, происходит присваивание свойству стиля «background» значения «url(«down.png»)». «down.png» – это иконка, показывающая, что список может раскрываться.

Затем идет конструкция, которая и будет раскрывать наш список, выглядит она следующим образом:

Мы ищем тег родительскому элементу которого присвоен hover” и в скобках две функции. Первая функция будет выполняться при наведении курсора мыши, а вторая выполниться, если курсор мыши покинет интересующий нас элемент.

В первой функции прописано:

Конструкция «$(this)” означает, что нас интересует тот элемент, на который мы в данный момент навели (this от англ. этот). А навели мы на тег
Sub 1 …. . Далее у тега при помощи метода «children(«ul»)» мы ищем вложенный тег и методом «show()» отображаем его.

После этого у тега мы ищем потомков, а именно: тег и у него меняем фон на другую иконку.

После этого прописана функция, которая делает все, как было изначально, после того, как курсор мыши покинет элемент списка:

Чтобы написанный код на jQuery заработал и наше выпадающее меню работало корректно, необходимо скачать с сайта jquery.com библиотеку и подключить её, прописав после открывающего тега строку .

Ну вот и все! В заключении хочу отметить, что если ваш сайт довольно увесист, то возможно, скрипт будет запускаться слишком поздно (сайт будет долго грузиться) и пользователи будут видеть, как навигация сначала раскрывается полностью, а только потом скрывается, что, согласитесь, очень некрасиво. Следовательно, необходимо вынести все jQuery команды за эту конструкцию: «$(document).ready(function())». Выглядеть это будет следующим образом:

Подключение нашего скрипта необходимо перенести из тега в самый конец, перед закрывающим тегом

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

Но в данном уроке мы построим простое выпадающее меню с использованием jQuery. Оно будет работать с помощью метода анимации для генерирования задержанных эффектов. Вместе с кодом JavaScript также применяются эффекты переходов CSS3. В результате получается заготовка для навигации сайта.

Сначала построим основной шаблон HTML5. Потребуется последняя версия jQuery, которую мы получаем из API Google. Также добавляем файл стилей styles.css, который будет представлен ниже:

Теперь рассмотрим структуру, которая построена на основе неупорядоченного списка в верху страницы. Весь список помещается в элемент HTML5 © 2019 Евгений Попов. Все права защищены. Служба поддержки
Сайт мониторится с помощью сервиса ping-admin 🙂

Как сделать двойное меню : Радиосхема.ру

Очень часто необходимо сделать на сайте выпадающее при наведении меню. Большинство используют для этого JavaScript / Jquery. Это конечно хорошо, но такого роди задачи легко решаются с помощью HTML / CSS .

Вот простой пример меню:

Для построения меню был использован список с классом menu. Подменю сделаны списками с классом submenu.

Теперь давайте минимально оформим наше меню стилями:

Для класса submenu было установлено свойство ‘display: none’. Это позволило на спрятать наше выпадающее меню.

Это позволит показывать подменю при наведении.

Для того, чтобы сделать меню второго уровня, нужно добавить на страницу блок МЕ301 (или любое другое основное меню) и настроить меню.

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

Вариант 1. Использование встроенных элементов

  1. Под списком пунктов меню нажмите на кнопку «Добавить пункты второго уровня» — напротив пунктов меню появятся иконки в виде знака «+».
  2. Нажмите на «+» для добавления пункта подменю
  3. Укажите название пункта и ссылку

Вариант 2. Использование блока ME601

Блок ME601 позволяет добавить подразделы к пунктам основного меню. Как это работает:

  1. Добавьте на страницу блок ME601
  2. В блоке МЕ601 пропишите ссылку вида #submenu:more
  3. В основном меню в поле ссылка, напротив пункта, к которому вы хотите сделать подразделы, укажите #submenu:more.

Примечание: «#submenu:more» может быть любым словом, например: #submenu:portfolio или #submenu:aboutus

Пункты меню второго уровня будут показываться при наведении в формате выпадающего меню. В мобильных версиях меню будет открываться по тапу.

Сам пункт основного меню кликабельным не будет. Если нужно чтобы на нем была ссылка, продублируете этот пункт в выпадающем меню.

Привет, у меня есть панель навигации с выпадающим меню. Я хотел бы, чтобы выпадающее меню сделало еще одно выпадающее меню, но как бы я это сделал? Вот мой код.

1 ответ

  • Как сделать вертикальное выпадающее меню?

я пытаюсь понять, как сделать вертикальное выпадающее меню, как на этом сайте: http://haririsportsandmedicals.de / Он должен drop-down, когда происходит событие onClick, а не при наведении мыши. Есть ли у кого-нибудь пример кода для выполнения чего-то подобного? Было бы очень здорово, спасибо.

Я хочу знать, как я могу сделать выпадающее меню для определенной группы таблиц. Пример здесь: На этом снимке экрана мы видим 5 таблиц по горизонтали. Как мы можем преобразовать эти 5 таблиц в выпадающее меню, как одно меню на боковой панели управления: так что я могу дать пользовательское имя.

Как насчет того, чтобы сделать еще один неупорядоченный список внутри элемента списка?

Похожие вопросы:

Я хочу сделать выпадающее меню, как у delicious на этой странице http://delicious.com/search? context=all&p=sql&lc=1 . На этой странице нажмите стрелку, которая находится рядом с кнопкой.

Я хочу создать выпадающее меню с изображениями (какая ссылка на sub menu.so как это создать? я немного новичок в веб-дизайне. я хочу создать меню типа Blossomboxjewelry я до сих пор пробовал это.

Я работаю над созданием нового сайта, и мне нужно выпадающее меню, чтобы выбрать количество чего-то на моем сайте. Но в то же время мне нужен этот выпадающий список, чтобы принимать текст. Так что.

я пытаюсь понять, как сделать вертикальное выпадающее меню, как на этом сайте: http://haririsportsandmedicals.de / Он должен drop-down, когда происходит событие onClick, а не при наведении мыши.

Я хочу знать, как я могу сделать выпадающее меню для определенной группы таблиц. Пример здесь: На этом снимке экрана мы видим 5 таблиц по горизонтали. Как мы можем преобразовать эти 5 таблиц в.

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

Это действительно вопрос новичка — но в любом случае .. каков наилучший способ сделать выпадающее меню 0-9? Сказал еще один способ — как сделать выпадающее меню, содержащее значения [0, 1, 2, 3.

У меня есть код от W3schools, в котором мы получаем выпадающее меню после нажатия на кнопку. Выпадающее меню не исчезает, когда мы нажимаем в другом месте. Я немного серфил, но это кажется.

Это просто, но я не могу найти решение. https://prnt.sc/q6mfb6 https://codepen.io/lastofdead/pen/WNbvXRP Как оказалось, выпадающее меню застряло в div. Что я должен сделать, чтобы получить.

как я могу сделать подобное выпадающее меню в flutter ?? и как добавить любой пункт в это меню ??

У меня возникли некоторые проблемы с созданием навигационного меню и его подменю для отображения с помощью псевдо-переключателя checkbox. Я посмотрел некоторые руководства и попробовал некоторые, но я не получаю желаемого результата — меню не появляется при включении checkbox.

HTML

CSS

Это как-то связано с html? CSS? Что может помешать отображению меню и его подменю? :/

Очень ценится в долгосрочной перспективе.

(P.S. У меня есть другое исходное изображение, используемое здесь, хотя это не должно противоречить тому, что я пытаюсь решить.)

1 ответ

  • Выпадающее навигационное меню перекрывается нижним div

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

Я только что реализовал выпадающее меню CSS из CSS Menu Maker , и оно, кажется, отлично работает, но только после того, как вы обновите страницу. Если вы зайдете в Euro Dressage Center , то увидите, что мое навигационное меню вверху появляется без применения CSS. Когда вы затем обновите страницу.

В вашем коде тег

    является родным братом селектора input#A

Но вы написали код css так, как если бы .dropdown-menu был родным братом селектора input#A . Вот почему ваш код в данный конкретный момент не работает.

Вы должны нацелиться на

    при нажатии кнопки input#A .

      является родным братом input#A .

    Измените код css в строке 81, как показано ниже

    Это изменение кода сделает ваш sub-menu видимым, когда вы нажмете Menu , как показано на рисунке ниже.

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

    Надеюсь, это поможет.

    Похожие вопросы:

    http://www.dynamicdrive.com/dynamicindex1/chrome/index.htm Привет, Я пытаюсь сделать выпадающее меню только с css. Я не хочу использовать javascript. Может ли кто-нибудь помочь мне сделать это ?

    Эффект, которого я пытаюсь достичь : В новом редизайне Twitter они реализовали выпадающее меню sticky для области настроек учетной записи. В принципе, когда вы нажимаете на свое имя пользователя в.

    У меня есть вертикальное навигационное меню, состоящее из вложенных списков, однако, когда подменю активно, все, что находится под этим меню, не кликабельно. Например, в ссылке ниже test crop.

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

    Я только что реализовал выпадающее меню CSS из CSS Menu Maker , и оно, кажется, отлично работает, но только после того, как вы обновите страницу. Если вы зайдете в Euro Dressage Center , то увидите.

    Я хотел бы сделать выпадающее меню checkbox, как показано на рисунке по ссылке ниже: http://postimg.org/image/49xpymtuf / проблема в том, что я не мог найти никаких примеров такого рода только.

    Я пытаюсь сделать навигационное меню без использования какого-либо изображения по CSS. Но я не знаю,как сделать эти треугольные границы в конце каждого пункта меню. Следующее изображение сделало бы.

    отличные ответы я получил на вопрос, который опубликовал ранее( появляются при наведении курсора и остаются видимыми ). Было очень сложно редактировать css и html, потому что я просто скопировал и.

    Я пытаюсь создать чистое и простое выпадающее меню HTML+CSS, которое будет открываться в режиме полной ширины под каждым элементом, а также будет нажимать контент. Это изображение и jsfiddle лучше.

    У меня есть два вопроса о моем выпадающем меню Когда я открываю свое выпадающее меню, оно находится справа, а не внизу. Как я могу это изменить? Подменю было правильно, все в порядке Когда я.

    Мне нужно сделать выпадающее меню в 2 колонки на сайте https://onlinehd1080.ru. Прописал класс, но ничего не поменялось. Где ошибся?

    .dropdown-menu column-count: 2 !important;
    >

Выпадающее меню, при наведении на пункт выводиться

Благодарю всех не равнодушных чужим проблемам — спасибо. Все правильно по сути нужна статика, постараюсь привести пример аналогию, дабы легче можно было представить что именно хотелось воплотить в жизнь. К примеру, есть обычное выпадающее меню с разными пунктами, к примеру есть пункт меню под названием — машины, при наведении на меню, как обычно снизу выходит выпадающее меню с подпунктами уже конкретных моделей машин (штук 5-6) такие как к примеру Ваз 2101, 2102 и т.д. и при наведении на подпункт к примеру Ваз 2101 сбоку выходит краткое описание заранее созданной статьи, т.е. наводим на Ваз 2101 сбоку выходит его уменьшенная фотография (из предварительного просмотра статьи), краткое описание статьи (собственно из той статьи до «подробно») и ссылка подробнее, которая ведёт на саму эту статью.

Попробовал потыкаться с tooltips-om занятная штука, дошел до того в название пункта меню если вставить тэг articles anythere то вместе с названием выходит статья, правда если так подумать то тултипс в этом случае не нужен, но штука все ровно интересная (впринципе я думаю можно ее как то применить и в моем случае, но пока не придумал как).

Если развивать по этому направлению тему, т.е. articles закидывать в название подпункта, то остается два вопроса, 1. как вывести вместе с описанием еще картинку, 2. и как сверстать и довести до ума саму выпадающию менюшку, дабы она сразу была большой и широкой, чтобы сбоку было место для вывода предпросмтра, и собственно сверстать расположение картинки текста и ссылки, т.к. сайт формируется динамически основываясь на пхп запросах, как воздействовать именно на сам предпросмотр и как ему задать свои ид, или классы, чтобы можно было ими управлять

По поводу разработчик/пользователь, можно сказать и то и другое, лукавить не буду, данная тема нужна для коммерческих целей, а именно для создание демонстрационного сайта в портфолио, не на продажу, а для рекламы. Сам сайт проектировал не я, а мой напарник который специализируется на этом, ну а моя роль выполнить и воплотить в жизнь нарисованный макет, и это мой так сказать челендж который нужно выполнить, т.к. если этого не сделать, смысла заниматься этим делом вообще нет, т.к. я считаю если человек разрабатывает сайты, он должен уметь все в этом направлении, т.к. если он чего то не может, то клиент просто пойдет к тому кто может, все просто. Если честно, уже помышляю начать изучение пхп и написание своего шаблона, т.к. чувствую некую беспомощность (в планах естественно было изучение и прокачки скиллов по разным направлениям, но параллельно с разработкой простых и средних сайтов на джумле, а тут просто тупо встал над этим макетом и хз как же эту фишку реализовать), как то так.

Сейчас еще раз все обдумал, вспомнив как на шаблоне от RocketTheme реализована была одна менюшка, там в один из подпунктов было встроенное место под модуль (имеется ввиду место, как на шаблоне вывод разных модулей и меню), и предпросмотр был реализован созданием модуля типа html-код в который легко можно вставить картинку, текст и ссылку. Позиция у модуля ставилась соответственна та которая встраивалась в подпункт меню. Получается наводим на меню выпадают пункты меню, наводим на то что со встроенным местом под модуль, и сбоку появляется модуль html-код со сверстаным вручную предпросмотром. Все клево, но есть 2 проблемы, на том шаблоне, я не знаю как но эта фишка была встроенная именно в определенный тип меню, при чем встроенная не в настройках и где то а на уровня верстки шаблона, т.е. внутри, и я не знаю как повторить создание модулей для других подпунктов, и не знаю как сверстать окно предпросмотра, т.к. она имеет фиксированные размеры, где и как на него повлиять я тоже не знаю. Может таким способом кто нить подскажет, как можно сделать, или где начинать копать, способ не самый простой (и скорее всего не самый правильный), но в плане работоспособности он пока самый рабочий из всех. Еще раз благодарю всех неравнодушных к чужим проблемам людей, спасибо

 

Bootstrap Dropdown Hover

Это компонент Bootstrap, предназначенный для поддержки многоуровневых раскрывающихся списков.

Совместимость с начальной загрузкой

Dropdownhover полностью совместим с собственным компонентом раскрывающегося списка Bootstrap. Их можно применить к одному и тому же элементу, обеспечивая поддержку событий hover, и click, . На небольших устройствах событие зависания игнорируется.

Установка

Просто включите стиль Dropdownhover и файлы сценариев после Bootstrap.

  

  
     Шаблон Bootstrap 101 

    
    

    
    
    

  
  
    

Привет, мир!

Пример

Оберните триггер раскрывающегося списка и раскрывающееся меню в .выпадающий как это важно. Добавьте data-hover = "dropdown" к кнопке основного действия или ссылке, чтобы активировать событие hover .

    

Выравнивание

В основном раскрывающееся меню позиционируется с помощью CSS, но если раскрывающееся меню находится вне области просмотра, оно позиционируется с помощью JavaScript в соответствии с окном.Также раскрывающееся меню поддерживает классы .dropdown-menu-right и .pull-right для выравнивания раскрывающегося меню по правому краю.

Могут возникнуть проблемы с кадрированием

Выпадающее меню использует CSS и JavaScript для позиционирования, но есть некоторые проблемы с «длинными» выпадающими меню на маленьких экранах. Плагин автоматически пытается найти лучшее решение, но есть вероятность, что часть раскрывающегося списка будет обрезана. Поэтому старайтесь избегать выпадающих меню, высота которых превышает 500 пикселей пикселей.

  
    ...
или
  • ...
  • Дерево

    Добавьте data-hover = "dropdown" к

    или

      , чтобы Dropdownhover работал со всей навигацией

        ...
      
      Анимации

      Добавьте data-animations = "{bottom} {left} {top} {right}" , чтобы включить пользовательские анимации. Используемый файл animate.css также может быть анимирован с помощью настраиваемой анимации, поскольку имена анимаций являются классами CSS для анимации.

      Нижняя анимация
      DefaultbouncebounceInbounceInDownbounceInLeftbounceInRightbounceInUpfadeInfadeInDownfadeInLeftfadeInRightfadeInUpflipflipInXflipInYrotateInrotateInDownLeftrotateInDownRightrotateInUpLeftrotateInUpRightslideInDownslideInLeftslideInRightslideInUpzoomInzoomInDownzoomInLeftzoomInRightzoomInUpflashhingelightSpeedInpulserubberBandshakeswingtadawobble

      Левая анимация
      DefaultbouncebounceInbounceInDownbounceInLeftbounceInRightbounceInUpfadeInfadeInDownfadeInLeftfadeInRightfadeInUpflipflipInXflipInYrotateInrotateInDownLeftrotateInDownRightrotateInUpLeftrotateInUpRightslideInDownslideInLeftslideInRightslideInUpzoomInzoomInDownzoomInLeftzoomInRightzoomInUpflashhingelightSpeedInpulserubberBandshakeswingtadawobble

      Лучшая анимация
      DefaultbouncebounceInbounceInDownbounceInLeftbounceInRightbounceInUpfadeInfadeInDownfadeInLeftfadeInRightfadeInUpflipflipInXflipInYrotateInrotateInDownLeftrotateInDownRightrotateInUpLeftrotateInUpRightslideInDownslideInLeftslideInRightslideInUpzoomInzoomInDownzoomInLeftzoomInRightzoomInUpflashhingelightSpeedInpulserubberBandshakeswingtadawobble

      Правильная анимация
      DefaultbouncebounceInbounceInDownbounceInLeftbounceInRightbounceInUpfadeInfadeInDownfadeInLeftfadeInRightfadeInUpflipflipInXflipInYrotateInrotateInDownLeftrotateInDownRightrotateInUpLeftrotateInUpRightslideInDownslideInLeftslideInRightslideInUpzoomInzoomInDownzoomInLeftzoomInRightzoomInUpflashhingelightSpeedInpulserubberBandshakeswingtadawobble

        data-animations = "fadeInDown fadeInLeft fadeInUp fadeInRight"  

      html — Как отображать раскрывающееся меню и элементы подменю при наведении курсора, не щелкая

      На этот вопрос уже есть ответы :

      Закрыт 3 года назад.

      Как показать элементы раскрывающегося меню при наведении курсора, а не при нажатии

      Здесь у меня есть раскрывающееся меню, которое отображается при нажатии, но я хочу, чтобы он отображал элементы меню при наведении курсора. То же самое и с пунктами подменю. Пожалуйста, дайте мне знать, если мне что-то не хватает

      HTML

        

      CSS

        @import 'https: // fonts.googleapis.com/css?family=Montserrat|Open+Sans ';
      .navbar-brand {
        семейство шрифтов: 'Montserrat', без засечек;
        текст-преобразование: прописные буквы
      }
      
      .navbar .nav {
        семейство шрифтов: «Open Sans», без засечек;
        преобразование текста: прописные буквы;
        межбуквенный интервал: 3 пикселя;
        размер шрифта: 1.2rem
      }
      
      .navbar-inverse {
        цвет фона: # 003300
      }
      
      .navbar-inverse .navbar-nav> .active> a: наведение,
      .navbar-inverse .navbar-nav> li> a: hover,
      .navbar-inverse .navbar-nav> li> a: focus {
        цвет фона: # 002200
      }
      
      .navbar-инверсия.navbar-nav> .активные> а,
      .navbar-инверсия .navbar-nav> .open> a,
      .navbar-инверсия .navbar-nav> .open> a,
      .navbar-inverse .navbar-nav> .open> a: hover,
      .navbar-инверсия .navbar-nav> .open> a,
      .navbar-inverse .navbar-nav> .open> a: hover,
      .navbar-inverse .navbar-nav> .open> a: focus {
        цвет фона: # 003300
      }
      
      .выпадающее меню {
        цвет фона: # 006B00
      }
      
      .dropdown-menu> li> a: hover,
      .dropdown-menu> li> a: focus {
        цвет фона: # 002200
      }
      
      .navbar-inverse {
        фоновое изображение: нет;
      }
      
      .выпадающее меню> li> a: hover,
      .dropdown-menu> li> a: focus {
        фоновое изображение: нет;
      }
      
      .navbar-inverse {
        цвет границы: # 003300
      }
      
      .navbar-inverse .navbar-brand {
        цвет: #FFFFFF
      }
      
      .navbar-inverse .navbar-brand: hover {
        цвет: # FFCC00
      }
      
      .navbar-inverse .navbar-nav> li> a {
        цвет: #FFFFFF
      }
      
      .navbar-inverse .navbar-nav> li> a: hover,
      .navbar-inverse .navbar-nav> li> a: focus {
        цвет: # FFCC00
      }
      
      .navbar-инверсия .navbar-nav> .active> a,
      .navbar-инверсия .navbar-nav>.открыть> а,
      .navbar-inverse .navbar-nav> .open> a: hover,
      .navbar-inverse .navbar-nav> .open> a: focus {
        цвет: # FFCC00
      }
      
      .navbar-inverse .navbar-nav> .active> a: наведение,
      .navbar-inverse .navbar-nav> .active> a: focus {
        цвет: # FFCC00
      }
      
      .dropdown-menu> li> a {
        цвет: #FFFFFF
      }
      
      .dropdown-menu> li> a: hover,
      .dropdown-menu> li> a: focus {
        цвет: # FFCC00
      }
      
      .navbar-inverse .navbar-nav> .dropdown> a .caret {
        цвет верхней границы: #FFFFFF
      }
      
      .navbar-инверсия .navbar-nav>.dropdown> a: hover .caret {
        цвет верхней границы: #FFFFFF
      }
      
      .navbar-inverse .navbar-nav> .dropdown> a .caret {
        цвет нижней границы: #FFFFFF
      }
      
      .navbar-inverse .navbar-nav> .dropdown> a: hover .caret {
        цвет нижней границы: #FFFFFF
      }
        

      Мега-раскрывающихся меню при наведении курсора — Smashing Magazine

      Краткое резюме ↬

      Нужны ли нам в 2021 году мега-выпадающие всплывающие меню? Возможно нет.Давайте рассмотрим, что нужно учитывать при проектировании и создании мега-раскрывающегося списка, альтернативы всплывающим меню и мелкие детали для разработки лучшего UX.

      Сложные веб-сайты часто полагаются на сложную навигацию. Когда веб-сайт содержит тысячи страниц, часто в сочетании с микро-веб-сайтами и сотнями подразделов, в конечном итоге навигация станет глубокой и широкой. А с такой сложной многоуровневой навигацией , для показа широты возможностей требуется совсем немного места.Подумайте о крупных розничных магазинах электронной коммерции и крупных корпоративных сайтах, обслуживающих множество аудиторий и имеющих множество точек входа.

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

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

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

      Один из многих. Мега-выпадающее меню открывается при наведении курсора на Wayfair.com. Обычный компонент для крупных розничных магазинов. (Большой превью)

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

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

      Типичные сценарии, которые мы обычно исследуем:

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

      Навигация в парящих туннелях может быть неприятной. От: Выпадающие меню с более простыми путями перемещения мыши. (Большой превью)

      Однако есть и другие ситуации, которые следует учитывать. Назову лишь несколько:

      1. Заказчик хочет искать варианты в мегаполисе при вводе автозаполнения поиска. Для этого они должны постоянно открывать мега-раскрывающийся список или использовать отдельные вкладки просмотра, расположенные рядом.
      2. Заказчик может использовать трекпад (или мышь) для управления большим дополнительным дисплеем, поэтому движения указателя будут более медленными, резкими и неточными.Это привело бы к тому, что мега-раскрывающийся список непроизвольно открывался бы каждый раз, когда пользователь делает паузу при переходе к CTA или корзине покупок в верхней части страницы.
      3. Клиент хочет открыть страницу категории , поэтому он переходит к ссылке категории, щелкает по ней, но мерцает, потому что мега-раскрывающийся список отображается с задержкой.
      4. С вложенными подменю в мега-раскрывающемся списке заказчик хочет изучить аналогичные элементы в той категории, к которой он в настоящее время относится, но из-за вложенности им приходится снова и снова открывать мега-выпадающее меню, и путешествовать по одному и тому же парящему туннелю снова и снова.
      5. Представьте себе ситуацию, когда вы хотите изменить размер окна , и как только вы собираетесь привязаться к правому краю окна, всплывающее меню продолжает отображаться — просто потому, что вы слишком близко переместили курсор мыши.
      6. Пользователь начинает медленно прокручивать , чтобы оценить содержимое страницы, но меню продолжает появляться. И каждый раз, когда пользователь отталкивает курсор, чтобы прочитать содержимое мега-выпадающего меню, меню случайно исчезает.

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

      Задержка входа / выхода при наведении

      Одним из первых решений, а также одним из наиболее распространенных, является введение задержки на вход / выход при наведении курсора. Нам нужно убедиться, что меню не открывается и не закрывается слишком рано . Для этого мы вводим задержку, обычно около 0,5 секунды. Это означает, что мы предоставляем клиентам буфер продолжительностью около 0,5 секунды, чтобы:

      • При необходимости пересечь траекторию к удаленной цели, или
      • Укажите, что они намереваются изучить навигацию, оставаясь на ссылке на категорию в мега-раскрывающемся списке, или
      • Исправьте ошибку, если они случайно вышли за границы мега-выпадающего списка.

      Другими словами, пока клиент остается в пределах оверлея мега-выпадающего меню, мы продолжаем его отображать. И мы скрываем оверлей, как только клиент переместил курсор мыши за пределы оверлея суб-навигации как минимум на 0,5 секунды.

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

      ADAC.de с задержкой нарастания 100 мс и переходом затухания 300 мс. Это может быстро разочаровать людей, которые часто используют мега-выпадающие списки.

      Некоторые реализации добавляют переход fade-in / fade-out , чтобы сделать появление мега-выпадающего меню менее внезапным, но на практике это приводит к увеличению задержки входа / выхода до 0,8–0,9 с, что также вводит более заметное отставание.Примером этого является ADAC.de с задержкой нарастания 100 мс и переходом затухания 300 мс. (Однако этот переход не применяется при переключении между разными категориями в мега-раскрывающемся списке.)

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

      Прощающие пути движения мыши: треугольник траектории

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

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

      Старомодно, но хорошо: треугольник амазонки соединяет текущее положение указателя мыши и правый верхний и правый нижний края контейнера списка категорий. (Большой превью)

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

      Крис Койер подчеркивает некоторые технические сложности этой техники в своем посте «Выпадающие меню с более простыми путями движения мыши», а также в простой демонстрации JavaScript Александра Попова в «Меню с учетом цели».

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

      Области выхода пути SVG

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

      Реализация Hakim el Hattab, которая динамически рисует области с помощью SVG в зависимости от положения элемента навигации на экране. (Большой превью)
      Решение

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

      Как рассчитываются пути SVG. Из фантастического выступления Хакима о создании лучших интерфейсов.

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

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

      Больше после прыжка! Продолжить чтение ниже ↓

      Ловушки мега-выпадающих списков, открывающихся при наведении курсора

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

      Мега-выпадающие списки, открывающиеся при наведении курсора, имеют множество проблем с доступностью. Очевидно, нам необходимо поддерживать навигацию внутри — мегараспадающего меню для пользователей, использующих только клавиатуру, и мы должны гарантировать, что элементы также должным образом объявляются для программ чтения с экрана.Но также с точки зрения общей компоновки, мы должны быть осторожны с тем, где размещается мега-выпадающий список.

      Поиск прерван мега-выпадающим списком

      Если какая-либо важная функция отображается достаточно близко к мега-выпадающему меню навигации, это обычно вызывает много проблем и жалоб. Например, если строка поиска отображается над мега-выпадающей областью , это в конечном итоге вызовет невероятное количество трения и разочарования.

      Если не используется достаточно длительная задержка на вход / выход при наведении курсора, оверлей-мегаползун всегда будет мешать между поиском и результатами поиска, как в случае с Thesauraus.com ниже. Каждый раз, когда пользователь уходит от панели поиска к результатам (и обратно), ему мешает мега-выпадающий список.

      Разочаровывающий опыт на Thesaurus.com. Меню продолжает отображаться вверх и вниз при переходе к (относительно небольшой) панели поиска.

      Несколько суб-навигации появляются с задержкой

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

      Несколько суб-навигации открываются при наведении, с задержкой, одна за другой. Довольно громоздкий пример Vodafone.

      В приведенном выше примере имеется 4 уровня навигации, отображаемых друг под другом, и 2 из них открываются при наведении курсора с переходом 300 мс . В то же время, поскольку каждый заголовок категории также является ссылкой на страницу категории, пользователи также могут переходить прямо на страницу категории.Но после того, как они щелкнули — и пока они ждут появления новой страницы, — всплывающее меню ненадолго станет наполовину разорванным, часто не имея достаточно времени, чтобы перейти в нужный вид для регистрации покупателем.

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

      Кроме того, поскольку 4-й уровень навигации появляется только при наведении курсора, если 3-й уровень навигации уже открыт, а 3-й уровень навигации появляется только при наведении курсора, если 2-й уровень навигации уже открыт, для перемещения между страницами 4-й уровень, пользователи должны повторно открывать навигацию снова и снова и помнить, где они нажимали ранее, чтобы навести туннель на 4-й уровень.

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

      4 уровня навигации на Vodafone. Было бы неплохо держать их всех на виду, по крайней мере, на 4-м уровне. (Большой превью)

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

      Заголовки категорий делают слишком много вещей

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

      В одном из предыдущих проектов The Guardian в раскрывающемся списке была ссылка «Спортивный дом». (Большой превью)

      Есть несколько вариантов решения этой проблемы:

      1. Чтобы указать, что заголовок категории является ссылкой, может быть полезно подчеркнуть it,
      2. Чтобы сделать различие между заголовком категории и раскрывающимся списком более очевидным, добавьте вертикальный разделитель (например,грамм. вертикальная линия) и значок (шеврон),
      3. Оставьте заголовок категории, открывающий только мега-раскрывающийся список, а добавьте ссылку на раздел «Главная» категории в пределах мега-раскрывающегося оверлея. Это также может быть заметная кнопка «Просмотреть все параметры» (см. Пример The Guardian выше).

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

      В первом случае они обычно ожидают, что откроется раскрывающийся список, а во втором — появится страница категории. Что еще более важно, они, похоже, ожидают, что меню откроется при нажатии / щелчке , а не при наведении курсора на .

      Mailchimp — хороший пример мега-раскрывающегося списка, который позволяет избежать большинства проблем, описанных выше, при этом названия категорий действуют только для открытия мега-раскрывающегося списка. Раскрывающийся список доступен для пользователей клавиатуры со стилем : focus . После выбора каждая категория выделяется как с подчеркиванием , и это может заставить некоторых людей предположить, что заголовок превратился в ссылку, особенно потому, что подчеркивание точно такое же подчеркивание для ссылки «Цены» в верхней части навигации.Возможно, выделение его цветом фона было бы немного более надежным. Отличный справочный пример для всплывающих меню.

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

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

      Тем не менее, рекомендуется проверить, остаются ли время взаимодействия и рейтинг кликов прежними (или увеличиваются), если навигация при наведении курсора заменяется навигацией по нажатию / нажатию .Фактически, большинство проблем, перечисленных выше, можно легко решить, выполнив именно это: наложение мега-выпадающего меню будет открываться и закрываться только тогда, когда пользователь явно запрашивает это конкретное действие. Следовательно, нет необходимости отслеживать указатель мыши или точно настраивать задержки входа / выхода при наведении курсора. Кроме того, поскольку на мобильных устройствах все равно нет зависания, нам нужно предоставить возможность открывать меню при нажатии / щелчке для мобильных устройств тем или иным способом, чтобы мы могли просто сохранить это так и для больших экранов.

      Хорошим примером этого в действии является веб-сайт Еврейского музея в Берлине.Мало того, что верхняя панель навигации открывает мега-раскрывающиеся меню при нажатии и щелчке, но также и навигация на боковой панели на основе значков. Кроме того, поскольку пользователь должен активно открывать / закрывать оверлей, мы можем выделить выбранную категорию с помощью стилей : focus /: active .

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

      Однако, поскольку на веб-сайте не так много параметров навигации для отображения, похоже, это работает очень хорошо. И это отличный справочный пример , который следует иметь в виду при работе с доступным мега-раскрывающимся списком, который открывается при нажатии / щелчке.

      Если у вас немного больше навигации, чуть более сложным примером является Allianz.de. Вместо использования одного большого оверлея с мега-раскрывающимся списком, суб-навигация сгруппирована в более мелкие раскрывающиеся списки. Однако в меню не всегда отображаются все параметры для каждой категории.Вместо этого он выделяет наиболее важных опций со ссылкой для просмотра всех опций внизу. Единственная деталь, которой может не хватать, — это шеврон, указывающий на то, что раскрывающееся меню появляется при нажатии.

      На мобильных устройствах мега-раскрывающийся список представляет собой группу аккордеонов с хорошим выбором цветового контраста и отступов для обозначения иерархии навигации. Каждый аккордеон никогда не отображает более 4 элементов навигации одновременно. Отличный справочный пример для сложной мега-выпадающей навигации, которая хорошо работает.

      Вроде все как надо. Группа гармошек с отступами и хорошим типографским / цветовым контрастом на Allianz.de. (Большой превью)

      Если вы ищете техническую реализацию, вы можете проверить «Хвала однозначному меню щелчков», в котором Марк Рут-Уайли показывает, как создать доступное меню щелчков. Идея состоит в том, чтобы начать создание меню в виде контекстного меню только для CSS, которое использует li: hover> ul и li: focus-within> ul для отображения подменю.

      Затем мы используем JavaScript для создания элементов

      Bootstrap Nav Menu Выпадающее меню при наведении

      По умолчанию, когда вы используете панель навигации, как показано в примере Bootstrap в разделе «Компоненты», раскрывающийся список отображается только при нажатии на него. Но если вы хотите, чтобы это происходило при наведении курсора на раскрывающийся список, вам нужно просто добавить несколько строк кода в свой блок CSS.

        Фрагмент CSS Язык: Css
      .dropdown: hover .dropdown-menu {
         дисплей: блок;
      }  

      Пример кода:

       

    Параметры раскрывающегося меню панели навигации будут отображаться при наведении курсора, а не при нажатии по умолчанию.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *