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

如何实现点击flip按钮后div逐个翻转(flip)的效果?

实现逐个翻转的Flip效果

嘿,我明白你想让点击flip按钮后,每个数字卡片逐个翻转的需求啦!咱们可以通过给每个卡片添加递增的动画延迟,配合JavaScript依次触发翻转状态,就能轻松实现这个效果。下面是具体的修改步骤和代码:

1. 保留基础HTML结构(无需大改)

<div class="row numList flip-panel">
  <div class="col-md-5ths">
    <div class="num front"> 1 </div>
    <div class="num back"> 2 </div>
  </div>
  <div class="col-md-5ths">
    <div class="num front"> 2 </div>
    <div class="num back"> 3 </div>
  </div>
  <div class="col-md-5ths">
    <div class="num front"> 3 </div>
    <div class="num back"> 4 </div>
  </div>
  <div class="col-md-5ths">
    <div class="num front"> 4 </div>
    <div class="num back"> 5 </div>
  </div>
  <div class="col-md-5ths">
    <div class="num front"> 5 </div>
    <div class="num back"> 6 </div>
  </div>
</div>
<button class="flip-btn">flip</button>

2. 调整CSS,支持延迟翻转

先确保你的基础翻转动画已经生效(比如用transform: rotateY(180deg)配合过渡效果),再新增翻转状态类和延迟控制的基础样式:

/* 基础翻转容器样式 */
.col-md-5ths {
  position: relative;
  width: 100%;
  height: 60px;
  perspective: 1000px;
}

/* 前后两面的基础样式 */
.num {
  position: absolute;
  width: 100%;
  height: 100%;
  backface-visibility: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #ddd;
  border-radius: 8px;
  transition: transform 0.6s ease;
}

.back {
  transform: rotateY(180deg);
}

/* 新增:翻转触发的状态类 */
.col-md-5ths.flipped .front {
  transform: rotateY(180deg);
}
.col-md-5ths.flipped .back {
  transform: rotateY(0deg);
}

3. 编写JavaScript逻辑,实现逐个翻转

点击按钮时,遍历每个卡片容器,给它们依次添加flipped类,并且设置递增的时间间隔:

const flipBtn = document.querySelector('.flip-btn');
const cardContainers = document.querySelectorAll('.col-md-5ths');

flipBtn.addEventListener('click', () => {
  // 先重置所有卡片状态(支持重复点击翻转)
  cardContainers.forEach(container => {
    container.classList.remove('flipped');
  });

  // 逐个触发翻转,每个卡片延迟200ms(可按需调整)
  cardContainers.forEach((container, index) => {
    setTimeout(() => {
      container.classList.add('flipped');
    }, index * 200);
  });
});

可选:支持来回切换翻转

如果想让点击按钮时,卡片能在正反状态间来回切换,可以把JS逻辑改成这样:

flipBtn.addEventListener('click', () => {
  cardContainers.forEach((container, index) => {
    setTimeout(() => {
      container.classList.toggle('flipped');
    }, index * 200);
  });
});

这样调整后,点击flip按钮,你的数字卡片就会一个接一个地完成翻转啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:47:35