Смешивание строк и столбцов в Flex Layout

Смешивание строк и столбцов в Flex Layout

Я легко могу сделать этот макет с помощью float. но с трудом справляется с гибкой коробкой.

css:

    .a {
      background: red;
      float: left;
      width: 30%;
      height: 100px;
    }

    .b,
    .c {
      background: green;
      overflow: hidden;
      height: 45px;
    }

    .b {
      margin-bottom: 10px;
    }

    .c {
      background: lightblue
    }

html:

    <div class = "a">column</div>
    <div class = "b">row1</div>
    <div class = "c">row2</div>

Спасибо заранее.

Вы используете интерфейсный фреймворк, то есть бутстрап / фундамент?

billy.farroll 23.05.2018 09:39

Фреймворки не используются

monda 23.05.2018 09:40
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
2
1 503
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Flexbox codepen demo

Как это работает?

Оберните свои столбцы в общий родительский элемент (например, элемент main) с установленной высотой. Затем разместите свои элементы с помощью flex-direction: column и создайте пространство между b и c с помощью justify-content: space-between.

Высота столбца a равна 100% контейнера, поэтому b и c могут перемещаться в новый столбец благодаря flex-wrap: wrap.

CSS


main {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  justify-content: space-between;
  height: 100px;
}



.a {
  background: red;
  height: 100%;
  width: 30%;
}

.b, .c {
  background: green;
  height: 45px;
  width: 70%;
}

.c {
  background: lightblue
}

Grid Layout demo

Как это работает?

С Grid Layout вы можете добиться того же, создав макет со столбцами 10 и строками 2 и зазором между b и c с row-gap: 10px. Затем отрегулируйте все различные (column|row) - (start|end)


CSS

main {
   display: grid;
   grid-template-columns: repeat(10, 1fr);
   row-gap: 10px;
   width: 100%;
}

.a {
    background: red;
    grid-area: 1 / 1 / 3 / 3;
}

.b,
.c {
  grid-column: 3 / 11;      
  background: green;
  overflow: hidden;
  height: 45px;
}

.b {
  grid-row-start: 1;
}

.c {
  grid-row-start: 2;
  background: lightblue;
}

Вы можете добиться этого, используя grid, обернув a,b,c в grid-container.

.grid-container {
   display: grid;
   grid-template-columns: 1fr 1fr;
}

.a {
      background: red;
    /* width: 30%; */
    height: 100px;
    grid-row-start: 1;
    grid-row-end: 3;
    }

    .b,
    .c {
      background: green;
      overflow: hidden;
      height: 45px;
    }

    .b {
      margin-bottom: 10px;
    }

    .c {
      background: lightblue;
    }
<div class = "grid-container">
  <div class = "a">column</div>
  <div class = "b">row1</div>
  <div class = "c">row2</div>
</div>

Другие вопросы по теме