zoukankan      html  css  js  c++  java
  • stackoverflow愚人节彩蛋效果

    效果图

    代码如下

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <script src="https://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script>
    </head>
    
    <body>
        <!-- <input type="file" name="" id="file"> -->
    </body>
    <script>
    /*!
     * Fairy Dust Cursor.js
     * - 90's cursors collection
     * -- https://github.com/tholman/90s-cursor-effects
     * -- https://codepen.io/tholman/full/jWmZxZ/
     */
    
     (function fairyDustCursor() {
    
    var possibleColors = ["#D61C59", "#E7D84B", "#1B8798"]
    var width = window.innerWidth;
    var height = window.innerHeight;
    var cursor = {x: width/2, y: width/2};
    var particles = [];
    
    function init() {
      bindEvents();
      loop();
    }
    
    // Bind events that are needed
    function bindEvents() {
      document.addEventListener('mousemove', onMouseMove);
      document.addEventListener('touchmove', onTouchMove);
      document.addEventListener('touchstart', onTouchMove);
    
      window.addEventListener('resize', onWindowResize);
    }
    
    function onWindowResize(e) {
      width = window.innerWidth;
      height = window.innerHeight;
    }
    
    function onTouchMove(e) {
      if( e.touches.length > 0 ) {
        for( var i = 0; i < e.touches.length; i++ ) {
          addParticle( e.touches[i].clientX, e.touches[i].clientY, possibleColors[Math.floor(Math.random()*possibleColors.length)]);
        }
      }
    }
    
    function onMouseMove(e) {
      cursor.x = e.clientX;
      cursor.y = e.clientY;
    
      addParticle( cursor.x, cursor.y, possibleColors[Math.floor(Math.random()*possibleColors.length)]);
    }
    
    function addParticle(x, y, color) {
      var particle = new Particle();
      particle.init(x, y, color);
      particles.push(particle);
    }
    
    function updateParticles() {
    
      // Updated
      for( var i = 0; i < particles.length; i++ ) {
        particles[i].update();
      }
    
      // Remove dead particles
      for( var i = particles.length -1; i >= 0; i-- ) {
        if( particles[i].lifeSpan < 0 ) {
          particles[i].die();
          particles.splice(i, 1);
        }
      }
    
    }
    
    function loop() {
      requestAnimationFrame(loop);
      updateParticles();
    }
    
    /**
     * Particles
     */
    
    function Particle() {
    
      this.character = "*";
      this.lifeSpan = 120; //ms
      this.initialStyles ={
        "position": "absolute",
        "display": "block",
        "pointerEvents": "none",
        "z-index": "10000000",
        "fontSize": "16px",
        "will-change": "transform"
      };
    
      // Init, and set properties
      this.init = function(x, y, color) {
    
        this.velocity = {
          x:  (Math.random() < 0.5 ? -1 : 1) * (Math.random() / 2),
          y: 1
        };
    
        this.position = {x: x - 10, y: y - 20};
        this.initialStyles.color = color;
    
        this.element = document.createElement('span');
        this.element.innerHTML = this.character;
        applyProperties(this.element, this.initialStyles);
        this.update();
    
        document.querySelector('body').appendChild(this.element);
      };
    
      this.update = function() {
        this.position.x += this.velocity.x;
        this.position.y += this.velocity.y;
        this.lifeSpan--;
    
        this.element.style.transform = "translate3d(" + this.position.x + "px," + this.position.y + "px, 0) scale(" + (this.lifeSpan / 120) + ")";
      }
    
      this.die = function() {
        this.element.parentNode.removeChild(this.element);
      }
    
    }
    
    /**
     * Utils
     */
    
    // Applies css properties to an element.
    function applyProperties( target, properties ) {
      for( var key in properties ) {
        target.style[ key ] = properties[ key ];
      }
    }
    
    init();
    })();
    </script>
    
    </html>
    

    博客看自:https://www.cnblogs.com/CyLee/p/10636120.html

  • 相关阅读:
    [数字信号处理]离散傅里叶变换及其性质
    [数字信号处理]序列的逆z变换
    [数字信号处理]序列的z变换
    [数字信号处理]从傅里叶级数到傅里叶变换
    [物理]简谐振动总结
    [数字信号处理]常系数差分方程
    [数字信号处理]时域离散系统
    [数字信号处理]入门基本概念
    团队作业6-复审与事后分析
    Alpha阶段项目复审
  • 原文地址:https://www.cnblogs.com/smart-girl/p/11242452.html
Copyright © 2011-2022 走看看