Подгонка элементов Flex внутри определенной высоты Div - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь вписать динамически добавленные элементы в гибкий div определенной высоты.Например, мой контейнерный контейнер имеет ширину 100% и высоту 25vh, и у меня есть 50 изображений, загружаемых внутри него в их дочерние контейнеры.Я хочу, чтобы эти контейнеры соответствующим образом изменили размеры и поместились внутри этого div, оставаясь внутри него, 6-7 дочерних div в строке.До сих пор, когда я использую flex-grow: значение 15%, и они перемещаются в новый ряд, они вообще не меняют размер и перекрываются снаружи, перемещая div.Есть ли способ заставить его работать?

Вот что я делаю:

<div class="brand-container">
   <div class="tier-top-1">

      <div class="tier-item">
         <img src="cat.jpg" />
      </div>
      <div class="tier-item">
         <img src="cat.jpg" />
      </div>
      <div class="tier-item">
         <img src="cat.jpg" />
      </div>
      <div class="tier-item">
         <img src="cat.jpg" />
      </div>
      <div class="tier-item">
         <img src="cat.jpg" />
      </div>
      <div class="tier-item">
         <img src="cat.jpg" />
      </div>
      <div class="tier-item">
         <img src="cat.jpg" />
      </div>
      <div class="tier-item">
         <img src="cat.jpg" />
      </div>

   </div>
</div>

И CSS:

.brand-container {
    width: 100%;
    height: 100vh;
}

.tier-top-1 {
    width: 100%;
    height: 25vh;
    background: white;
    display: flex;
    justify-content: space-around;
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
}

.tier-item {
    margin: 1rem;
    justify-self: center;
    text-align: center;
    flex: 1 1 15%;
}

.tier-top-1 img {
    max-height: 20vh;
}

1 Ответ

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

Учитывая количество полей плюс высоту входящих в игру изображений, чтобы иметь только 6 или 7 изображений в строке, необходимо иметь возможность выполнять вычисления с использованием JavaScript, чтобы установить максимальную высоту каждого изображения как 25vh минусрасстояние между строками, эта разница, деленная на количество рядов.

Я отрегулировал значение изгиба на 0 0 13vw и отрегулировал поле для margin-top для изображений.Возможно, вам придется рассчитать это число и для различных сценариев.

См. Фрагмент ниже.Нажмите на полную страницу, чтобы увидеть решение.В противном случае единицы измерения vh будут рассчитываться исходя из высоты вашего браузера, а не высоты окна фрагмента.

const imgs = document.querySelectorAll(".tier-top-1 img");
const numImgs = imgs.length;
const rows = Math.ceil(numImgs / 7);
const maxHeight = (25 - rows - 1) / rows;
imgs.forEach(img=> img.style.maxHeight = maxHeight + "vh");
.brand-container {
    box-sizing: border-box;
    width: 100%;
    height: 100vh;
}

.tier-top-1 {
    box-sizing: border-box;
    width: 100%;
    height: 25vh;
    background: white;
    display: flex;
    justify-content: space-around;
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
    border: 1px solid black;
}

.tier-item {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
    margin-top: .5vh;
    align-self: center;
    text-align: center;
    flex: 0 0 13vw;
}

.tier-top-1 img {
    max-height: 13vw;
}
<div class="brand-container">
   <div class="tier-top-1">

      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>
      <div class="tier-item">
         <img src="https://via.placeholder.com/400x400/?text=Image" />
      </div>

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