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

背景图滚动固定后文字叠加滚动的技术问题咨询

解决背景图滚动与文字透明背景问题

嘿,我来帮你搞定这两个需求!先从简单的文字背景透明说起,再解决背景图的滚动逻辑~

一、让文字背景透明,不遮挡背景图

这个真的超简单!你只要确保承载文字的容器没有设置不透明的背景色就行:

  • 如果之前给文字容器加了类似 background: white; 的样式,直接删掉这行;
  • 或者主动设置成透明:
.content {
  background: transparent; /* 或者直接不写,默认就是透明 */
  /* 额外加些内边距让文字更易读,可选 */
  padding: 2rem;
}

这样文字就会“浮”在背景图上方,不会用白色块挡住背景啦。

二、实现背景图先滚动后固定的效果

我们可以用CSS的滚动驱动动画来实现这个分阶段的滚动效果,不用写复杂的JS,现在主流浏览器都支持这个特性了。

1. HTML结构

先把背景图和文字放在同一个父容器里:

<div class="hero-wrapper">
  <div class="bg-image"></div>
  <div class="content">
    <!-- 这里放你的所有文字内容 -->
    <p>这里是第一段落...</p>
    <p>很长的文字内容,让页面能滚动起来...</p>
    <!-- 更多内容 -->
  </div>
</div>

2. CSS实现

/* 全局基础样式,重置默认边距 */
body {
  margin: 0;
  padding: 0;
}

/* 父容器:要足够高,让内容能滚动 */
.hero-wrapper {
  min-height: 200vh; /* 可以根据实际内容调整,至少要超过屏幕高度 */
  position: relative;
}

/* 背景图容器 */
.bg-image {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 110vh; /* 你的背景图高度略高于屏幕,这里设为110vh示例 */
  background: url('你的背景图地址') center/cover no-repeat;
  
  /* 核心:滚动驱动动画 */
  animation: slide-up-to-bottom fixed linear;
  animation-timeline: scroll(root);
  /* 动画生效范围:从页面顶部滚动到「背景图超出屏幕的高度」时停止 */
  animation-range: 0 calc(110vh - 100vh);
}

/* 背景图上移动画:从初始位置向上移动,直到图底对齐窗口底部 */
@keyframes slide-up-to-bottom {
  from {
    transform: translateY(0);
  }
  to {
    transform: translateY(calc(100vh - 110vh)); /* 向上移动10vh,刚好让图底贴窗口底部 */
  }
}

/* 文字容器:确保在背景图上方 */
.content {
  position: relative;
  z-index: 1; /* 层级比背景图高,保证文字在上面 */
  background: transparent;
  max-width: 800px;
  margin: 0 auto;
  padding: 2rem;
  color: #fff; /* 如果背景图较暗,可以给文字加白色,方便阅读 */
}

效果说明

  • 当你刚开始向下滚动页面时,背景图会跟着向上滑动,直到它的底部和窗口底部对齐;
  • 继续滚动的话,背景图就固定在这个位置不动了,文字会在固定的背景图上方继续滚动;
  • 文字区域是完全透明的,背景图能完整透过文字区域显示。

如果你的背景图超出屏幕的高度不是10vh,只要把代码里的110vh改成你实际的背景图高度,animation-range@keyframes里的数值也会自动对应调整哦~

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

火山引擎 最新活动