Блоки в форме плитки на чистом CSS
Очень часто возникает такая ситуация, что когда размещаешь несколько блоков в один ряд с разным контентом, то эти блоки становятся не на одном уровне и создается впечатление, что они прыгают и образуется пустая видимая область между рядами. Эту проблему можно решить очень простым способом при помощи CSS. Мы создадим вывод постов в виде плиток. Плиточный вид создаст ощущение целостности страницы. В данном примере вы узнаете как сделать блоки в форме плитки, а так же какие величины использовать для блоков которые расположены плиткой.
Шаг 1
Делаем разметку для нашего плиточного вида.
<div class="container">
<div class="card-columns">
<a class="card card-reveal" href="#">
<img class="card-img-top" src="https://source.unsplash.com/jTGjg-NDLyM/600x400" />
<div class="card-body">
<div class="card-title">Look forward</div>
</div>
</a>
<a class="card card-reveal" href="#">
<img class="card-img-top" src="https://source.unsplash.com/whpWiJHBAVo/600x400" />
<div class="card-body">
<div class="card-title">Drops of rain</div>
</div>
</a>
<a class="card card-reveal" href="#">
<img class="card-img-top" src="https://source.unsplash.com/fqgt7A43-K0/400x500" />
<div class="card-body">
<div class="card-title">Umbrella kiss</div>
</div>
</a>
<a class="card card-reveal" href="#">
<img class="card-img-top" src="https://source.unsplash.com/WxFRIj4KGTk/400x600" />
<div class="card-body">
<div class="card-title">The Tulip</div>
</div>
</a>
<a class="card card-reveal" href="#">
<img class="card-img-top" src="https://source.unsplash.com/dSua0aBdSTU/600x500" />
<div class="card-body">
<div class="card-title">postes</div>
</div>
</a>
<a class="card card-reveal" href="#">
<img class="card-img-top" src="https://source.unsplash.com/4nMr12C6Pw8/400x500" />
<div class="card-body">
<div class="card-title">Read to smile</div>
</div>
</a>
<a class="card card-reveal" href="#">
<img class="card-img-top" src="https://source.unsplash.com/DMS_Lz32y2A/400x200" />
<div class="card-body">
<div class="card-title">Tower of Terror</div>
</div>
</a>
</div>
</div>
Шаг 2
Стилизуем наши блоки в виде плитки при помощи CSS
.container {
position: relative;
max-width: 998px;
width: 100%;
margin: 0 auto;
}
.card-columns {
-webkit-column-count: 3; /*Выставляем кол-во колонок*/
-moz-column-count: 3; /*Выставляем кол-во колонок*/
column-count: 3; /*Выставляем кол-во колонок*/
-webkit-column-gap: 15px; /*Отступы между колонками*/
-moz-column-gap: 15px; /*Отступы между колонками*/
column-gap: 15px; /*Отступы между колонками*/
orphans: 1; /*минимальное число строк в блочном контейнере*/
widows: 1; /*минимальное количество линий на странице*/
}
.card {
overflow: hidden;
position: relative;
display: inline-block;
width: 100%;
word-wrap: break-word;
border-radius: 8px;
margin-bottom: 10px;
}
.card-reveal .card-body {
display: flex;
align-items: center;
justify-content: center;
position: absolute;
width: 100%;
text-align: center;
height: 100%;
bottom: -100%;
-webkit-transition: bottom .2s ease-in-out;
transition: bottom .2s ease-in-out;
}
.card-reveal .card-img-top {
-webkit-transition: -webkit-transform .5s ease-in-out;
transition: -webkit-transform .5s ease-in-out;
transition: transform .5s ease-in-out;
transition: transform .5s ease-in-out, -webkit-transform .5s ease-in-out;
}
.card-reveal:hover .card-body {
bottom: 0;
background-color: rgba(0, 0, 0, 0.7);
}
.card-reveal:hover .card-img-top {
-webkit-transform: scale(1.3);
transform: scale(1.3);
}
.card-reveal .card-body .card-title {
font-size: .75rem;
margin: 0;
text-transform: uppercase;
font-weight: bolder;
color: #fff;
}
@media (max-width: 768px) {
.card-columns {
-webkit-column-count: 2;
-moz-column-count: 2;
column-count: 2;
}
}
Какие величины использовать для блоков которые расположены плиткой на сайте?
-
Ширина блока (или элемента плитки): Это определяет, сколько блоков может уместиться в одном ряду. Обычно ширина блока измеряется в пикселях или процентах от ширины контейнера или экрана.
-
Высота блока (или элемента плитки): Это определяет высоту каждого блока в плитке. Высота также может быть измерена в пикселях или процентах от высоты контейнера или экрана.
-
Отступы между блоками: Отступы создают пространство между блоками в плитке, делая макет более привлекательным и удобным для пользователя. Они могут быть заданы в пикселях или в процентах.
-
Количество блоков в одном ряду: Это важный параметр, который влияет на организацию контента на странице. Удобно выбирать количество блоков так, чтобы они выглядели гармонично на различных устройствах.
-
Адаптивность и отзывчивость: Важно также учитывать, как блоки плитки будут адаптироваться к разным размерам экранов. Это может потребовать использования медиа-запросов CSS или фреймворков для создания адаптивного дизайна.