返回

分解React 多米诺骨牌:简化版教程

前端

React 多米诺骨牌:打造令人惊叹的倒塌效果

构建基础结构

第一步是创建我们多米诺骨牌动画的基础结构。我们使用 HTML 和 CSS 来创建一个多米诺骨牌布局。我们可以使用一个包含一系列多米诺骨牌的容器,每个多米诺骨牌都由一个 div 元素表示。

<div class="domino-container">
  <div class="domino"></div>
  <div class="domino"></div>
  <div class="domino"></div>
  ...
</div>
.domino-container {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
}

.domino {
  width: 20px;
  height: 100px;
  background-color: black;
  margin: 0 5px;
}

添加动画

接下来,我们使用 React 的 useState()useEffect() 钩子为多米诺骨牌添加动画。我们创建一个状态变量来跟踪多米诺骨牌的引用,并使用 useEffect() 钩子在多米诺骨牌倒下时应用动画。

import React, { useState, useEffect } from 'react';

const Domino = () => {
  const [dominoes, setDominoes] = useState([]);
  const [isFalling, setIsFalling] = useState(false);

  useEffect(() => {
    if (isFalling) {
      dominoes.forEach((domino, index) => {
        setTimeout(() => {
          domino.classList.add('falling');
        }, index * 100);
      });
    }
  }, [dominoes, isFalling]);

  const startFalling = () => {
    setIsFalling(true);
  };

  return (
    <div className="domino-container">
      {dominoes.map((domino, index) => (
        <div
          className="domino"
          ref={ref => dominoes[index] = ref}
          key={index}
        />
      ))}
      <button onClick={startFalling}>开始</button>
    </div>
  );
};

export default Domino;

把玩动画

现在我们已经创建了一个可以倒塌的多米诺骨牌动画。我们可以点击按钮来启动动画,观看多米诺骨牌依次倒下。

为了让动画更有趣,我们可以尝试一些技巧:

  • 改变多米诺骨牌的颜色或形状。
  • 在多米诺骨牌之间添加障碍物。
  • 让多米诺骨牌倒下后消失。

释放你的想象力,创造出各种酷炫的效果!

常见问题解答

  • 如何改变多米诺骨牌的颜色?

答:你可以在 .domino CSS 类中更改 background-color 属性。

  • 如何让多米诺骨牌倒下得更慢?

答:在 setTimeout() 函数中增加延迟时间,例如 setTimeout(() => { ... }, index * 200);

  • 如何让多米诺骨牌倒下时产生声音效果?

答:你可以使用 JavaScript 的 Audio 对象播放声音。

  • 如何让多米诺骨牌倒下后消失?

答:在 useEffect() 钩子中,在多米诺骨牌倒下后将它们从 DOM 中删除,例如 domino.parentNode.removeChild(domino);

  • 如何让多米诺骨牌倒下时触发其他事件?

答:你可以使用事件侦听器在多米诺骨牌倒下时触发函数,例如 domino.addEventListener('animationend', () => { ... });