当前位置: 首页 > 面试题库 >

如何展平嵌套的div以在CSS网格中显示它们?

浦琪
2023-03-14
问题内容

我从应该是两列宽的对象生成一个表(使用vue.js)。每个列都来自对象的键和值。这等效于以下实际HTML:

<div id="table">
  <div>
    <div>
      this is something long on the first row
    </div>
    <div>
      short 1st row
    </div>
  </div>
  <div>
    <div>
      wazaa 2nd row
    </div>
    <div>
      wazii 2nd row
    </div>
  </div>
</div>

我使用CSS网格将其格式化div为2x2网格,我希望这是

this is something long on the first row | short 1st row
wazaa 2nd row                           | wazii 2nd row

这样做的代码:

#table {

  display: grid;

  grid-template-columns: auto 1fr;

}


<div id="table">

  <div>

    <div>

      this is something long on the first row

    </div>

    <div>

      short 1st row

    </div>

  </div>

  <div>

    <div>

      wazaa 2nd row

    </div>

    <div>

      wazii 2nd row

    </div>

  </div>

</div>

结果不是我期望的结果:两个最深的区域的div行为就像它们应该在grid显示器之外:它们彼此堆叠。

我希望他们继承网格行为:在进行时根据列模板进行对齐。 如何实现?


问题答案:

网格属性不适用于您的内容div,因为这些div不在范围内。

网格格式仅限于父子关系。这意味着网格容器始终是父级,而网格项目始终是子级。子代之外的网格容器的后代不属于网格布局,并且不接受网格属性。

由于您的内容div比网格容器(#table)低两级,使它们成为子代而不是子代,因此它们不是网格项目,并且不接受网格属性。

上面的规则有一些例外,但它们没有太多或任何浏览器支持。

display:contents涵盖了。它使元素可以被父元素忽略为包含块,因此父元素会将其子元素识别为普通子元素。但是目前,由于对浏览器的支持较弱,因此该方法实际上无法用于生产目的。

在这种情况下,更合适的解决方案是display: subgrid使网格容器的子代超出子代(即,网格项的子代)以遵守容器的行。但是此功能不支持浏览器。

如果您想要一个纯CSS解决方案,也许结合使用grid和flex会有所帮助。

这是一个基本概念。HTML不变。

#table {

  display: grid;

  grid-template-columns: 1fr;

}



#table > div {

  display: flex;

}



#table > div > div {

  flex: 1;

}


<div id="table">

  <div>

    <div>

      this is something long on the first row

    </div>

    <div>

      short 1st row

    </div>

  </div>

  <div>

    <div>

      wazaa 2nd row

    </div>

    <div>

      wazii 2nd row

    </div>

  </div>

</div>


 类似资料:
  • 问题内容: 如我们所知,通过使用方法将数组展平 那么如何将此数组展平到? 问题答案: 这是递归的一种替代方法,并且应接受任何深度级别,以避免堆栈溢出。

  • 问题内容: 使用以下HTML,我需要: 确保(粉红色)的边框与红色边框div 相邻。 必须在任何边界半径值上工作。 考虑到: 我正在使用,但也可以重置为默认值。 我无法更改div 的属性。 笔记: 在此特定示例中,我不需要绕圈:)。 问题答案: 问题的第1部分:( 孩子在原始演示中成为一轮) 问题是由于。当设定,在限定的高度,箱(250×250像素)的宽度被认为是包括的宽度的和。因此,元素的实际内

  • < code>[[{header=C,value=dsd},{header=D,value=test},{header=E,value=e},{header=F,value=hhh},{header=G,value=ghgh}]] 上面是JsonLists数组的数组,我需要将外部数组扁平化为JsonLists的内部数组。 我最终也只会从JsonList中获取值,并将这些值放入它自己的单独数组中:

  • 我有一门java课 在上面的场景中,示例具有子示例,这又是示例列表。此嵌套可以是 n 级。我想实现的是有一个示例列表,即扁平化上面的对象并将所有示例收集到最终列表中(收集所有n级示例)。一个明显的方法是递归。在Java中有什么方法可以更有效地实现它。我尝试了一些java 8概念,但它们不符合要求。

  • 问题内容: 我有一个div容器,其定义如下: 填充此div包含的表格后,这将自动为我提供水平和垂直滚动条。我只希望只自动显示水平滚动条。我将以编程方式修改桌子的高度。 我该怎么做呢? 问题答案: 除非使内容足够大以至于不能使用它们,否则不应同时获得水平和垂直滚动条。 但是,由于错误,您通常在IE中进行操作。签入其他浏览器(Firefox等)以查明是否实际上只有IE在执行此操作。 IE6-7(在其他

  • 现在是我探索Android的时候了。我设计了一个用户界面,如下所示,问题是我对在第一帧中应该做什么感到困惑,以便获得9x9网格。实际上,我在核心java中开发的同样的东西,通过在每个单元格中放置81个JTextFields,使用for循环并在gridbag布局的帮助下,我让我的应用程序完美运行。但是在android中,我如何在xml中定义我的9x9单元格,以便它应该接受数字,并且输入的数字也应该被