在CSS中创建一个占据容器

时间:2017-11-21 20:20:39

标签: css css3 flexbox media-queries

我想制作一个方形div,占用容器的剩余大小。我怎么能用CSS做到这一点?

具体地:

  1. 使div具有1:1的宽高比(也称为正方形)
  2. 制作divs宽度& height =到空间较小的维度
  3. 这是一张清晰明了的图片:

    enter image description here

    注意: 我知道答案&使用带padding-bottom: 100%;的容器组件的方法。这不是一个可接受的解决方案,因为它失败#2(不会根据什么尺寸约束方块而切换)。

    无法解决的解决方案

1 个答案:

答案 0 :(得分:1)

您可以在(calc()vh / vw之间转发max-width / height个单位。



header {
  background: pink;
  height: 150px;
}
header, .squarred {/* use flex for centering, optionnal */
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: ;
}
.squarred {
  width:calc(100vh - 150px);/* luck: header has a fixed height , remove it */
  max-width:100vw;/* stay within the window */
  max-height:100vw;/* stay within the window */
  margin:0 auto;
  flex:1;
  overflow:auto;/* can be usefull */
  background:turquoise;
}
html,body {/* set the frame */
  margin:0;
  height:100vh;
  display:flex;
  flex-direction:column;
}

<header><h1>header</h1></header>
<main class="squarred">
  <div class="buffer">
    <h2>I am a square</h2>
    <p>I occupy the remaining space</p>
  </div>
&#13;
&#13;
&#13;

https://codepen.io/gc-nomade/full/MOVQWZ/