Как сделать двухколончатую таблицу на flexbox

13.08.2020

Бывает нужен блок, который на больших экранах выглядит как таблица с несколькими колонками, а на экранах с маленьким разрешением как одна вертикальная полоса.

Ниже будет пример того, как это можно сделать с использованием css свойств flexbox.

Не буду долго ходить вокруг, вот как это будет выглядеть на большом разрешении:

pic1

А так, если экран меньше заданной границы:

pic1

Можно посмотреть живой пример.

И собственно сам код:

 
<div class="flex_grid">
    <div class="item">
        <div class="img">
            <img src="https://fakeimg.pl/100x100/ff0000,128/000,255" alt="img">
        </div>
        <div class="text">
            <p>
                <b>Всё онлайн</b>
            </p>
            <p>
                Не надо никуда ходить и ждать курьера. Пара минут на анкету, ещё пара на решение.
            </p>
        </div>
    </div>

    <div class="item">
        <div class="img">
            <img src="https://fakeimg.pl/300/000080/FFFFFF" alt="img">
        </div>
        <div class="text">
            <p>
                <b>Всё онлайн</b>
            </p>
            <p>
                Не надо никуда ходить и ждать курьера. Пара минут на анкету, ещё пара на решение.<br />
            </p>
        </div>
    </div>


</div>

 
/*
    Тестовое оформление
*/

.flex_grid {
    border: 20px solid green;
    flex-basis: 200px;
}

.flex_grid .item {
    border: 1px solid red;
}

/*
    Функционал
*/

.flex_grid {
    width: 1000px;
    margin: 0 auto;
}

.flex_grid .item {
    display: flex;
    margin-bottom: 20px;
}

.flex_grid .item .text {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.flex_grid .img {
    min-width: 120px;
    margin: 0 25px;
    display: flex;
    flex-direction: column;
    justify-content: center;

    /*flex: 0 0 200px;*/
    flex-grow: 0;
    flex-shrink: 0;
    flex-basis: 200px;
}

.flex_grid img {
    display: block;
    max-width: 100%;
    align-self: center; /* Значение по умолчанию stretch и картинку раздирает */
}

/*
    Пример вертикального отображения
*/
@media (max-width: 960px ) {
    .flex_grid {
        width: auto;
    }

    .flex_grid .item {
        display: flex;
        flex-direction: column;
    }

    .flex_grid .item .text {
        align-items: center;
    }

    .flex_grid .img {
        flex-basis: auto;
    }
}

Готовый результат, можно скачать архивом.


Категории: Web, CSS, -Памятка-
Пометки: Как сделать двухколончатую таблицу на css flex css flex таблица, css flexbox
Яндекс.Метрика