Как сделать динамическое меню в bootstrap?

Пользователь

от ally , в категории: HTML/CSS , 9 месяцев назад

Как сделать динамическое меню в bootstrap?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от eudora , 9 месяцев назад

@ally 

Для создания динамического меню в Bootstrap вы можете использовать функциональность JavaScript и дополнительные классы Bootstrap.


Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Dynamic Bootstrap Menu</title>
  <!-- подключение стилей Bootstrap -->
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
  <nav class="navbar navbar-expand-lg navbar-light bg-light">
    <a class="navbar-brand" href="#">Меню</a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarNav">
      <ul class="navbar-nav">
        <li class="nav-item active">
          <a class="nav-link" href="#">Главная</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">О нас</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Контакты</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Блог</a>
        </li>
      </ul>
    </div>
  </nav>

  <!-- подключение скриптов Bootstrap -->
  <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>


Вышеуказанный код создает стандартное статичное меню с помощью элементов <nav>, <ul>, <li> и <a> из Bootstrap.


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


Пример кода JavaScript, который добавляет новые элементы меню:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
// Получаем контейнер для списка меню
var menuContainer = document.querySelector('.navbar-nav');

// Данные для динамического меню
var menuData = [
  { name: 'Ссылка 1', url: '#' },
  { name: 'Ссылка 2', url: '#' },
  { name: 'Ссылка 3', url: '#' }
];

// Динамически создаем элементы меню
menuData.forEach(function(item) {
  var listItem = document.createElement('li');
  listItem.classList.add('nav-item');
  var link = document.createElement('a');
  link.classList.add('nav-link');
  link.href = item.url;
  link.textContent = item.name;
  listItem.appendChild(link);
  menuContainer.appendChild(listItem);
});


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


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

Пользователь

от delphine_bartoletti , 2 месяца назад

@ally 

Также можно использовать AJAX запросы для загрузки динамического содержимого меню с сервера. Ниже пример как это можно сделать:


Пример HTML структуры:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<nav class="navbar navbar-expand-lg navbar-light bg-light">
    <a class="navbar-brand" href="#">Меню</a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarNav">
        <ul class="navbar-nav" id="dynamic-menu">
            <!-- Динамическое меню будет загружено здесь -->
        </ul>
    </div>
</nav>


JavaScript для загрузки динамического меню через AJAX:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
document.addEventListener("DOMContentLoaded", function() {
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        if (xhr.readyState === XMLHttpRequest.DONE) {
            if (xhr.status === 200) {
                var menuContainer = document.getElementById('dynamic-menu');
                var menuData = JSON.parse(xhr.responseText);
                menuData.forEach(function(item) {
                    var listItem = document.createElement('li');
                    listItem.classList.add('nav-item');
                    var link = document.createElement('a');
                    link.classList.add('nav-link');
                    link.href = item.url;
                    link.textContent = item.name;
                    listItem.appendChild(link);
                    menuContainer.appendChild(listItem);
                });
            } else {
                console.error('Ошибка при загрузке меню');
            }
        }
    };

    xhr.open('GET', 'menu.json', true); // Загружаем данные с сервера (можно использовать любой другой адрес)
    xhr.send();
});


Пример содержимого файла menu.json:

1
2
3
4
5
[
    { "name": "Ссылка 1", "url": "#" },
    { "name": "Ссылка 2", "url": "#" },
    { "name": "Ссылка 3", "url": "#" }
]


В данном примере, JavaScript код загружает содержимое меню из файла menu.json и динамически генерирует элементы меню на основе полученных данных.