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

在整个行/列中对齐网格项目(就像弹性项目一样)

郦良才
2023-03-14
问题内容

使用flex容器和容器,flex-wrap: wrap您可以使用将对齐的内容与中心对齐justify-content: center

有没有一种方法可以使用CSS网格实现使网格项溢出的相同行为?

我创建了一支笔,显示了所需的弯曲行为

.container-flex {

  display: flex;

  flex-wrap: wrap;

  justify-content: center;

}



.container-flex .item {

  width: 33.33%;

  background: green;

  border: 1px solid;

}



.container-grid {

  display: grid;

  grid-template-columns: repeat(3, 1fr);

}



.container-grid .item {

  background: red;

  border: 1px solid;

}



* {

  box-sizing: border-box;

}


<h3>Flex</h3>

<div class="container-flex">

  <div class="item">item</div>

  <div class="item">item</div>

  <div class="item">item</div>

  <div class="item">item</div>

  <div class="item">item</div>

  <div class="item">item</div>

  <div class="item">item</div>

</div>



<h3>Grid</h3>

<div class="container-grid">

  <div class="item">item</div>

  <div class="item">item</div>

  <div class="item">item</div>

  <div class="item">item</div>

  <div class="item">item</div>

  <div class="item">item</div>

  <div class="item">item</div>

</div>

问题答案:

Flex和Grid是不同的动物,因此在flex中简单的行为可能无法很好地转换为grid。

伸缩项可以跨容器居中,因为伸缩布局可与伸缩线一起使用。伸缩线是行或列。

当要求伸缩项目在行/列中居中时,它可以从头到尾访问整行中的可用空间。

但是,在网格布局中,行和列必须与柔韧性线所不能比拟的: 跟踪墙 (a / k /
a网格线)。例如,在您的代码中有三列。这些列将轨道分为三个单独的部分,而网格项目则限制在一个部分中。

因此,由于轨道墙会限制移动,因此无法使用关键字对齐属性(例如justify-contentjustify-self)将网格项自动居中放置在一行上。

可以使网格区域跨越整个行/列,然后清除整个轨道的路径,使网格项可以水平(justify-content: center)或垂直(align-self:center)居中,但是必须明确定义此行为

为了使网格项目在动态布局中跨行居中,容器将仅需要一列(即没有分隔线),或者需要使用_基于行的放置方式_
将项目显式移动到中心。否则,请使用flexbox。



 类似资料:
  • 问题内容: 是否有比使用方法更灵活的“联系人”右对齐方式? http://jsfiddle.net/vqDK9/ 问题答案: 干得好。设置柔性容器上。

  • 问题内容: 我有一个具有以下属性的flex容器(蓝色正方形): 因此,其子项(浅蓝色方块)如下所示排列它们自己。但是,我想从正常流程中添加另一个孩子(绿色正方形)并将其相对于其父对象放置。要将其定位在下面,如您所见,我最好编写类似bottom: 20px;和的内容margin: auto;。 我试着z-index无济于事。我应该如何处理?我应该使用另一个父元素吗? 问题答案: 以下是实现此布局的五

  • 问题内容: 要求 弹性盒 垂直中间 水平向左 垂直堆叠的子元素 子元素的数量可以是一个或多个 使用旧语法,以便Android 4.2能够理解 听起来很难描述。演示中的粉红色框是我想要的外观。绿框已经很好,只是我不知道如何处理多个子元素。 我认为解决方案可能是以下各项的组合,但我做不到。 Codepen演示 问题答案: 沿主轴对齐弹性项目。 沿始终垂直于主轴的横轴对齐弹性项目。 取决于,主轴可以是水

  • 问题内容: 我试图将前两个子元素保留在同一行上,而第三个元素以全宽度保留在自己的下面,所有这些都使用flex。 我对在前两个元素上使用和属性特别感兴趣(这是我不使用百分比的原因之一),但是第三个元素确实必须为全角且在前两个元素以下。 当发生错误且无法更改代码时,以编程方式将元素添加到元素之后。 如何强制label元素在使用flex定位的其他两个元素下方跨越100%的宽度? 问题答案: 每当您希望弹

  • 问题内容: 我的网站上移动菜单的底部有一个基于伸缩的无序社交媒体图标列表。 我正在尝试让三排并排坐,等距离分开。我已经用规则来解决了 但是 我的问题是,当有三个以上的项目时,下一行从中间开始填充,而我希望 随着用户添加更多图标, 它从左侧开始填充 。 我越深入地解释这一点,我就越不确定这是否可能,但是我想我还是把它扔出去了,以防万一。 是否可以使下一行中的列表项从容器的左侧开始,而不会弄乱规则?

  • 问题内容: 是否可以使两个项目与flexbox左对齐,而使一个项目与flexbox右对齐?该链接显示得更清楚。最后一个例子是我想要实现的。 在flexbox中,我有一块代码。使用float时,我有四个代码块。这就是为什么我更喜欢flexbox的原因之一。 HTML CSS 问题答案: 要将一个flex子项向右对齐,请设置为 从flex规范: 主轴上自动边距的一种用法是将弹性项目分成不同的“组”。下