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

如何手动覆盖指定元素的flex属性实现自定义页面布局

问题原因

给#Why_choose设置display: flex后,flex默认主轴为水平方向,所有直接子元素(<h1>和3个内容<div>)都会成为flex子项,沿水平方向依次排列,和预期的上下分层布局冲突。

推荐实现方案(符合前端开发规范)

最高效、可维护性最好的方案是语义结构分层+嵌套flex布局,不需要使用绝对定位这类脱离文档流的hack写法,后续改样式、做响应式适配的成本极低:

  • 调整HTML结构:新增一个通用容器包裹3个内容模块,让<h1>和内容容器作为#Why_choose的两个直接子元素,天然形成上下两层结构
  • 外层#Why_choose设置纵向flex布局,让标题、内容容器沿垂直方向排列,同时配置水平居中规则
  • 内层内容容器设置横向flex布局,让3个内容模块水平并排,通过gap控制模块间距

修改后完整代码

CSS代码

/* Why choose Section */
#Why_choose{
  height: 800px;
  background: #121212; /* 原代码写的#12121为5位无效十六进制色值,已修正为6位 */
  display: flex;
  flex-direction: column; /* 将flex主轴改为垂直方向,直接子元素上下排列 */
  align-items: center; /* 所有直接子元素水平居中 */
  padding: 40px 20px;
  box-sizing: border-box;
  gap: 60px; /* 控制标题和内容区的垂直间距 */
}

#Why_choose h1{
  color: white;
  margin: 0;
}

#Why_choose h2{
  color: #e50914;
}

#Why_choose p{
  color: white;
}

#Why_choose img{
  width: 50%;
}

/* 新增内容容器样式 */
.feature-wrap {
  display: flex;
  width: 100%;
  max-width: 1200px;
  justify-content: space-between;
  gap: 20px; /* 控制三个内容模块之间的水平间距 */
}

.feature-wrap > div {
  flex: 1; /* 三个内容模块等宽分配空间 */
  text-align: center;
}

HTML代码

<section id="Why_choose">
    <h1>Why choose Snap Smile Veneers</h1>
    <!-- 包裹三个内容模块的容器 -->
    <div class="feature-wrap">
      <div class="invisible">
        <img src="images/random_img.jpg">
        <h2>we invisible</h2>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing
           elit, sed do eiusmod tempor incididunt ut labore et
           dolore magna aliqua. Ut enim ad minim veniam</p>
      </div>
      <div class="comfortable">
        <img src="images/random_img.jpg">
        <h2>we comfortable</h2>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing
           elit, sed do eiusmod tempor incididunt ut labore et
           dolore magna aliqua. Ut enim ad minim veniam</p>
      </div>
      <div class="workHome">
        <img src="images/random_img.jpg">
        <h2>we work from home</h2>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing
           elit, sed do eiusmod tempor incididunt ut labore et
           dolore magna aliqua. Ut enim ad minim veniam</p>
      </div>
    </div>
</section>
备选快捷方案(不推荐长期使用)

如果不想调整现有HTML结构,也可以通过flex-wrap配合宽度设置实现效果,但结构分层不清晰,后期新增内容时容易出现布局错乱:

#Why_choose{
  /* 保留原有样式,新增以下属性 */
  flex-wrap: wrap;
  justify-content: center;
}
#Why_choose h1{
  /* 保留原有样式,新增以下属性 */
  width: 100%;
  text-align: center;
}
#Why_choose > div {
  width: calc(33.33% - 20px);
  margin: 0 10px;
}

预期效果参考:
布局效果参考图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:09:20