Получите выпадающее меню для работы внутри / снаружи меню гамбургера - PullRequest
0 голосов
/ 26 марта 2019

Я хочу, чтобы меню «Язык» работало как раскрывающееся меню, когда оно на рабочем столе, и оставалось неактивным раскрывающимся меню, когда оно на мобильном телефоне.

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

Языковое меню:

https://i.imgur.com/1vCEc2C.png

&&

https://i.imgur.com/R4AKUDG.png

Что я хочу сделать на рабочем столе:

https://i.imgur.com/8jFIVi5.png

Я сделал меню кликабельным на рабочем столе с помощью кода JavaScript, но на мобильном устройстве меню работает странно.

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

На мобильном телефоне меню выглядит странно, вместо того, чтобы быть отключенным до щелчка.

JSFiddle -> <script async src="//jsfiddle.net/jkuwg3ac/embed/"></script>

1 Ответ

0 голосов
/ 26 марта 2019

Существует лучший способ создать языковое меню, используя Bulma без JavaScript .

Языковое меню HTML :

<div class="select">
  <select>
    <option selected>English</option>
    <option>Italian</option>
    <option>Arabic</option>
  </select>
</div>

Вот ваш проект, использующий мою идею:

document.addEventListener('DOMContentLoaded', () => {

  // Get all "navbar-burger" elements
  const $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0);

  // Check if there are any navbar burgers
  if ($navbarBurgers.length > 0) {

    // Add a click event on each of them
    $navbarBurgers.forEach(el => {
      el.addEventListener('click', () => {

        // Get the target from the "data-target" attribute
        const target = el.dataset.target;
        const $target = document.getElementById(target);

        // Toggle the "is-active" class on both the "navbar-burger" and the "navbar-menu"
        el.classList.toggle('is-active');
        $target.classList.toggle('is-active');

      });
    });
  }

});
  
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Test!</title>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.4/css/bulma.min.css">
  <script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script>
</head>

<body>


  <nav class="navbar has-text-centered" role="navigation" aria-label="main navigation">
    <div class="navbar-brand">
      <a class="navbar-item" href="https://bulma.io">
        <img src="https://bulma.io/images/bulma-logo.png" width="112" height="28">
      </a>

      <a role="button" class="navbar-burger" aria-label="menu" aria-expanded="false" data-target="navMenu">
        <span aria-hidden="true"></span>
        <span aria-hidden="true"></span>
        <span aria-hidden="true"></span>
      </a>
    </div>

    <div id="navMenu" class="navbar-menu">
      <div class="navbar-start">
        <a class="navbar-item">
            Home
          </a>

        <a class="navbar-item">
            Documentation
          </a>

      </div>

      <div class="navbar-end">
        <div class="select">
          <select>
            <option selected>English</option>
            <option>Italian</option>
            <option>Arabic</option>
          </select>
        </div>

      </div>


    </div>
  </nav>

</body>

</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...