Разбить список на столбцы равных элементов, используя flex - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть два списка, которые расположены рядом.На рабочем столе эти списки будут отображать элементы li в виде столбца.Однако для мобильных устройств я хочу, чтобы li превратились в макет с двумя столбцами с одинаковыми параметрами в каждом столбце.То есть, если всего будет 11 li элементов, это будет один столбец из 6, а другой - с пятью.Не нужно, чтобы 8 элементов в одном столбце, а затем 3 в другом.

Чего я хочу добиться:

  • Столбец с максимум пятью элементами li.
  • Если в столбце есть список только из пяти элементов, показывать только один столбец с центром.

В моем текущем подходе используется свойство max-height, которое ломает макет на мобильном устройстве, но это единственныйподход, с которым я сталкивался, какие работы.

Пример кода:

.main__wrapper{
  display:flex;
  flex-direction: row;
}

.wrapper-one{
  padding-left:40px;
}

ul{  
  list-style-type: none;
  padding: 0;
  margin: 0;
  text-align:center;
}

ul li{
  font-size: 1rem;
  overflow: hidden;
}

 @media (max-width:576px) {
   ul{
    -webkit-flex-flow: wrap column;
    text-align: center;
    flex-flow: wrap column;
    max-height: 400px;
    border: 1px solid red;
   }
   ul li{
     max-width: 50%;
   }
   
 }
<div class="main__wrapper">

<div class="wrapper-one">

<h3>Heading 1</h3>
<ul>
  <li>Test</li>
  <li>Test</li>
  <li>Test</li>
  <li>Test</li>
  <li>Test</li>
  <li>Test</li>
  <li>Test</li>
  <li>Test</li>
  <li>Test</li>
  <li>Test</li>
  <li>Test</li>
</ul>

</div>
<div class="wrapper-one">
<h3>Heading 2</h3>
<ul>
  <li>Test</li>
  <li>Test</li>
  <li>Test</li>
  <li>Test</li>
  <li>Test</li>
  <li>Test</li>
  <li>Test</li>
  <li>Test</li>
</ul>
</div>
</div>

В настоящее время мой список отображается в двух столбцах, если имеется более пяти элементов списка, но max-width: 400px; нарушает макет на мобильном телефоне.Ширина используется для обеспечения максимального 5 в каждом столбце.

iPhone 6/7/8 Plus:

enter image description here

Второй список (типы видео), в этом столбце пять ликов, поэтому я хочу, чтобы он был по центру.

iPhone 6/7/8:

enter image description here

Как видите, структура разбивается на экранах меньшего размера.

1 Ответ

0 голосов
/ 22 ноября 2018

Вот, пожалуйста, попробуйте фрагмент на весь экран и измените размер экрана.Настройте или примените правильные медиа-запросы для ваших нужд.Также помните, что устройства могут быть как портретными, так и альбомными.На больших экранах отображается список по умолчанию, а на маленьком экране мы заставляем список разбиваться: Есть ли способ разбить список на столбцы?

@media only screen and (max-width: 600px) {
    /* For mobile phones: */
	.list{
      -moz-column-count: 2;
      -moz-column-gap: 20px;
      -webkit-column-count: 2;
      -webkit-column-gap: 20px;
      column-count: 2;
      column-gap: 20px;
	}
}
<!DOCTYPE html>
<html>
<meta name="viewport" content="width=device-width, initial-scale=1">
<body>


<ul class="list">
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
  <li>7</li>
  <li>8</li>
  <li>9</li>
  <li>10</li>
  <li>11</li>
</ul>


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