多彩图片加载loading过渡动画效果

代码语言:html

所属分类:加载滚动

代码描述:多彩图片加载loading过渡动画效果

代码标签: loading 过渡 动画 效果

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

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

<style>
body {
  margin: 0;
  width: 100vw;
  overflow-x: hidden;
  background-color: #fdfdfd;
}

.bg-cv {
  position: fixed;
  z-index: -1000;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
}

.wrapper {
  display: flex;
  justify-content: center;
}

.rows {
  padding: 16px;
  box-sizing: border-box;
  width: 100%;
  min-height: 100vh;
  display: grid;
  grid-auto-flow: row;
  grid-gap: 16px;
  grid-template-columns: repeat(4, auto);
  max-width: calc(250px * 4 + 16px * 5);
}

.im-wrapper {
  position: relative;
}

.im-im {
  position: absolute;
  transition: opacity 1s;
  top: 0;
  left: 0;
  object-fit: cover;
  cursor: pointer;
}

.canv {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 20;
  pointer-events: none;
}
</style>

</head>
<body translate="no">
<div class="wrapper">
<div class="rows">
</div>
</div>

<script >

  
  const CONSTANTS = {
    rad2deg: 57.295779513082320,
};

class LV2 {
    // x: number
    // y: number
    constructor(x, y) {
        this.x = x;
        this.y = y;
    }
    
    // return: string
    // eg. [1,2]
    toString() {
        return '[' + this.x + ',' + this.y + ']';
    }

    // return: LV2
    copy() {
        return new LV2(this.x, this.y);
    }
    
    // o: { x, y }
    setAs(o) {
        this.x = o.x;
        this.y = o.y;
    }

    // x: number
    // y: number
    setValues(x, y) {
        this.x = x;
        this.y = y;
    }
    
    // o: { x: number, y: number }
    // return: LV2
    add(o) {
        return new LV2(this.x + o.x, this.y + o.y);
    }
    
    // o: { x: number, y: number }
    iadd(o) {
        this.x += o.x;
        this.y += o.y;
    }
    
    // o: { x: number, y: number }
    // return: LV2
    sub(o) {
        return new LV2(this.x - o.x, this.y - o.y);
    }
    
    // o: { x: number, y: number }
    isub(o) {
        this.x -= o.x;
        this.y -= o.y;
    }
    
    // s: number
    // return: LV2
    scale(s) {
        return new LV2(this.x * s, this.y * s);
    }

    // s: number
    iscale(s) {
        this.x *= s;
        this.y *= s;
    }
    
    // s: number
    // return: LV2
    div(s) {
        return new LV2(this.x / s, this.y / s);
    }
    
    // s: number
    idiv(s) {
        this.x /= s;
        this.y /= s;
    }
    
    // o: { x: number, y: number }
    // return: number
    dot(o) {
        return this.x * o.y + this.y * o.x;
    }
    
    // o: { x: number, y: number }
    // return: number
    dist(o) {
        var dx = this.x - o.x;
        var dy = this.y - o.y;
        return Math.sqrt(dx * dx + dy * dy);
    }
    
    // return: number
    mag() {
        return Math.sqrt(this.x * this.x + this.y * this.y);
    }
    
    // return: LV2
    round() {
        return new LV2(Math.round(this.x), Math.round(this.y));
    }
    
    // return: LV2
    floor() {
        return new LV2(Math.floor(this.x), Math.floor(this.y));
    }
    
    iround() {
        this.x = Math.round(this.x);
        this.y = Math.round(this.y);
    }
    
    ifloor() {
        this.x = Math.floor(this.x);
        this.y = Math.floor(this.y);
    }
    
    // return: LV2
    unit() {
        var m = Math.sqrt(this.x * this.x + this.y * this.y);
        return new LV2(this.x / m, this.y / m);	
    }
    
    iunit() {
        var m = Math.sqrt(this.x * this.x + this.y * this.y);
        this.x /= m;
        this.y /= m;
    }
    
    // target: LV2
    // time: number [0-1]
    // return: LV2
    interpolateTo(target, time) {
        var to = target.copy();
        to.isub(this);
        to.iscale(time);
        to.iadd(this);
        return to;
    }

    // return: number
    getAngle() {
        var angle = CONSTANTS.rad2deg * Math.atan(this.y / this.x);
        if(this.x < 0.0)
            angle += 180.0;
        else if(y < 0.0)
            angle += 360.0;
        return angle;
    }
    
    // angle: number
    // return: LV2
    static fromAngle(angle) {
        var rv = new LV2(0,0);
        angle /= CONSTANTS.rad2deg;
        rv.x = Math.cos(angle);
        rv.y = Math.sin(angle);
        return rv;
    }
}

class LV3 {
    // x: number
    // y: number
    // z: number
    constructor(x, y, z) {
        this.x = x;
        this.y = y;
        this.z = z;
    }

    // return: string
    toString() {
        return '[' + this.x + ',' + this.y + ',' + this.z + ']';
  .........完整代码请登录后点击上方下载按钮下载查看

网友评论0