You need to enable JavaScript to run this app. 响应式设计场景下如何实现3个div的自定义排列 可使用Bootstrap或CSS
优惠活动
大模型
产品
解决方案
定价
更多

响应式设计场景下如何实现3个div的自定义排列 可使用Bootstrap或CSS

实现方案

方案1:使用Bootstrap 5(无需额外编写复杂CSS)

利用Bootstrap自带的栅格排序和偏移类即可快速实现需求,代码示例如下:

<div class="container">
  <div class="row g-3">
    <!-- 区块B:移动端排第一位,桌面端排在右侧上部 -->
    <div class="col-12 col-md-6 order-1 order-md-2">
      <div class="bg-primary p-4 text-white">区块B</div>
    </div>
    <!-- 区块A:移动端排第二位,桌面端占据左侧整列高度 -->
    <div class="col-12 col-md-6 order-2 order-md-1">
      <div class="bg-success p-4 text-white h-100">区块A</div>
    </div>
    <!-- 区块C:移动端排第三位,桌面端排在右侧下部 -->
    <div class="col-12 col-md-6 order-3 offset-md-6">
      <div class="bg-warning p-4 text-dark">区块C</div>
    </div>
  </div>
</div>
  • order-*类用于控制不同断点下的元素视觉排序,md断点对应桌面端宽度≥768px的场景
  • 桌面端给区块C添加offset-md-6类,即可让它偏移到右侧第二行,和区块B上下对齐
  • 移动端断点下三个区块会自动按B、A、C的顺序垂直堆叠,符合展示要求

方案2:纯CSS Flex实现

不需要引入框架,用原生Flex布局的排序属性即可实现,代码示例如下:

<!-- HTML结构 -->
<div class="flex-container">
  <div class="block-b">区块B</div>
  <div class="block-a">区块A</div>
  <div class="block-c">区块C</div>
</div>
/* 桌面端样式 */
.flex-container {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}
.block-a {
  background: #20c997;
  flex: 0 0 calc(50% - 6px);
  order: 1;
  min-height: 200px;
  padding: 16px;
  color: #fff;
}
.block-b {
  background: #0d6efd;
  flex: 0 0 calc(50% - 6px);
  order: 2;
  min-height: 90px;
  padding: 16px;
  color: #fff;
}
.block-c {
  background: #ffc107;
  flex: 0 0 calc(50% - 6px);
  order: 3;
  min-height: 90px;
  padding: 16px;
}

/* 移动端适配 */
@media (max-width: 767px) {
  .block-a, .block-b, .block-c {
    flex: 0 0 100%;
  }
  .block-b {
    order: 1;
  }
  .block-a {
    order: 2;
  }
  .block-c {
    order: 3;
  }
}

核心逻辑是利用Flex的order属性修改元素的视觉排序,HTML结构将B放在最前面的写法也能保证SEO、屏幕阅读器的读取顺序符合预期,响应式断点的宽度阈值可以根据自己的业务需求调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 19:27:10