Как правильно организовать меню в формате колонок с использованием HTML и CSS?

Я работаю с WordPress и получаю навигационное меню в формате списков. Мне нужно организовать его вывод так, чтобы элементы меню располагались по столбикам, при этом необходимо использовать теги `li`. Мой текущий вывод выглядит следующим образом (красный текст указывает на то, что должен начинаться новый столбик):
  • 19 марта 2025 г. 0:44
Ответы на вопрос 2
Для организации меню в формате колонок с использованием HTML и CSS, вы можете использовать несколько подходов. Один из самых простых способов — это использовать CSS Flexbox или Grid. Ниже приведён пример, который поможет вам создать меню с выводом элементов в столбиках, сохраняя при этом структуру списков.

### HTML

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

```html
<nav>
    <ul class="menu">
        <li><a href="#item1">Пункт 1</a></li>
        <li><a href="#item2">Пункт 2</a></li>
        <li><a href="#item3">Пункт 3</a></li>
        <li><a href="#item4">Пункт 4</a></li>
        <li><a href="#item5">Пункт 5</a></li>
        <li><a href="#item6">Пункт 6</a></li>
        <li><a href="#item7">Пункт 7</a></li>
        <li><a href="#item8">Пункт 8</a></li>
        <li><a href="#item9">Пункт 9</a></li>
    </ul>
</nav>
```

### CSS

Используя Flexbox, вы можете создать несколько колонок следующим образом:

```css
.menu {
    display: flex; /* Используем Flexbox для выравнивания элементов */
    flex-wrap: wrap; /* Позволяем элементам обтекать */
    list-style: none; /* Убираем стандартные маркеры списка */
    padding: 0; /* Убираем отступы у ul */
    margin: 0; /* Убираем внешние отступы у ul */
    width: 100%; /* Указываем ширину контейнера */
}

.menu li {
    flex: 1 0 30%; /* Задаём ширину столбцов, можно регулировать процент */
    box-sizing: border-box; /* Учитываем границы и отступы в ширине */
    padding: 10px; /* Отступы внутри li */
}

.menu li a {
    text-decoration: none; /* Убираем подчеркивание с ссылок */
    color: black; /* Цвет текста */
    display: block; /* Делаем ссылку блочным элементом для большей площади нажатия */
}
```

### Результат

С помощью такого CSS ваши пункты меню будут расположены в виде нескольких колонок. Вы можете регулировать ширину столбиков, изменяя значение `flex: 1 0 30%;`, например, на `25%`, чтобы получить 4 колонки.

### Альтернативный метод — CSS Grid

Если вы хотите более сложные макеты, можно использовать CSS Grid:

```css
.menu {
    display: grid;
    grid-template-columns: repeat(3, 1fr); /* Какое количество столбиков вы хотите */
    list-style: none; /* Убираем стандартные маркеры списка */
    padding: 0; /* Убираем отступы у ul */
    margin: 0; /* Убираем внешние отступы у ul */
}

.menu li {
    padding: 10px; /* Отступы внутри li */
}

.menu li a {
    text-decoration: none; /* Убираем подчеркивание с ссылок */
    color: black; /* Цвет текста */
    display: block; /* Делаем ссылку блочным элементом */
}
```

С помощью любой из указанных выше стратегий вы сможете организовать ваше меню в колонках, сохраняя семантику и правильное использование тегов HTML.
.navbar-footer-list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(4, 1fr);
  grid-template-areas: "i1 c2 c3"
                       "i2 c2 c3"
                       "i3 c2 c3"
                       "i4 c2 c3";
}
.navbar-footer-list > li:nth-child(1) { grid-area: i1; }
.navbar-footer-list > li:nth-child(2) { grid-area: i2; }
.navbar-footer-list > li:nth-child(3) { grid-area: i3; }
.navbar-footer-list > li:nth-child(4) { grid-area: i4; }
.navbar-footer-list > li:nth-child(5) { grid-area: c2; }
.navbar-footer-list > li:nth-child(6) { grid-area: c3; }
Похожие вопросы