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

能否通过Rellax.js调用元素::before伪类实现视差效果?

问题解答

核心结论

没法直接用CSS伪类(比如::before)作为Rellax.js的目标元素——伪元素是CSS渲染阶段生成的,根本不存在于DOM结构中,JavaScript没法直接选中或操作它们,这就是你看到控制台报错的原因。

替代方案

把原本用::before实现的叠加背景,换成一个真实的DOM子元素,再将这个子元素设为Rellax的目标即可:

修改后的HTML代码

<div class="right bttk-cta-bg" style="background:url(/wp-content/uploads/2022/11/Arrow-Down-BG.png) repeat; background-position: top left"> 
    <div class="bttk-cta-overlay"></div>
    <!-- 原有的内容放在这里 -->
</div>

修改后的CSS代码

.bttk-cta-bg {
  position: relative; /* 让子元素的绝对定位以父容器为基准 */
}
.bttk-cta-overlay {
  background: url(/wp-content/uploads/2022/11/up-arrows.png);
  position: absolute;
  top: 0;
  left: 0;
  width: 100%; /* 铺满整个父容器 */
  height: 100%;
}

修改后的Rellax.js代码

<script>
  var rellax = new Rellax('.bttk-cta-overlay', {
    speed: -2,
    center: false,
    wrapper: null,
    round: true,
    vertical: true,
    horizontal: false
  });
</script>

注意事项

  • 必须给父容器.bttk-cta-bg添加position: relative,否则子元素的绝对定位会以整个页面为基准,无法铺满父容器。
  • 该方案完全替代伪元素的叠加效果,同时真实DOM元素能被Rellax正常识别,实现你需要的视差效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:37:02