svg+js实现月圆之夜树下篝火燃烧动画效果代码

代码语言:html

所属分类:动画

代码描述:svg+js实现月圆之夜树下篝火燃烧动画效果代码

代码标签: svg js 月圆之夜 树下 篝火 燃烧 动画

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <style>
        @-webkit-keyframes float {
      0% {
        transform: translateX(0) translateY(10px);
      }
      25% {
        transform: translateX(20px) translateY(0);
      }
      50% {
        transform: translateX(0) translateY(-10px);
      }
      75% {
        transform: translateX(-20px) translateY(0);
      }
      100% {
        transform: translateX(0) translateY(10px);
      }
    }
    @keyframes float {
      0% {
        transform: translateX(0) translateY(10px);
      }
      25% {
        transform: translateX(20px) translateY(0);
      }
      50% {
        transform: translateX(0) translateY(-10px);
      }
      75% {
        transform: translateX(-20px) translateY(0);
      }
      100% {
        transform: translateX(0) translateY(10px);
      }
    }
    @-webkit-keyframes fireFront {
      0% {
        transform: translateX(0) translateY(0);
        opacity: 0.6;
      }
      10% {
        transform: translateX(2.5px) translateY(-5px);
      }
      20% {
        transform: translateX(0) translateY(-15px);
      }
      30% {
        transform: translateX(-2.5px) translateY(-20px);
      }
      40% {
        transform: translateX(0) translateY(-25px);
      }
      50% {
        transform: translateX(2.5px) translateY(-30px);
        opacity: 0.2;
      }
      60% {
        transform: translateX(0) translateY(-35px);
      }
      70% {
        transform: translateX(-2.5px) translateY(-40px);
      }
      80% {
        transform: translateX(0) translateY(-45px);
      }
      90% {
        transform: translateX(2.5px) translateY(-50px);
      }
      100% {
        transform: translateX(0) translateY(-55px);
        opacity: 0;
      }
    }
    @keyframes fireFront {
      0% {
        transform: translateX(0) translateY(0);
        opacity: 0.6;
      }
      10% {
        transform: translateX(2.5px) translateY(-5px);
      }
      20% {
        transform: translateX(0) translateY(-15px);
      }
      30% {
        transform: translateX(-2.5px) translateY(-20px);
      }
      40% {
        transform: translateX(0) translateY(-25px);
      }
      50% {
        transform: translateX(2.5px) translateY(-30px);
        opacity: 0.2;
      }
      60% {
        transform: translateX(0) translateY(-35px);
      }
      70% {
        transform: translateX(-2.5px) translateY(-40px);
      }
      80% {
        transform: translateX(0) translateY(-45px);
      }
      90% {
        transform: translateX(2.5px) translateY(-50px);
      }
      100% {
        transform: translateX(0) translateY(-55px);
        opacity: 0;
      }
    }
    @-webkit-keyframes fireMid {
      0% {
        transform: translateX(0) translateY(0);
        opacity: 0.6;
      }
      10% {
        transform: translateX(2.5px) translateY(-10px);
      }
      20% {
        transform: translateX(0) translateY(-20px);
      }
      30% {
        transform: translateX(-2.5px) translateY(-30px);
      }
      40% {
        transform: translateX(0) translateY(-40px);
      }
      50% {
        transform: translateX(2.5px) translateY(-50px);
        opacity: 0.1;
      }
      60% {
        transform: translateX(0) translateY(-60px);
      }
      70% {
        transform: translateX(-2.5px) translateY(-70px);
      }
      80% {
        transform: translateX(0) translateY(-80px);
      }
      90% {
        transform: translateX(2.5px) translateY(-90px);
      }
      100% {
        transform: translateX(0) translateY(-100px);
        opacity: 0;
      }
    }
    @keyframes fireMid {
      0% {
        transform: translateX(0) translateY(0);
        opacity: 0.6;
      }
      10% {
        transform: translateX(2.5px) translateY(-10px);
      }
      20% {
        transform: translateX(0) translateY(-20px);
      }
      30% {
        transform: translateX(-2.5px) translateY(-30px);
      }
      40% {
        transform: translateX(0) translateY(-40px);
      }
      50% {
        transform: translateX(2.5px) translateY(-50px);
        opacity: 0.1;
      }
      60% {
        transform: translateX(0) translateY(-60px);
      }
      70% {
        transform: translateX(-2.5px) translateY(-70px);
      }
      80% {
        transform: translateX(0) translateY(-80px);
      }
      90% {
        transform: translateX(2.5px) translateY(-90px);
      }
      100% {
        transform: translateX(0) translateY(-100px);
        opacity: 0;
      }
    }
    @-webkit-keyframes fireBack {
      0% {
        transform: translateX(0) translateY(0);
        opacity: 0.8;
      }
      10% {
        transform: translateX(2.5px) translateY(-20px);
      }
      20% {
        transform: translateX(0) translateY(-40px);
      }
      30% {
        transform: translateX(-2.5px) translateY(-60px);
      }
      40% {
        transform: translateX(0) translateY(-80px);
      }
      50% {
        transform: translateX(2.5px) translateY(-100px);
        opacity: 0.1;
      }
      60% {
        transform: translateX(0) translateY(-120px);
      }
      70% {
        transform: translateX(-2.5px) translateY(-140px);
      }
      80% {
        transform: translateX(0) translateY(-160px);
      }
      90% {
        transform: translateX(2.5px) translateY(-180px);
      }
      100% {
        transform: translateX(0) translateY(-200px);
        opacity: 0;
      }
    }
    @keyframes fireBack {
      0% {
        transform: translateX(0) translateY(0);
        opacity: 0.8;
      }
      10% {
        transform: translateX(2.5px) translateY(-20px);
      }
      20% {
        transform: translateX(0) translateY(-40px);
      }
      30% {
        transform: translateX(-2.5px) translateY(-60px);
      }
      40% {
        transform: translateX(0) translateY(-80px);
      }
      50% {
        transform: translateX(2.5px) translateY(-100px);
        opacity: 0.1;
      }
      60% {
        transform: translateX(0) translateY(-120px);
      }
      70% {
        transform: translateX(-2.5px) translateY(-140px);
      }
      80% {
        transform: translateX(0) translateY(-160px);
      }
      90% {
        transform: translateX(2.5px) translateY(-180px);
      }
      100% {
        transform: translateX(0) translateY(-200px);
        opacity: 0;
      }
    }
    html, body {
      margin: 0;
      padding: 0;
      height: 100%;
      position: relative;
    }
    
    body {
      background: #1a252f;
    }
    
    .container {
      width: 100%;
      height: 100%;
      position: relative;
      display: flex;
      flex-direction: row;
      flex-wrap: nowrap;
      justify-content: center;
      align-items: center;
      z-index: 2;
    }
    .container .fire {
      width: 320px;
      min-width: 300px;
      height: 320px;
      min-height: 300px;
      position: relative;
      -webkit-animation: float 30s ease-in-out infinite;
              animation: float 30s ease-in-out infinite;
    }
    .container .fire.debug {
      border: 1px solid red;
    }
    .container .fire.debug .fire-front span,
    .container .fire.debug .fire-mid span,
    .container .fire.debug .fire-back span {
      background: none;
      border-radius: 0px;
      border: 1px solid blue;
    }
    .container .fire.debug .fireplace {
      border: 1px solid yellow;
    }
    .container .fire.debug .fireplace img {
      display: none;
    }
    .container .fire .fire-front {
      position: absolute;
      width: 60px;
      height: 120px;
      bottom: 20px;
      left: 50%;
      margin-left: -30px;
      z-index: 4;
    }
 .........完整代码请登录后点击上方下载按钮下载查看

网友评论0