-2

我有一个网格容器,我想像这样对齐三个 div,同时让它们响应式(全部堆叠)。我没有div的高度。

这将是两列,在一个两行中(两个 div 一个在另一个下方),在另一列中,一个垂直居中的 div 考虑到两个第一个 div 的高度。

我可以使用网格或弹性框。

谢谢

4

5 回答 5

1

还有网格:

示例 from2 列和第三个元素跨越 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 /游乐场。

于 2020-01-09T19:02:03.220 回答
1

使用弹性盒:

.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>

于 2020-01-09T18:09:20.800 回答
0

这是仅有的两个具有相等宽度/高度差距的答案之一。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>

于 2020-01-09T19:30:35.637 回答
0

您使用以下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>

于 2020-01-09T18:28:13.713 回答
0

这是一个 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>

于 2020-01-09T18:11:00.217 回答