我需要一个方格网格,响应(页面大小调整)填充,但不展开,其父div.

我的基本 struct 如下,父div占页面高度的50%.我希望网格自动调整大小,以适应这50%.目前,网格溢出.JSFiddle如下.

    .view {
        display: grid;
        grid-template-rows: 10% 50% 40%
    }

    .gridContainer {
        display: grid;
        grid-template-columns: repeat(5, 1fr);
    }

    .gridCell {
        aspect-ratio: 1 / 1;
        border: 1px solid #000
    }



    <div class="view">
        <div>TOP 10%</div>
        <div class="gridContainer"> <!-- 50% height -->
            <!-- 1st row --->
            <div class="gridCell">col1 row1</div>
            <div class="gridCell">col2 row1</div>
            <div class="gridCell">col3 row1</div>
            <div class="gridCell">col4 row1</div>
            <div class="gridCell">col5 row1</div>
            <!-- 2nd row --->
            <div class="gridCell">col1 row2</div>
            <div class="gridCell">col2 row2</div>
            <div class="gridCell">col3 row2</div>
            <div class="gridCell">col4 row2</div>
            <div class="gridCell">col5 row2</div>
            <!-- etc. to 5th row -->
        </div>
        <div>BOTTOM 40%</div>
    </div>

问题是网格单元格在底部溢出,并被裁剪/超出边界.这是演示问题的JSFdle...

https://jsfiddle.net/r5ezfaxu/4/

我希望发生的是整个5x5网格显示在绿色区域的中心,在它的最大适合大小.我认识到这将导致柱子框(这是垂直间隙,而字母箱是水平间隙).

我try 了上面的代码,使用了各种弹性框和网格调整,但我感到困惑.敬请指教!

推荐答案

尝尝这个.它使用容器单元来获得合适的细胞大小:

.view {
  display: grid;
  grid-template-rows: 10% 50% 40%;
  height: calc(100vh - 16px);  /* viewport height - body margins */
}

.gridContainer {
  container-type: size;
  display:flex;
}

.grid {
  display: grid;
  height: 100cqmin;  /* min of the height and width of the grid container */
  container-type: size;
  aspect-ratio: 1 / 1;  /* width matches height */
  margin: auto;  /* centres the grid in the grid container */
  grid-template-columns: repeat(5, auto);
}

.gridCell {
  height: 20cqb;  /* One fifth of the grid size */
  aspect-ratio: 1 / 1;  /* cells are square */
  box-sizing: border-box;
  border: 1px solid #000
}
    <div class="view">
      <div style="background-color: #f00">TOP 10%</div>
      <div class="gridContainer"  style="background-color: #0f0">
        <div class="grid">
          <!-- 1st row --->
          <div class="gridCell">1</div>
          <div class="gridCell">2</div>
          <div class="gridCell">3</div>
          <div class="gridCell">4</div>
          <div class="gridCell">5</div>
          <!-- 2nd row --->
          <div class="gridCell">1</div>
          <div class="gridCell">2</div>
          <div class="gridCell">3</div>
          <div class="gridCell">4</div>
          <div class="gridCell">5</div>
          <!-- etc. to 5th row -->
          <div class="gridCell">1</div>
          <div class="gridCell">2</div>
          <div class="gridCell">3</div>
          <div class="gridCell">4</div>
          <div class="gridCell">5</div>

          <div class="gridCell">1</div>
          <div class="gridCell">2</div>
          <div class="gridCell">3</div>
          <div class="gridCell">4</div>
          <div class="gridCell">5</div>

          <div class="gridCell">1</div>
          <div class="gridCell">2</div>
          <div class="gridCell">3</div>
          <div class="gridCell">4</div>
          <div class="gridCell">5</div>
        </div>
      </div>
      <div style="background-color: #00f">BOTTOM 40%</div>
    </div>

Html相关问答推荐

在Apps Script中连接CSS与HTML

电话号码验证器(Angular )

如何找到FontAwese图标的Unicode值?

Angular 15 p-对话框不使用组件 Select 器呈现HTML

R-markdown中的非顺序列表

在<;style&>中列出的三种字体中,只有两种显示

HTML,CSS-阻止按钮在单击时向上移动

使用不同字体对齐元素

div 中的垂直中心表格

在 HTML 视频上环绕文本叠加

如何在 VS Code 中 Select 和删除 HTML 元素(其标签和内容)?

Sass 混合动画未正确应用

动态计算高度时 Div 不保持 1/1 纵横比

子 div 在父 div 中溢出

单击按钮时更改字体真棒图标

在随机图像下对齐文本

将表格标题和过滤器调整到表格的顶部边缘

Header 或 P 标记中的填充不能与 em 单元一起正常工作

基本上,我想要两列包含文本和图像,但第二列是倒置的

尽管设置了 width:100% left:0,但居中对齐的 CSS 动画并不对称