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

Bootstrap响应式布局适配:大屏双组同行/小屏单行兼容问题

解决Bootstrap响应式布局行列分组难题

我明白你现在的困扰:想让小屏幕保持单列顺序显示,大屏幕把两组「标题+内容」模块并排,但调整布局时总是顾此失彼,要么大屏分组失效,要么小屏顺序乱掉。我来帮你梳理问题并给出可行的修复方案。

问题根源拆解

你的代码里有两个核心问题导致布局冲突:

  1. 重复引入Bootstrap资源:页面重复加载了两次CSS和JS文件,容易引发样式冲突和冗余加载。
  2. 布局结构缺乏分组逻辑:四个元素直接平级放置,没有把每组「标题+内容」先做内部包裹,导致大屏下无法正确识别两组模块的并列关系,小屏的顺序也容易被打乱。

修复后的完整代码

先清理冗余资源,再重构布局结构,完全贴合Bootstrap的响应式逻辑:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Layout Fix</title>
    <!-- 仅引入一次Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
    <style>
        /* SECTION WITH LINES */
        .section > div {
            border: 2px solid rgba(0,0,0,0.1);
            padding: .3em .8em;
            margin-top: 2em;
            position: relative;
            text-transform: uppercase;
            font-size: 1.2em;
            color: #555;
            font-weight: 600;
            text-align: center;
        }
        .section > div:before {
            content: '';
            position: absolute;
            top: 50%;
            right: 100%;
            border-bottom: 2px solid;
            width: 90%;
            margin: 0 20px;
            color: rgba(0,0,0,0.1);
        }
        .section > div:after {
            content: '';
            position: absolute;
            top: 50%;
            left: 100%;
            border-bottom: 2px solid;
            width: 90%;
            margin: 0 20px;
            color: rgba(0,0,0,0.1);
        }
        /* HALF SECTION WITH LINES */
        .h-section > span {
            border: 2px solid rgba(0,0,0,0.1);
            padding: .3em .8em;
            margin-top: 2em;
            margin-bottom: 2em;
            position: relative;
            text-transform: uppercase;
            font-size: 1.3em;
            color: #555;
            font-weight: 600;
            z-index: 1;
            text-align: center;
            height: 50px;
            display: inline-block; /* 替换float避免布局错乱 */
        }
        .h-section > span:before {
            content: '';
            position: absolute;
            top: 50%;
            right: 100%;
            border-bottom: 2px solid;
            width: 40%;
            margin: 0 20px;
            color: rgba(0,0,0,0.1);
        }
        .h-section > span:after {
            content: '';
            position: absolute;
            top: 50%;
            left: 100%;
            border-bottom: 2px solid;
            width: 40%;
            margin: 0 20px;
            color: rgba(0,0,0,0.1);
        }
    </style>
</head>
<body>
    <div class="container">
        <!-- 顶部标题区域 -->
        <div class="d-flex justify-content-center section col-lg-4 offset-lg-4 col-md-6 offset-md-3 col-sm-6 offset-sm-3">
            <div>What service do you require?</div>
        </div>

        <!-- 核心响应式布局 -->
        <div class="row">
            <!-- 第一组:标题+内容 -->
            <div class="col-lg-6">
                <div class="d-flex justify-content-center h-section">
                    <span>What we offer</span>
                </div>
                <div class="d-flex justify-content-center">
                    Blah
                </div>
            </div>

            <!-- 第二组:标题+内容 -->
            <div class="col-lg-6">
                <div class="d-flex justify-content-center h-section">
                    <span>Our benefits</span>
                </div>
                <div class="d-flex justify-content-center">
                    Blah 2
                </div>
            </div>
        </div>
    </div>

    <!-- 仅引入一次Bootstrap JS,放在页面底部优化加载 -->
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
</body>
</html>

关键修改说明

  1. 清理冗余资源:删除重复的Bootstrap引入,只保留一次,CSS放在<head>、JS放在页面底部,符合前端最佳实践。
  2. 分组布局逻辑:
    • 用col-lg-6把每组「标题+内容」包裹起来,大屏下两个col-lg-6自动各占50%宽度并排;小屏下(小于lg断点)每个col-lg-6自动变为100%宽度,堆叠成单列,完美保留你需要的显示顺序。
    • 去掉了原生逻辑冲突的d-flex-lg,改用Bootstrap原生栅格系统实现响应式分组,更贴合框架设计逻辑。
  3. 修复标题样式:把.h-section > span的float: left替换为display: inline-block,避免float导致的布局错乱,同时不影响标题居中效果。

这样修改后,小屏幕单列顺序显示、大屏幕两组模块并排的需求就都能满足了~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:24:08