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

如何在react-three/fiber中让部分DOM元素显示在Three.js模型后方?

解决 React Three Fiber 中 DOM 与 3D 模型分层渲染的问题

核心逻辑

要实现「部分DOM在3D模型前、部分背景在模型后」的效果,核心是拆分目标节的DOM结构:把需要藏在模型后的背景图从<Scroll html>容器中独立出来,通过CSS层级控制让它处于Three.js画布的下层;而需要留在模型前的文本,继续保留在<Scroll html>容器内(默认会渲染在画布上层)。

具体实现步骤

1. 拆分目标节的DOM结构

把「Color Transitions」节的背景图和文本拆分开,文本留在<Scroll html>里,背景图单独作为同级元素:

// 原结构
<Scroll html>
  {/* 其他章节内容 */}
  <section className="color-transitions">
    <div className="bg-image"></div>
    <div className="text-content">Color Transitions 相关文本</div>
  </section>
</Scroll>

// 修改后的结构
<Scroll html>
  {/* 其他章节内容 */}
  <section className="color-transitions">
    <div className="text-content">Color Transitions 相关文本</div>
  </section>
</Scroll>
{/* 独立的背景图元素,与Scroll组件同级 */}
<div className="color-transitions-bg"></div>

2. 用CSS控制层级与定位

通过z-index和绝对定位,明确各元素的层级关系:

/* 确保Three.js画布处于中间层级 */
canvas {
  position: fixed;
  z-index: 1;
}

/* 独立背景图:z-index低于画布,放在3D模型后方 */
.color-transitions-bg {
  position: absolute;
  top: /* 对应Color Transitions节的顶部位置,比如800px */;
  left: 0;
  width: 100%;
  height: /* 对应节的高度,比如600px */;
  background-image: url('你的背景图路径');
  background-size: cover;
  z-index: 0;
}

/* 文本内容:z-index高于画布,留在3D模型前方 */
.scroll-html .color-transitions .text-content {
  position: relative;
  z-index: 2;
  /* 保留原有的字体、间距等样式 */
}

3. 同步滚动位置

因为背景图是独立元素,需要和<Scroll>组件的滚动进度同步,避免错位。用useScroll钩子获取滚动进度,动态调整背景图的位置:

import { useScroll } from '@react-three/drei';

function YourPageComponent() {
  const { scroll } = useScroll();
  // 计算滚动偏移量:根据你的页面总长度和目标节的位置调整数值
  const bgOffset = scroll.progress * 1200;

  return (
    <>
      {/* 你的3D场景、Scroll组件等 */}
      <div 
        className="color-transitions-bg"
        style={{ transform: `translateY(${bgOffset}px)` }}
      />
    </>
  );
}

4. 性能优化(可选)

如果背景图滚动时出现卡顿,开启CSS硬件加速:

.color-transitions-bg {
  will-change: transform;
  transform: translateZ(0);
}

注意事项

  • 确保<Scroll html>容器的z-index默认高于画布,这样里面的所有文本都会自然留在模型前方。
  • 独立背景图的top和height要和原节的位置、高度完全匹配,避免视觉错位。
  • 滚动偏移量的数值需要根据你的实际页面布局调整,保证背景图和文本同步滚动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:42:45