Разделите UL на два столбца, но не разбивайте вложенные UL.

Я пытаюсь разбить UL с вложенным UL в LI на два столбца, и хотя мне удалось использовать

.grid-list {
  -webkit-column-count: 2;
  -moz-column-count: 2;
  column-count: 3;
}

Но вложенные UL ломаются (некоторые в столбце 1 и некоторые в столбце 2 в зависимости от того, где разрыв), и я хотел бы сохранить их вместе. Если вы посмотрите на скриншот ниже, вы увидите, что «Планирование и зонирование» находится внизу, и я хотел бы, чтобы он был вверху следующего столбца, если это возможно. UL, который я использую, приведен ниже. Есть идеи, как это сделать с помощью jQuery или простого CSS? Это вызов!

Вот мой код:

<div class = "mega-menu">
   <ul class = "sub-nav">
      <li>
         <a href = "#" id = "Village Council" target = "">Village Council</a>
         <ul>
            <li>
               <a href = "#" id = "Agendas &amp; Minutes" target = "">Agendas &amp; Minutes</a>
            </li>
         </ul>
      </li>
      <li>
         <a href = "#" id = "Boards" target = "">Boards</a>
         <ul>
            <li>
               <a href = "#" id = "Planning Board" target = "">Planning Board</a>
            </li>
            <li>
               <a href = "#" id = "Board of Adjustment" target = "">Board of Adjustment</a>
            </li>
            <li>
               <a href = "#" id = "Parks, Recreation, and Greenways Board" target = "">Parks, Recreation, and Greenways Board</a>
            </li>
            <li>
               <a href = "#" id = "Committees" target = "">Committees</a>
            </li>
         </ul>
      </li>
      <li>
         <a href = "#" id = "Ordinances" target = "">Ordinances</a>
      </li>
      <li>
         <a href = "#" id = "Finance &amp; Tax" target = "">Finance &amp; Tax</a>
         <ul>
            <li>
               <a href = "#" id = "Budgets &amp; Reports" target = "">Budgets &amp; Reports</a>
            </li>
            <li>
               <a href = "#" id = "Taxes" target = "">Taxes</a>
            </li>
            <li>
               <a href = "#" id = "Contact Finance" target = "">Contact Finance</a>
            </li>
         </ul>
      </li>
      <li>
         <a href = "#" id = "Planning &amp; Zoning" target = "">Planning &amp; Zoning</a>
         <ul>
            <li>
               <a href = "#" id = "Maps" target = "">Maps</a>
            </li>
            <li>
               <a href = "#" id = "Land Use" target = "">Land Use</a>
            </li>
            <li>
               <a href = "#" id = "Permitting" target = "">Permitting</a>
            </li>
            <li>
               <a href = "#" id = "Ordinances" target = "">Ordinances</a>
            </li>
            <li>
               <a href = "#" id = "Projects" target = "">Projects</a>
            </li>
         </ul>
      </li>
      <li>
         <a href = "#" id = "Public Safety" target = "">Public Safety</a>
      </li>
      <li>
         <a href = "#" id = "Parks &amp; Recreation" target = "">Parks &amp; Recreation</a>
         <ul>
            <li>
               <a href = "#" id = "Marvin Efird Park" target = "">Marvin Efird Park</a>
            </li>
            <li>
               <a href = "#" id = "Reserve the Barn" target = "">Reserve the Barn</a>
            </li>
            <li>
               <a href = "#" id = "Trails &amp; Greenways" target = "">Trails &amp; Greenways</a>
            </li>
         </ul>
      </li>
      <li>
         <a href = "#" id = "Transportation" target = "">Transportation</a>
      </li>
      <li>
         <a href = "#" id = "Staff Directory" target = "">Staff Directory</a>
      </li>
   </ul>
</div>
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Раскрытие чувствительных данных
Раскрытие чувствительных данных
Все внешние компоненты, рассмотренные здесь до сих пор, взаимодействуют с клиентской стороной. Однако, если они подвергаются атаке, они не...
Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Руководство ChatGPT по продаже мини JS-файлов
Руководство ChatGPT по продаже мини JS-файлов
JS-файл - это файл, содержащий код JavaScript. JavaScript - это язык программирования, который в основном используется для добавления интерактивности...
3
0
720
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать свойство CSS break-inside/page-break-inside, чтобы избежать разрыва столбца в середине элемента li. Оба свойства делают одно и то же, но здесь они используются в тандеме для более широкой совместимости браузеров.

body {
  background-color: #777;
}
.mega-menu {
  column-count: 2;
}
ul {
  margin-top: 0;
}
li {
  list-style-type: none;
}
li a {
  color: #9d9;
  text-decoration: none;
}
li li a {
  color: #fff;
}
li {
  page-break-inside: avoid;
  break-inside: avoid-column;
}
<div class = "mega-menu">
  <ul class = "sub-nav">
    <li>
      <a href = "#" id = "Village Council" target = "">Village Council</a>
      <ul>
        <li>
          <a href = "#" id = "Agendas &amp; Minutes" target = "">Agendas &amp; Minutes</a>
        </li>
      </ul>
    </li>
    <li>
      <a href = "#" id = "Boards" target = "">Boards</a>
      <ul>
        <li>
          <a href = "#" id = "Planning Board" target = "">Planning Board</a>
        </li>
        <li>
          <a href = "#" id = "Board of Adjustment" target = "">Board of Adjustment</a>
        </li>
        <li>
          <a href = "#" id = "Parks, Recreation, and Greenways Board" target = "">Parks, Recreation, and Greenways Board</a>
        </li>
        <li>
          <a href = "#" id = "Committees" target = "">Committees</a>
        </li>
      </ul>
    </li>
    <li>
      <a href = "#" id = "Ordinances" target = "">Ordinances</a>
    </li>
    <li>
      <a href = "#" id = "Finance &amp; Tax" target = "">Finance &amp; Tax</a>
      <ul>
        <li>
          <a href = "#" id = "Budgets &amp; Reports" target = "">Budgets &amp; Reports</a>
        </li>
        <li>
          <a href = "#" id = "Taxes" target = "">Taxes</a>
        </li>
        <li>
          <a href = "#" id = "Contact Finance" target = "">Contact Finance</a>
        </li>
      </ul>
    </li>
    <li>
      <a href = "#" id = "Planning &amp; Zoning" target = "">Planning &amp; Zoning</a>
      <ul>
        <li>
          <a href = "#" id = "Maps" target = "">Maps</a>
        </li>
        <li>
          <a href = "#" id = "Land Use" target = "">Land Use</a>
        </li>
        <li>
          <a href = "#" id = "Permitting" target = "">Permitting</a>
        </li>
        <li>
          <a href = "#" id = "Ordinances" target = "">Ordinances</a>
        </li>
        <li>
          <a href = "#" id = "Projects" target = "">Projects</a>
        </li>
      </ul>
    </li>
    <li>
      <a href = "#" id = "Public Safety" target = "">Public Safety</a>
    </li>
    <li>
      <a href = "#" id = "Parks &amp; Recreation" target = "">Parks &amp; Recreation</a>
      <ul>
        <li>
          <a href = "#" id = "Marvin Efird Park" target = "">Marvin Efird Park</a>
        </li>
        <li>
          <a href = "#" id = "Reserve the Barn" target = "">Reserve the Barn</a>
        </li>
        <li>
          <a href = "#" id = "Trails &amp; Greenways" target = "">Trails &amp; Greenways</a>
        </li>
      </ul>
    </li>
    <li>
      <a href = "#" id = "Transportation" target = "">Transportation</a>
    </li>
    <li>
      <a href = "#" id = "Staff Directory" target = "">Staff Directory</a>
    </li>
  </ul>
</div>

Это потрясающе, песочница @dev и именно то, что мне было нужно. Я только что узнал что-то новое. Спасибо за помощь!

blair260 21.12.2020 14:31

Другие вопросы по теме