Выпадающее меню при фокусе

107
15 июня 2019, 07:30

Есть кнопка с меню

<button class="show-menu" style="display: flex; align-items: center;">
  <h3>Помощь</h3>
</button>
<ul class="menu menu--hide">
  <li class="menu__item" style="display: flex; align-items: center;" >
    <p>Тест</p>
  </li>
  <li class="open-record-panel-btn menu__item" style="display: flex; align-items: center;" >
    <p>Тест2</p>
  </li>
</ul>

И такой код, который навешивает событие (скрывает открывает), но работает оно при клике, а надо фокусом. Подскажите как сделать, чтобы кнопка срабатывала фокусом, а при клике на другую область меню скрывалось

var linkBtn = document.querySelector('.show-menu');
if (linkBtn) {
  linkBtn.addEventListener('click', function(event) {
    event.preventDefault();
    var menuList = document.querySelector('.menu--hide');
    if(menuList) {
      menuList.classList.toggle('menu--show');
    }
  });
}
Answer 1

Можно сделать вообще на чистом CSS. Codepen: https://codepen.io/rogatnev-nikita/full/wRMExj

.menu { 
    display: none; 
} 
 
.show-menu:focus + .menu { 
    display: block; 
} 
<button class="show-menu"> 
  <h3>Помощь</h3> 
</button> 
<ul class="menu"> 
  <li class="menu__item"> 
    <p>Тест</p> 
  </li> 
  <li class="open-record-panel-btn menu__item"> 
    <p>Тест2</p> 
  </li>      
</ul>

Если нужен JS, то отслеживайте событие focus метода EventListener

document.addEventListener('focus', function(event) {
    /* Ваш код */
}, true);
READ ALSO
Скачет курсор при срабатывании скрипта

Скачет курсор при срабатывании скрипта

Не могу разобраться почему при вставке кавычек в середине текста, курсор уходит в конец текста, как это исправить?

110
Создание скриптов Mysql в Init.d на Linux

Создание скриптов Mysql в Init.d на Linux

Потребовалось установить mysql 80 на Linux(Debian)

116
Почему mysql запрос отдает None?

Почему mysql запрос отдает None?

В бд ничего не записывается Но вывод данных из бд работает, в чем беда?

135
Валидатор формы ООП

Валидатор формы ООП

Здравствуйте помогите пожалуйста нужно сделать валидатор на ООП для формы он должен содержать: ФИО - текст, начинается с большой буквыАдрес-...

133