Галерея из одного столбца с flexbox с определенными элементами div, разделенными на две части - PullRequest
0 голосов
/ 28 мая 2019

Я использую галерею, представляющую столбец, содержащий один или два элемента <div>, охватывающих всю ширину.Столбцы, содержащие несколько элементов <div>, также содержат изображения с различными свойствами высоты и ширины.Мне бы хотелось, чтобы эти столбцы имели одинаковую высоту, а затем как можно больше заполняли ширину, когда между ними есть дополнительное пространство.

Я бы использовал элемент flexbox <div> с фиксированной шириной и * 1006.* имущество.Элементы <div>, которые охватывают всю ширину, имеют свойство max-width: 100%.Строка с несколькими элементами находится внутри элемента контейнера <div>, который охватывает, а затем каждый элемент в другом элементе <div>.Я мог бы получить два на одной и той же линии, но так как они различаются по размерам, я бы не хотел, чтобы каждое изображение имело ширину 50%, потому что тогда пустое пространство находится выше и ниже элемента, а не между ними.

Я пытался повозиться с flex-grow, flex-shrink и flex-basis, однако ни один из них не кажется точным.Я также рассмотрел переключение элементов <div> с двумя элементами на flex-direction: column, а затем обернул их.Это, однако, не работает для меня.

.column {
  width: 600px;
  display: flex;
  flex-wrap: wrap;
}

.smallContain {
  min-width: 100%;
  display: flex;
  align-content: space-between;
}

.smallBox {
  flex: 1 1 50%;
}

.largeBox {
  min-width: 100%;
}

img {
  max-width: 100%;
}
<body>
  <div id="container">
    <div class="column">
      <div class="smallContain">
        <div class="box smallBox">
          <img src="#" class="imgS">
        </div>
        <div class="box smallBox">
          <img src="#" class="imgS">
        </div>
      </div>
        <div class="box largeBox">
          <img src="#" class="imgL">
        </div>
      <div class="smallContain">
        <div class="box smallBox">
          <img src="#" class="imgS">
        </div>
        <div class="box smallBox">
          <img src="#" class="imgS">
        </div>
      </div>
        <div class="box largeBox">
          <img src="#" class="imgL">
        </div>
      <div class="smallContain">
        <div class="box smallBox">
          <img src="#">
        </div>
        <div class="box smallBox">
          <img src="#">
        </div>
      </div>
      <div class="smallContain">
        <div class="box smallBox">
          <img src="#" class="imgS">
        </div>
        <div class="box smallBox">
          <img src="#" class="imgS">
        </div>
      </div>
        <div class="box largeBox">
          <img src="#" class="imgL">
        </div>
      </div>
  </div>
</body>

(В приведенном выше примере класс .imgS относится к маленьким изображениям, а класс .imgL относится к большим изображениям)

Вот пример того, на что я надеюсь, чтобы он выглядел.

1 Ответ

0 голосов
/ 30 мая 2019

Ваш вопрос немного сложен для понимания, хотя я попробовал, может быть, что-то похожее на это?

.grid {
  align-items: stretch;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: space-between;
  width: 100%;
}
.grid .item {
  max-height: 400px;
  padding: 5px;
}
.grid .item.smallBox {
  flex-basis: auto;
  flex-grow: 1;
  flex-shrink: 1;
}
.grid .item.smallBox img {
  object-fit: cover;
  object-position: center;
}
.grid .item.largeBox {
  flex-basis: 100%;
  flex-grow: 1;
  flex-shrink: 1;
}
.grid .item img {
  height: 100%;
  width: 100%;
}
<div class="grid">
  <div class="item smallBox">
    <img src="http://placeholder.pics/svg/280x500" alt="">
  </div>
  <div class="item smallBox">
    <img src="http://placeholder.pics/svg/280x500" alt="">
  </div>
  <div class="item largeBox">
    <img src="http://placeholder.pics/svg/1920x500" alt="">
  </div>
  <div class="item smallBox">
    <img src="http://placeholder.pics/svg/480x500" alt="">
  </div>
  <div class="item smallBox">
    <img src="http://placeholder.pics/svg/250x500" alt="">
  </div>
  <div class="item largeBox">
    <img src="http://placeholder.pics/svg/1440x500" alt="">
  </div>
  <div class="item smallBox">
    <img src="http://placeholder.pics/svg/250x500" alt="">
  </div>
  <div class="item smallBox">
    <img src="http://placeholder.pics/svg/480x500" alt="">
  </div>
  <div class="item largeBox">
    <img src="http://placeholder.pics/svg/1440x500" alt="">
  </div>
  <div class="item smallBox">
    <img src="http://placeholder.pics/svg/500x500" alt="">
  </div>
  <div class="item smallBox">
    <img src="http://placeholder.pics/svg/150x500" alt="">
  </div>
  <div class="item largeBox">
    <img src="http://placeholder.pics/svg/1440x500" alt="">
  </div>
</div>

Надеюсь, это поможет, удачи.

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