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

如何设置视频背景为白/透明并实现滚动时标题变色与视频淡显

实现方案:首次滚动触发视频变淡+标题颜色切换

核心思路

通过监听首次滚动事件,给目标元素添加预定义的CSS类,利用CSS过渡实现平滑视觉变化,全程逻辑极简,适合JS基础较弱的开发者。


1. HTML 结构

基础结构包含视频容器和标题,给元素加类名方便选择:

<!-- 核心区域容器 -->
<div class="hero-wrap">
  <!-- 背景视频 -->
  <video 
    class="bg-video" 
    src="your-video.mp4"  <!-- 替换成你的视频地址 -->
    autoplay muted loop playsinline
    poster="video-cover.jpg"  <!-- 视频加载前的封面图 -->
  ></video>
  <!-- 标题文本 -->
  <h1 class="page-title">你的页面标题</h1>
</div>

2. CSS 样式

设置初始状态和滚动后的状态,添加过渡动画保证平滑:

/* 全局重置(可选,避免默认样式干扰) */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

/* 核心容器占满视口 */
.hero-wrap {
  position: relative;
  width: 100vw;
  height: 100vh;
  overflow: hidden;
}

/* 背景视频初始状态:完全不透明 */
.bg-video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 1;
  /* 过渡动画,保证变化平滑 */
  transition: opacity 0.8s ease;
}

/* 标题初始状态:白色,居中 */
.page-title {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  color: #fff;
  font-size: 3rem;
  /* 和视频同步过渡 */
  transition: color 0.8s ease;
}

/* 滚动触发后的状态类 */
.hero-wrap.scrolled .bg-video {
  opacity: 0.4; /* 透明度降低,视频变淡 */
}
.hero-wrap.scrolled .page-title {
  color: #000; /* 标题切换为黑色 */
}

3. JS 逻辑

只监听首次滚动,触发后停止监听,避免重复执行:

// 标记是否已经触发过动画
let isTriggered = false;

// 监听滚动事件
window.addEventListener('scroll', function() {
  // 仅在首次滚动时执行
  if (!isTriggered) {
    // 给容器添加滚动触发类
    document.querySelector('.hero-wrap').classList.add('scrolled');
    // 标记为已触发,后续不再执行
    isTriggered = true;
    // 可选:触发后移除滚动监听,减少性能消耗
    window.removeEventListener('scroll', arguments.callee);
  }
});

使用说明

  1. 把上述三部分代码合并到一个HTML文件中
  2. 替换视频地址为你自己的视频文件路径
  3. 直接在浏览器打开文件即可看到效果:页面加载后,首次滚动鼠标滚轮,视频会逐渐变淡,标题同步从白色切换为黑色

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:15:37