当前位置: 首页 > 知识库问答 >
问题:

使div在网格中跨两行

裴鸿熙
2023-03-14

我有一个满是块的页面,这些块用display:inline-block堆积起来。 我想使一些块大四到两倍,所以我使用float:leftright来放置其他块。

我的问题是,如果我有一个五元素行,我怎么能在它中间放一个更大的元素呢? (如float将其自然地放在侧面)。

下面是一个示例片段:

null

#wrapper{
  width: 516px;
}
.block{
  display: inline-block;
  width: 90px;
  height: 50px;
  margin: 5px;
  background-color: red;
}
.bigger{
  height: 110px;
}
<div id="wrapper">
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block bigger"></div>
  <div class="block"></div>
  <div class="block"></div>
</div>

null

共有2个答案

喻高寒
2023-03-14

为了让您的布局与flexbox一起工作,您需要使用嵌套容器,或者知道容器的高度(请参阅本页我的另一个答案)。 网格就不是这样了。 代码结构非常简单。

null

#wrapper {
  display: grid;                                     /* 1 */
  grid-template-columns: repeat(5, 90px);            /* 2 */
  grid-auto-rows: 50px;                              /* 3 */
  grid-gap: 10px;                                    /* 4 */
  width: 516px;
}
.bigger {
  grid-row: 1 / 3;                                   /* 5 */
  grid-column: 2 / 3;                                /* 6 */
}
.block {
  background-color: red;
}
<div id="wrapper">
  <div class="block"></div>
  <div class="block bigger"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
</div>
慕阳伯
2023-03-14

您的子元素(.block)具有固定的高度。 基于该信息,我们可以外推容器的高度(#wrapper)。

通过知道容器的高度,可以使用CSS Flexbox和flex-direction:column以及flex-wrap:wrap来实现布局。

容器上的固定高度用作断点,告诉flex项在哪里包装。

null

#wrapper {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  height: 120px;
  width: 516px;
}
.block {
  width: 90px;
  flex: 0 0 50px;
  margin: 5px;
  background-color: red;
}
.bigger {
  flex-basis: 110px;
}
<div id="wrapper">
  <div class="block"></div>
  <div class="block"></div>
  <div class="block bigger"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
</div>
 类似资料:
  • 我正在使用顺风CSS,并试图建立一个网格,使某些单元格内容跨越多个单元格,而其他项目留在单个单元格。在下面的代码中,我试图展示我正在尝试完成的事情。我知道我的col-span-2班什么也没做,但我把它放在那里是为了表明我希望我能做什么。我想让所有的单元格都是相同的宽度(我只想让一些单元格内容跨越分隔线)。我需要某种覆盖逻辑吗? 感谢任何帮助。 谢谢!

  • 我试图在一个区域内放置一个div,并保持它垂直居中,然后它的内部有两个跨度,一个向左浮动,另一个向右浮动。但是我似乎不能同时做这两件事。我在React中这样做,但我不认为这会有什么不同,但我加入它来解释语法。 我先说: 然后我有ResultsHeader定义为: 当我这样做时,我会将所有span文本移到左侧,例如找到的。如果我将显示更改为,跨距将正确浮动,但文本不再垂直居中。取而代之的是,这一切都

  • 嘿,我有一个网格,对于其中一个节点,我希望它能够占据整行。 但我似乎不知道如何使用GridPane.setColumnSpan(node,column span); 这是我的代码 这就是现在的样子 这就是我想要的样子 我将非常感谢任何帮助。谢谢

  • 我正在使用如下所示的引导网格,我正在尝试集中一些div。(图片)。我已经尝试了所有{边距:0自动;宽度:50%}等,但我无法解决。集中一些div不会那么难。这里有什么问题?请不要将其标记为重复。我已经研究了一整天,我就是无法解决。谢谢

  • 随着CSS网格布局模块即将在Firefox和Chrome中发布,我想我应该尝试一下如何使用它。 我尝试创建一个简单的网格,其中一个项目横跨所有行的左侧,其他项目(、、、等)横跨各个行的右侧。横过行右侧的项的数量是可变的,因此可能存在、、、等的任何组合,因此我使用了属性。因此,我无法为定义要跨转的固定行数,但我希望跨转所有可用行。 null null 要使跨越所有行而不知道最终会有多少行,我应该做什

  • 我需要识别X(取消)按钮。超文本标记语言如下: 尝试通过span直接执行,但不起作用(问题可能是,它不是唯一的(许多取消按钮具有相同的span) 需要做的事情是通过类:“配料容器标题关闭”,然后以某种方式“向下”到跨度。有人能告诉我怎么做吗?(1个父元素和多个子元素,选择该子元素)

  • 问题内容: 当我不知道行数时,是否可以使网格项目从第一行到最后一行? 可以说我有以下HTML,其中的框数未知。 如何使第一个网格线到最后一个网格线的第三个跨度? 问题答案: 您可以将grid-row-start添加到该框中的css,并将其设置为跨越一个非常大的数字。 编辑-免责声明: 这是非最佳解决方案,并非在所有浏览器中都有效,请当心!尽管这在某些浏览器(Chrome)中似乎可行,但其他浏览器(