【问题标题】:Replicating an Animation with Particles.JS使用 Particles.JS 复制动画
【发布时间】:2017-08-11 21:08:23
【问题描述】:

我正在尝试复制粒子在加载此页面时向前爆炸的动画效果:http://vincentgarreau.com/particles.js/

这是我的 HTML:

<div class="container-fluid">
  <div id="particles-js">
    <canvas class="particles-js-canvas-el">
  </div>
  <script src="https://cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js"></script>
  <script>
    particlesJS.load('particles-js', 'assets/particles.json', function () {
      console.log('particles.json loaded...');
    });
  </script>
</div>

还有我的 CSS:

#particles-js {
  position: absolute;
  width: 100%;
  height: 100%;
  background-color: #000;
  background-image: url("");
  background-repeat: no-repeat;
  background-size: cover;
  background position: 50% 50%;
  left: 0px;
}

canvas {
  width: 100%;
  height: 100%;
  display: block;
  vertical-align: bottom;
}

#particles-js .particles-js-canvas-el {
  -ms-transform: scale(1);
  -webkit-transform: scale(1);
  transform: scale(1);
  opacity: 1;
  -webkit-animation: appear 1.4s 1;
  animation: appear 1.4s 1;
  -webkit-animation-fill-mode: forwards;
  animation-fill-mode: forwards
}

很遗憾,我没有收到任何动画响应。

我将不胜感激任何对此问题的见解!谢谢

【问题讨论】:

    标签: javascript css animation css-animations particles


    【解决方案1】:

    为什么它不起作用:

    你看不到动画是因为你没有定义它的帧。

    演示有这个 CSS

    #particles-js .particles-js-canvas-el {
        -ms-transform: scale(1);
        -webkit-transform: scale(1);
        transform: scale(1);
        opacity: 1;
        -webkit-animation: appear 1.4s 1;
        animation: appear 1.4s 1;
        -webkit-animation-fill-mode: forwards;
        animation-fill-mode: forwards;
    }
    

    这很棒,但如果没有实际的动画帧就什么也做不了。动画帧稍后在工作表中定义,如下所示(示例):

    @keyframes appear {
     0% {
        -ms-transform: scale(0);
        -webkit-transform: scale(0);
        transform: scale(0);
        opacity: 0;
    }
      100% {
        -ms-transform: scale(1);
        -webkit-transform: scale(1);
        transform: scale(1);
        opacity: 1;
    }
    }
    

    您可以尝试看看是否将上述内容添加到您的 CSS 作品中。如果是这样,那就太好了,如果不是像下面这样创建自己的


    如何从头开始

    您可以在 #particles-js 或其中的画布上使用 CSS 动画。

    设置为transform: scale(0),默认情况下使用css animations,将比例从0恢复到1

    JsFiddle

    body {
      overflow: hidden
    }
    
    #particles-js {
      opacity: 0;
      transform: scale(0);
      position: absolute;
      width: 100%;
      height: 100%;
      background-color: #000;
      background-image: url("");
      background-repeat: no-repeat;
      background-size: cover;
      background position: 50% 50%;
      left: 0px;
      animation: explode 1s linear;
      animation-fill-mode: forwards
    }
    
    @keyframes explode {
      from {}
      to {
        transform: scale(1);
        opacity: 1;
      }
    }
    &lt;div id="particles-js"&gt;

    要将动画仅应用于粒子,您需要将动画应用于&lt;canvas&gt; 元素。使用您当前的代码,添加下面的 CSS 就足够了,因为其他所有内容都已设置。

    #particles-js .particles-js-canvas-el {
      opacity: 0;
      transform: scale(0);
      animation: explode 1s linear;
      animation-fill-mode: forwards;
    }
    
    @keyframes explode {
      from {}
      to {
        transform: scale(1);
        opacity: 1;
      }
    }
    

    【讨论】:

    • 太棒了;这绝对可以使 div 存在!但是,您是否碰巧知道我如何将其应用于节点本身?现在,整个黑匣子都在爆炸:p
    • 是的,框或#particles-js 具有您想要将其应用到画布的背景。在演示网站上,画布被标识为&lt;canvas class="particles-js-canvas-el" ... "&gt;&lt;/canvas&gt; 使用您的代码设置现场演示,我很乐意查看它
    • @I haz kode 好的,所以我尝试设置现场演示,但惨遭失败,但画布工作正常。有用。但是,我想知道是否有一种更“雄伟”的方式来进行爆炸而不是从/到关键帧?就像让它在动画结束时看起来不那么刺耳的东西。
    • @I haz kode 非常感谢,它运行良好。仅供参考,我在搜索源代码时找不到@keyframes appear {。你在哪里找到的,以便我知道以后的项目?
    • @Rohan 如果您需要查看任何动画中定义了哪些帧,然后打开开发工具,选择具有动画的元素,然后一直向下滚动。关键帧定义通常在底部的最后一件事。如果您还需要什么,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多