Макет Flexbox требует, чтобы ваша HTML-разметка имела определенную структуру.Поскольку вы предоставили готовый код, я создал сопоставимый пример, который, я надеюсь, поможет.
Единственное место, в котором вам нужны какие-либо правила flexbox, - это контейнер flex и дочерние элементы flex, которые должны быть прямыми дочерними элементами контейнера flex..
.wrapper {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
Здесь я применяю макет flexbox к контейнеру с display: flex
.Правило flex-wrap
позволяет элементам перемещаться в несколько строк.И justify-content: space-between
заставляет предметы сидеть напротив левого и правого краев контейнера.Это обеспечивает вертикальный водосточный желоб между элементами, если они не занимают все доступное горизонтальное пространство.
.video-item {
flex: 0 0 31%;
}
Гибкие дочерние элементы получают это правило flex
, значение сокращенно для flex-grow: 0
,flex-shrink: 0
и flex-basis: 31%
.Гибкая основа гибких элементов задает начальную ширину, и, поскольку я "выключил", расту и уменьшу основание с этого момента служит шириной.
Изображения, которые вы вставляете в документ, будут пытаться бороться сразмер этих div'ов, поэтому вам нужно указать, чтобы изображения соответствовали размеру их div-оболочки:
.video-wrap img {
width: 100%;
height: auto;
}
Наконец, я просто изменяю flex-base элементов на экранах разных размеров, используя медиазапросы, чтобы контролировать количество предметов в поперечнике.Ознакомьтесь с полным примером в режиме полной страницы и играйте с размером экрана.
body {
background: #ccc;
margin: 0;
padding: 20px;
}
.wrapper {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.video-item {
flex: 0 0 31%; /* tweak the thrid value to adjust the vertical gutters */
background: #fff;
margin-bottom: 20px;
}
.video-wrap img {
width: 100%;
height: auto;
}
.text-wrap {
text-align: center;
padding: 10px;
}
@media (max-width: 640px) {
.video-item {
flex: 0 0 48%; /* 2 across */
}
}
@media (max-width: 480px) {
.video-item {
flex: 0 0 100%; /* 1 accross */
}
}
<div class="wrapper">
<div class="video-item">
<div class="video-wrap">
<img src="https://picsum.photos/270/180" />
</div>
<div class="text-wrap">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</div>
</div>
<div class="video-item">
<div class="video-wrap">
<img src="https://picsum.photos/270/180" />
</div>
<div class="text-wrap">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</div>
</div>
<div class="video-item">
<div class="video-wrap">
<img src="https://picsum.photos/270/180" />
</div>
<div class="text-wrap">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</div>
</div>
<div class="video-item">
<div class="video-wrap">
<img src="https://picsum.photos/270/180" />
</div>
<div class="text-wrap">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</div>
</div>
<div class="video-item">
<div class="video-wrap">
<img src="https://picsum.photos/270/180" />
</div>
<div class="text-wrap">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</div>
</div>
<div class="video-item">
<div class="video-wrap">
<img src="https://picsum.photos/270/180" />
</div>
<div class="text-wrap">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</div>
</div>
</div>