css - 如何重新排列列网格?

标签 css flexbox css-grid css-multicolumn-layout

我有一个两列布局,里面有几个元素:

.grid {
  column-count: 2;
}

.grid-item {
  break-inside: avoid;
  height: 50px;
  margin-bottom: 10px;
  background-color: green;
  text-align: center;
  line-height: 50px;
  color: white;
}
<div class="grid">
  <div class="grid-item">1</div>
  <div class="grid-item">2</div>
  <div class="grid-item">3</div>
  <div class="grid-item">4</div>
  <div class="grid-item">5</div>
</div>

https://codepen.io/Deka87/pen/RgdLeZ

现在我需要能够仅使用 CSS 重新排序列中的那些元素(因此它们在不同的屏幕分辨率下的顺序不同),所以我想我可以这样做:

.grid {
  display: flex;
  flex-direction: column;
  column-count: 2;
}
.grid-item:nth-child(1) {
  order: 5;
}

显然,这没有用并且破坏了 2 列布局。以前有人试过解决这个问题吗?我有机会让这个工作吗?

PS:同一行上的元素不应该具有相同的高度(在这种情况下我可以使用简单的 float )。很抱歉没有在开始时指定。

最佳答案

如果容器上没有固定的高度,一列 flex 元素将不知道在哪里换行。没有什么会导致中断,因此元素将继续扩展单列。

此外,column-countdisplay: flex 代表了两种不同的 CSS 技术。 column-count 不是 flex 容器中的有效属性。

CSS 网格布局可能对您有用:

调整屏幕宽度以触发媒体查询

revised codepen

.grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: repeat(3, auto);
  grid-auto-rows: 50px;
  grid-auto-flow: column;
  grid-gap: 10px;
}

.grid-item {
  background-color: green;
  text-align: center;
  line-height: 50px;
  color: white;
}

@media ( max-width: 500px) {
  .grid-item:nth-child(2) {
    order: 1;
    background-color: orange;
  }
}
<div class="grid">
  <div class="grid-item">1</div>
  <div class="grid-item">2</div>
  <div class="grid-item">3</div>
  <div class="grid-item">4</div>
  <div class="grid-item">5</div>
</div>

关于css - 如何重新排列列网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45107364/

相关文章:

javascript - 使用显示 : table and overflow: hidden in IE and Firefox (works in Webkit/blink) 时出现问题

html - 没有 float 的div不扩展高度

html - Safari 9 - flexbox align-self : flex-end doesnt work

CSS3 Grid - 为什么行没有按照列/行 stmt 定位

css - vuetifyjs 网格列的全高并在溢出时滚动

html - 尽管验证服务给我 100%,但 CSS Grid 仍无法正常运行?

javascript - 获取 HTML pre 标签中鼠标悬停字符的坐标

html - 当我调整大小时阻止浏览器插入一切

html - CSS Flexbox 组 2 flex 元素

html - 证明内容不在元素之间创建空间