在屏幕调整大小时将布局从行更改为网格

Change layout from row to grid on screen resize

我有一个非常具体的用户体验请求。我在一个容器中有四个 link,一个相邻排成一排,中间用一条竖线隔开。

示例:

Link一个 | Link两个| Link三个| Link四个

如果它们都适合容器,这就是布局。一旦用户减小屏幕尺寸并且 link 不再适合,我想将布局切换为 2 行和 2 列。并在行之间有一个水平分隔线。 此外,links 的存在是可变的。如果只有三个 link,则第三个 link 会扩展到整个底行。

示例:

Link一个 | Link两个


Link三个| Link四个

Link一个 | Link两个


Link三个

如果可能的话,我想在不使用 JS 的情况下实现此行为。理想情况下使用 Flexbox 或 Bootstrap。 可能吗?

您可以尝试使用网格和媒体查询:

.container {
   display: grid;
   grid-template-columns: repeat(4, 1fr);
   text-align: center;
   margin: 1em;
}
a {
  border-right: 1px solid grey;
}
a:last-child {
   border-right: none;
}
@media screen and (max-width: 500px) {
 .container {
    grid-template-columns: repeat(2, 1fr);
  }
  .container a:nth-child(1), a:nth-child(2) {
    border-bottom: 1px solid grey;
  }
  a:nth-child(2) {
    border-right: none;
  }
  a:nth-child(3):last-child {
    grid-column: 1/3;
  }
}
<div class="container">
  <a>Link 1</a>
  <a>Link 2</a>
  <a>Link 3</a>
  <a>Link 4</a>
</div>

<div class="container">
  <a>Link 1</a>
  <a>Link 2</a>
  <a>Link 3</a>
</div>