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

CSS中如何为类实现动画效果?新手rd类动画失效及滚动淡出需求求助

解决CSS动画不触发及滚动触发淡出效果的问题

嘿,我来帮你搞定这个问题!先从你当前动画不工作的原因说起,再针对你「滚动到下一页时第一页元素淡出」的需求给出完整方案。

一、当前动画没触发的核心问题

你的.rd动画完全没动,主要是两个低级但关键的错误:

  1. CSS大小写敏感坑:你定义的关键帧是小写的@keyframes rd,但.rd类里写的是animation: RD 5s infinite——CSS对标识符大小写敏感,大写的RD找不到对应的关键帧,所以动画直接失效了。
  2. 缺少定位属性:left属性只对非static定位的元素生效(比如relative/absolute),你的.rd默认是position: static,所以哪怕动画生效,left的位移也看不到。

另外还有个小细节:flex布局里没有justify-items属性,应该用justify-content来控制主轴方向的元素对齐,我也顺便帮你修正了。

先把这些问题改了,动画就能正常跑起来,修正后的CSS片段:

.rd { 
  display: flex; 
  flex-direction: column; 
  justify-content: center; /* 替换原错误的justify-items */
  align-items: center; 
  overflow: visible; 
  height: 100%; 
  opacity: 1; /* 建议用0-1的数值,比百分比更符合CSS标准 */
  position: relative; /* 添加定位,让left属性生效 */
  animation: rd 5s infinite; /* 把RD改成小写的rd */
} 
@keyframes rd { 
  0% { left: 0; opacity:1; } 
  50% { left: 200px; opacity:0; } 
  100% { left: 0; opacity:1; } 
} 

二、实现「滚动到下一页时第一页元素淡出」的需求

你原来的无限循环动画显然不是你要的效果,我们需要结合fullpage.js的滚动事件来触发单次淡出动画,步骤如下:

1. 调整CSS:准备触发式的淡出效果

先去掉infinite,定义一个需要触发才会执行的淡出状态(用CSS类来控制):

.rd { 
  display: flex; 
  flex-direction: column; 
  justify-content: center;
  align-items: center; 
  overflow: visible; 
  height: 100%; 
  opacity: 1;
  position: relative;
  transition: all 0.5s ease; /* 用过渡效果更简洁,也可以用关键帧动画 */
}

/* 定义淡出的类,滚动时添加这个类即可 */
.rd.fade-out {
  opacity: 0;
  left: 200px;
}

/* 如果偏好关键帧动画,也可以这么写: */
/*
@keyframes fadeOut {
  from { opacity: 1; left: 0; }
  to { opacity: 0; left: 200px; }
}
.rd.fade-out {
  animation: fadeOut 0.5s forwards; /* forwards让动画停在最后一帧 */
}
*/

2. 用fullpage.js的滚动事件触发动画

fullpage.js自带onLeave回调,当用户离开第一页时,给.rd元素加上淡出类;回到第一页时再移除,恢复显示:

new fullpage('#fullpage', {
  onLeave: function(origin, destination, direction) {
    // 离开第一页(index从0开始计数)时触发淡出
    if (origin.index === 0) {
      document.querySelector('.rd').classList.add('fade-out');
    }
    // 回到第一页时,移除淡出类,恢复元素显示
    if (destination.index === 0) {
      document.querySelector('.rd').classList.remove('fade-out');
    }
  }
});

3. 修正HTML的小错误

你的HTML里多了个无效的</d>标签,得删掉,另外建议加上第二页的内容方便测试滚动效果:

<div id="fullpage"> 
  <section class="vertical-scrolling"> 
    <div class="rd"> 
      <img class="crown" src="https://m.media-amazon.com/images/I/6176t0uwOEL._SL1200_.jpg" alt="crown" /> 
      <img class="heart" src="https://upload.wikimedia.org/wikipedia/commons/thumb/f/f1/Heart_coraz%C3%B3n.svg/1920px-Heart_coraz%C3%B3n.svg.png" alt="heart"> 
    </div> 
  </section> 
  <!-- 新增第二页,用于测试滚动触发效果 -->
  <section class="vertical-scrolling">
    <h2>这是第二页</h2>
  </section>
</div>

最后再提个小建议

如果是第一次用fullpage.js,记得在HTML里引入它的CSS和JS资源,不然滚动功能也会失效哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:52:54