线条悬浮动画特效

代码语言:html

所属分类:动画

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


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">

<style>
@import url('https://fonts.googleapis.com/css?family=Merriweather&display=swap');

body{
  margin:0;
  padding:0;
  box-sizing:border-box;
  font-family: 'Merriweather', 'serif';
}

*:focus{
  outline: none;
}

.root{
  display:flex;
  flex-direction:column;
}

.bigbox{
  height:100vh;
  border:1px solid #AAA;
}

#drawing{
  border:1px solid white;
  position:absolute;
}

#can{
  border: 1px solid white;
  position: absolute;
  background: #252525;
}

.intro{
  background:#555;
  display:flex;
  justify-content:center;
  align-items: center;
}

.intro__text{
  color:#FAFAFA;
  font-size:1.5em;
}
</style>

</head>
<body translate="no">
<div class="root">
<div class="bigbox intro">
<canvas width="500px" height="500px" id="can">
</canvas>
</div>
</div>

<script>
function getRandomInt(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min)) + min; // max is exclusive
}

class Line {
  constructor(x, y, sdf) {
    this.x = x;
    this.y = y;
    this.ox = x;
    this.oy = y;
    this.radius = 100;
    this.opac = 0.2;
    this.rateOfOpacityChange = 0.04;
    this.time = new MyTime(sdf);
    this.colorIndex = getRandomInt(0, 4);
  }

  draw(ctx, lineWidth = 0.5) {
    let fromX = this.x;
    let fromY = this.y;
    let toX = fromX + 500;
    let toY = fromY - 900;
    ctx.lineWidth = lineWidth;
    ctx.strokeStyle = `rgba(225,225,255, ${this.opac})`;
    ctx.beginPath();
    ctx.moveTo(fromX, fromY);
    ctx.lineTo(toX, toY);
    ctx.closePath();
    ctx.stroke();
  }

  getTime() {
    return this.time.getTotalMilliseconds();
  }
  opacityUp() {
    this.opac += this.rateOfOpacityChange;
    if (this.opac > 1.0) {
      this.opac = 1.0;
    }
  }
  opacityDown() {
    this.opac -= this.rateOfOpacityChange;
    if (this.opac < 0.2) {
      this.opac = 0.2;
    }
  }}


class MyTime {
.........完整代码请登录后点击上方下载按钮下载查看

网友评论0