You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据视口调整内部div排列,实现PC端3列移动端1列布局

实现方案

你之前用flex没实现大概率是漏掉了flex-wrap: wrap换行属性,下面提供两种纯CSS实现方案,都不需要修改原有HTML结构:

方案1:Flex布局

/* 移动端默认样式:单列排列 */
.vini {
  display: flex;
  flex-direction: column;
  gap: 16px; /* 项间距,可自行调整 */
  padding: 16px;
  /* 如果需要限制容器高度加滚动,可取消下面两行注释
  max-height: 100vh;
  overflow-y: auto;
  */
}

.vino {
  height: 120px; /* 自定义项高度,可调整 */
  background: #f0f0f0; /* 仅为演示效果,可删除 */
}

/* PC端断点,可根据需求调整768px为你需要的阈值 */
@media (min-width: 768px) {
  .vini {
    flex-direction: row;
    flex-wrap: wrap; /* 开启自动换行,核心属性 */
  }
  .vino {
    /* 每行3个,减去两列间距的总宽度,根据你设置的gap调整计算值 */
    width: calc((100% - 32px) / 3);
  }
}

方案2:Grid布局(更简洁)

Grid布局对多列等宽场景适配更友好,无需手动计算元素宽度:

.vini {
  display: grid;
  gap: 16px;
  padding: 16px;
  grid-template-columns: 1fr; /* 移动端默认1列 */
  /* 如需滚动可取消下面两行注释
  max-height: 100vh;
  overflow-y: auto;
  */
}

.vino {
  height: 120px;
  background: #f0f0f0;
}

@media (min-width: 768px) {
  .vini {
    grid-template-columns: repeat(3, 1fr); /* PC端固定3列 */
  }
}

注意事项

  • 媒体查询的断点768px可根据你的业务需求替换为640px、992px等其他阈值
  • 如果需要兼容极低版本的浏览器,可把gap属性替换为margin控制间距,对应调整宽度计算逻辑即可

内容的提问来源于stack exchange,提问作者neisor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 20:48:03