zoukankan      html  css  js  c++  java
  • JS打造的跟随鼠标移动的酷炫拓扑图案

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>
    <title>JS打造的跟随鼠标移动的酷炫拓图案</title>
    <meta http-equiv="content-type" content="text/html;charset=gb2312">
    <style type="text/css">
    html {
    overflow: hidden;
    }

    body {
    position: absolute;
    height: 100%;
    100%;
    margin: 0;
    padding: 0;
    }

    #screen {
    background: #000;
    position: absolute;
    100%;
    height: 100%;
    }

    #screen span {
    background: #fff;
    font-size: 0;
    overflow: hidden;
    2px;
    height: 2px;
    }
    </style>
    <script type="text/javascript">
    var Follow = function () {
    var $ = function (i) {
    return document.getElementById(i)
    },
    addEvent = function (o, e, f) {
    o.addEventListener ? o.addEventListener(e, f, false) : o.attachEvent

    ('on' + e, function () {
    f.call(o)
    })
    },
    OBJ = [],
    sp, rs, N = 0,
    m;
    var init = function (id, config) {
    this.config = config || {};
    this.obj = (id);
    sp = this.config.speed || 4;
    rs = this.config.animR || 1;
    m = {x: (id).offsetWidth * .5, y: $(id).offsetHeight * .5};
    this.setXY();
    this.start();
    }
    init.prototype = {
    setXY: function () {
    var _this = this;
    addEvent(this.obj, 'mousemove', function (e) {
    e = e || window.event;
    m.x = e.clientX;
    m.y = e.clientY;
    })
    },
    start: function () {
    var k = 180 / Math.PI,
    OO, o, _this = this,
    fn = this.config.fn;
    OBJ[N++] = OO = new CObj(null, 0, 0);
    for (var i = 0; i < 360; i += 20) {
    var O = OO;
    for (var j = 10; j < 35; j += 1) {
    var x = fn(i, j).x,
    y = fn(i, j).y;
    OBJ[N++] = o = new CObj(O, x, y);
    O = o;
    }
    }
    setInterval(function () {
    for (var i = 0; i < N; i++) OBJ[i].run();
    }, 16);
    }
    }
    var CObj = function (p, cx, cy) {
    var obj = document.createElement("span");
    this.css = obj.style;
    this.css.position = "absolute";
    this.css.left = "-1000px";
    this.css.zIndex = 1000 - N;
    document.getElementById("screen").appendChild(obj);
    this.ddx = 0;
    this.ddy = 0;
    this.PX = 0;
    this.PY = 0;
    this.x = 0;
    this.y = 0;
    this.x0 = 0;
    this.y0 = 0;
    this.cx = cx;
    this.cy = cy;
    this.parent = p;
    }
    CObj.prototype.run = function () {
    if (!this.parent) {
    this.x0 = m.x;
    this.y0 = m.y;
    } else {
    this.x0 = this.parent.x;
    this.y0 = this.parent.y;
    }
    this.x = this.PX += (this.ddx += ((this.x0 - this.PX - this.ddx) + this.cx) / rs) / sp;
    this.y = this.PY += (this.ddy += ((this.y0 - this.PY - this.ddy) + this.cy) / rs) / sp;
    this.css.left = Math.round(this.x) + 'px';
    this.css.top = Math.round(this.y) + 'px';
    }
    return init;
    }();
    </script>
    </head>

    <body>
    <div id="screen"></div>
    <script type="text/javascript">
    new Follow('screen', {
    speed: 4,
    animR: 2,
    fn: function (i, j) {
    return {
    x: j / 4 * Math.cos(i),
    y: j / 4 * Math.sin(i)
    }
    }
    })
    </script>
    </body>

    </html>
  • 相关阅读:
    sabaki and leelazero
    apply current folder view to all folders
    string operation in powershell
    wirte function in powershell
    add environment path to powershell
    Module in powershell
    sql prompt
    vmware中鼠标在部分区域不能使用
    调整多个控件的dock的顺序
    行为型模型 策略模式
  • 原文地址:https://www.cnblogs.com/Man-Dream-Necessary/p/4860175.html
Copyright © 2011-2022 走看看