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

Bootstrap+GSAP视差布局问题:移动端适配方案咨询

Bootstrap布局适配问题:添加container/row后图片消失+移动端布局异常

问题描述

在使用Bootstrap构建布局时,尝试通过添加container和row来对齐两列内容,出现了图片消失、整体布局混乱的问题,目前仅桌面端显示正常,需要解决移动端适配问题。

修复方案

核心问题拆解

  1. Bootstrap网格规则未遵守:直接使用col-*类但未包裹在row和container/container-fluid中,导致网格布局失效。
  2. 固定高度适配问题:page-header的100vh固定高度在移动端会挤压内容,配合全局overflow-x:hidden容易导致元素被隐藏。
  3. 视差动画高度依赖:GSAP视差动画的高度计算依赖父元素尺寸,网格容器添加后需要重新确保高度传递正确。

具体修复步骤

  1. 补全网格结构:将两列内容放入container-fluid + row中,确保Bootstrap网格系统正常工作。
  2. 优化移动端高度:通过媒体查询调整page-header在移动端的高度为自适应,避免内容溢出。
  3. 修正视差容器样式:确保section-parallax能继承网格列的高度,同时调整parallax-content的高度比例适配不同屏幕。

修改后的完整代码

HTML

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">

<div class="spacer"></div>
<section class="page-header d-flex justify-content-center align-items-center" id="contacts">
  <div class="container-fluid h-100">
    <div class="row h-100 align-items-center">
      <div class="col-12 col-md-6">
        <p class="p1">Example</p>
        <p class="p2">Test1</p>
        <p class="p3"><a href="#">Test2</a></p>
      </div>
      
      <div class="col-12 col-md-6 section-parallax">
        <div class="parallax-content" style="background-image: url('https://images.unsplash.com/photo-1597098494674-36c3813a65f3?ixlib=rb-1.2.1&q=85&fm=jpg&crop=entropy&cs=srgb&ixid=eyJhcHBfaWQiOjE0NTg5fQ');"></div>
      </div>
    </div>
  </div>
</section>

<div class="spacer"></div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.3/gsap.min.js" integrity="sha512-7Au1ULjlT8PP1Ygs6mDZh9NuQD0A5prSrAUiPHMXpU6g3UMd8qesVnhug5X4RoDr35x5upNpx0A6Sisz1LSTXA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>

CSS

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html,
body {
  font-family: 'Roboto', sans-serif;
  overflow-x: hidden;
}

.spacer {
  height: 60vh;
  background-color: yellow;
}

.page-header {
  padding: 2rem;
  position: relative;
  width: 100vw;
  min-height: 100vh;
  color: #fff;
  background-color: #000;
}

/* 移动端高度适配 */
@media (max-width: 767px) {
  .page-header {
    min-height: auto;
    padding-top: 3rem;
    padding-bottom: 3rem;
  }
}

.section-parallax {
  position: relative;
  width: 100%;
  height: 100%;
  min-height: 400px; /* 移动端确保图片容器有最小高度 */
  overflow: hidden;
}

.parallax-content {
  background-size: cover;
  position: relative;
  background-position: center;
  background-repeat: no-repeat;
  width: 100%;
  height: 190%;
}

.section-mood-image {
  margin-top: 80px;
  height: 70vh;
}

.p1 {
  text-transform: uppercase;
  text-align: center;
  font-size: 4rem;
  font-weight: 800;
  color: #fff;
}

.p2 {
  text-transform: uppercase;
  text-align: center;
  color: #fff;
  font-size: 2rem;
  margin-top: -20px;
}

.p3 {
  text-align: center;
  color: #fff;
  font-size: 1.3rem;
}

.p3 a {
  color: #fff;
  border-bottom: 1px solid #fff;
}

/* 移动端文本大小适配 */
@media (max-width: 767px) {
  .p1 {
    font-size: 2.5rem;
  }
  .p2 {
    font-size: 1.5rem;
    margin-top: -10px;
  }
  .p3 {
    font-size: 1rem;
  }
}

JS

gsap.utils.toArray(".section-parallax .parallax-content").forEach((section, i) => {
  const heightDiff = section.offsetHeight - section.parentElement.offsetHeight;

  gsap.fromTo(section, {
    y: -heightDiff
  }, {
    scrollTrigger: {
      trigger: section.parentElement,
      scrub: true
    },
    y: 0,
    ease: "none"
  });
});

内容的提问来源于stack exchange,提问作者Elia d'Albenzio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 10:57:49