You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

CSS Flexbox布局技术问询:如何将一行分为两列并适配786px、768px屏幕宽度

解决方案:Flexbox 响应式布局调整

针对你的两个问题,我会一步步帮你解决,先从你的具体代码入手,再解释通用的实现思路。

一、解决你的布局难题(大屏幕box3/box4同行,小屏幕全屏垂直排列)

你的核心需求很明确:

  • 大屏幕(>768px):box1、box2、box5各占一行,box3和box4在同一行平分宽度
  • 小屏幕(≤768px):所有box都单独占一行(全屏宽度)

修改步骤:

  1. 调整HTML结构:把box3和box4放到一个新的flex容器里,这样我们可以单独控制它们的排列方式:
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="style.css">
<title>My CSS is Easy</title>
</head>
<body>
<div class="container-1">
  <div id="box-1"> header </div>
  <div id="box-2"> hero </div>
  <!-- 新增子容器包裹box3和box4 -->
  <div class="container-2">
    <div id="box-3"> content </div>
    <div id="box-4"> sidebar </div>
  </div>
  <div id="box-5"> footer </div>
</div>
</body>
</html>
  1. 更新CSS样式
    • 给新的container-2设置flex布局,默认横向排列,让box3和box4平分宽度
    • 新增媒体查询,在屏幕≤768px时,把container-2改为纵向排列,让box3和box4各自占满全屏宽度
*{ padding: 0; margin: 0; }
body, html, .container-1{ width: 100%; height: 100%; }

/* 主容器保持纵向排列 */
.container-1{ 
  display: flex; 
  flex-direction: column; 
}

/* 子容器默认横向排列,让box3和box4同行 */
.container-2{
  display: flex;
  flex-direction: row;
}

#box-1{ flex:1; background: #00B7EB; text-transform: uppercase; text-align: center; }
#box-2{ flex:1; background: #FF0000; text-transform: uppercase; text-align: center; }
#box-3{ flex:1; background: #00FF00; text-transform: uppercase; text-align: center; }
#box-4{ flex:1; background: #800080; text-transform: uppercase; text-align: center; }
#box-5{ flex:1; background: #444444; text-transform: uppercase; text-align: center; }

/* 媒体查询:小屏幕时所有box垂直排列 */
@media (max-width: 768px) {
  .container-2{
    flex-direction: column;
  }
}

二、通用思路:Flexbox实现“一行分两列+小屏幕全屏宽度”

如果要通用实现这个效果,核心逻辑就是嵌套Flex容器

  • 创建一个父级flex容器(纵向排列),用来承载各个独立区块
  • 把需要同行的两个元素放到一个子flex容器中,子容器默认横向排列(实现两列平分空间)
  • 通过媒体查询,在小屏幕时将子容器的flex-direction改为column,让两个元素各自占满全屏宽度

关键要点:

  • 使用flex:1让每个区块自动填充可用空间(平分宽度/高度)
  • 媒体查询的断点可以根据产品需求灵活调整(768px是移动端适配的常用断点)
  • 嵌套Flex是实现复杂响应式布局的常用技巧,能灵活控制不同区块的排列组合

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

火山引擎 最新活动