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

如何实现720px以下移动端滚动入视口时触发flip card翻转效果

实现方案

1. 调整CSS代码

在原有CSS基础上新增以下内容,仅对宽度小于720px的移动设备生效:

@media only screen and (max-width: 719.98px) {
  /* 禁用移动端hover翻转,避免误触,需要保留可删除这段 */
  .flip-card:hover .flip-card-inner {
    transform: none;
  }
  /* 卡片进入视口后触发翻转的类 */
  .flip-card.flip-in-view .flip-card-inner {
    transform: rotateY(180deg);
  }
}

2. 新增JS代码

将以下代码插入到页面</body>标签前即可,采用性能更优的Intersection Observer实现滚动监听,不会造成页面卡顿:

// 仅在屏幕宽度小于720px时执行逻辑
if (window.innerWidth < 720) {
  const flipCards = document.querySelectorAll('.flip-card');
  const observer = new IntersectionObserver((entries) => {
    entries.forEach(entry => {
      // 卡片30%以上区域进入视口时触发翻转
      if (entry.isIntersecting && entry.intersectionRatio >= 0.3) {
        entry.target.classList.add('flip-in-view');
        // 只需翻转一次保留此行,需要每次进入视口都翻转就删除此行
        observer.unobserve(entry.target);

        // 需要卡片离开视口后翻回正面,取消下面三行注释即可
        // } else {
        //   entry.target.classList.remove('flip-in-view');
      }
    })
  }, {
    threshold: 0.3 // 调整数值可修改触发翻转的视口进入比例,范围0~1
  });
  // 监听所有翻转卡片
  flipCards.forEach(card => observer.observe(card));
}

注意事项

  • 原有HTML代码无需任何修改,直接复用现有结构即可
  • 翻转动画速度和原有hover效果保持一致,无需额外调整
  • 若不需要限制仅翻转一次,删除代码中observer.unobserve(entry.target)行即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:15:07