Три деления в строке, последний в другом столбце по центру по горизонтали - Flexbox или Grid - PullRequest
0 голосов
/ 09 января 2020

У меня есть контейнер сетки, и я хочу выровнять три деления, как это, также делая их адаптивными (все сложены). У меня нет высоты элементов div.

Было бы два столбца, в одном два ряда (два элемента div один под другим), в другом столбце элемент div, центрированный по вертикали с учетом высоты двух первые деления.

Я могу использовать сетку или flexbox.

Спасибо

Ответы [ 5 ]

1 голос
/ 09 января 2020

, а также сетка:

Пример из 2 столбцов и третий элемент, охватывающий 2 строки и само поле в середине.

section {
  display: grid;
  grid-template-columns: repeat(2, minmax(270px, 1fr));/* or any value you need */
       grid-gap: 2em;/* or any value you need */
       padding: 2em;/* or any value you need */
       counter-reset: divs;  /*demo*/
       width:max-content;/* or any value you need */
       margin:auto;/* or any value you need */
}

div {
  border: solid red;
     min-height: 30vh;/* or any value you need */
  width: 270px;/* or any value you need */
     display: flex;  /* demo*/
}

div {
  margin-left: auto;
}

div:nth-child(3) {
  grid-column: 2;
  grid-row: 1 / span 2;
  margin: auto 0;
}


/*demo*/

div:before {
      counter-increment: divs;
      content: counter(divs);
      margin: auto;
      font-size: 3em;
}
<section>
  <div></div>
  <div></div>
  <div></div>
</section>

Для игры с сеткой вы можете использовать: https://css-tricks.com/snippets/css/complete-guide-grid/ / http://gridbyexample.com/ и https://codepen.io/pen/ для детской площадки.

0 голосов
/ 09 января 2020

Это один из двух ответов с одинаковыми пробелами ширины / высоты. G-Cyr это другой:

.grid{
    display: grid;
    grid-template-columns: repeat(9,1fr);
    grid-template-rows: repeat(7, 1fr);
    height: 90vh;
    width: 120vh;
}

.grid > div{
    border: solid 3px orangered;
    font: 26px sans-serif;
    display: flex;
    align-items:center;
    justify-content:center;
}

.grid > div:nth-child(1){
    grid-row: 1/span 3;  
    grid-column: 1/span 4;
}
  
.grid > div:nth-child(2){
    grid-row: 3/span 3;
    grid-column: 6/span 4;
}

.grid > div:nth-child(3){
    grid-row: 5/span 3;     
    grid-column: 1/span 4;
}
<div class="grid">
    <div>1</div>
    <div>2</div>
    <div>3</div>
</div>
0 голосов
/ 09 января 2020

Вот jsfiddle: https://jsfiddle.net/5csL2dqy/

.container {
  display: flex;
  flex-direction: row;
  width: 100%;
}

.right {
  display: inherit;
  align-items: center;
}

.a, .b, .c {
  box-sizing: border-box;
  width: 150px;
  margin: 20px;
  border: 1px solid black;
}
<div class="container">
  
  <div class="left">
    <div class="a">
     <p>
     First div
     </p>
    </div>  
    <div class="b">
    <p>
    second div
    </p>
    </div>
  </div>

  <div class="right">
    <div class="c">
     <p>
     Third div
     </p>
    </div>
  </div>

</div>
0 голосов
/ 09 января 2020

Вы используете следующие inline-flex стили

@media only screen and (min-width: 600px) {
  .container {
  display: inline-flex;
}

.container div {
  border: 1px solid red;
  padding: 1em;
  margin: 1em;
}

.container>div+div {
  margin: auto;
}
}

@media only screen and (max-width: 600px) {
  .container div:not(first-child) {
  border: 1px solid red;
}
}
<div class="container">

  <div>
 
    <div>
      1
    </div>
    
    <div>
      2
    </div>
    
  </div>

  <div>
    3
  </div>
  
</div>
0 голосов
/ 09 января 2020

Использование Flexbox:

.wrapper {
  width: 400px;
  border: 2px solid black;
  height: 300px;
  display: flex;
  flex-wrap: wrap;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}

.child {
  height: 100px;
  width: 150px;
  border: 1px solid black;
  margin-top: 20px;
  margin-bottom: 20px;
}
<div class="wrapper">

<div class="child"></div>

<div class="child"></div>

<div class="child"></div>

</div>
...