JavaScript 实现点击爱心效果

可放在网页任何位置,以下是代码:

<script>
(function (e, t) {
  function r() {
    s = s.filter((e) => {
      e.alpha <= 0 ? (t.body.removeChild(e.el), e = null) : (e.y--, e.scale += .004, e.alpha -= .013, e.el.style.cssText = `left:${e.x}px;top:${e.y}px;opacity:${e.alpha};transform:scale(${e.scale},${e.scale}) rotate(45deg);background:${e.color};z-index:99999`);
      return e;
    });
    requestAnimationFrame(r);
  }

  function n() {
    e.onclick = function (e) {
      o(e);
    };
  }

  function o(e) {
    const a = t.createElement("div");
    a.className = "heart", s.push({ el: a, x: e.clientX - 5, y: e.clientY - 5, scale: 1, alpha: 1, color: c() });
    t.body.appendChild(a);
  }

  function i(e) {
    const a = t.createElement("style");
    a.type = "text/css";
    try {
      a.appendChild(t.createTextNode(e));
    } catch (t) {
      a.styleSheet.cssText = e;
    }
    t.head.appendChild(a);
  }

  function c() {
    return `rgb(${~~(255 * Math.random())},${~~(255 * Math.random())},${~~(255 * Math.random())})`;
  }

  let s = [];
  e.requestAnimationFrame = e.requestAnimationFrame || e.webkitRequestAnimationFrame || e.mozRequestAnimationFrame || e.oRequestAnimationFrame || e.msRequestAnimationFrame || function (e) {
    setTimeout(e, 1e3 / 60);
  };

  i(".heart{width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}.heart:after,.heart:before{content: '';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 50%;-moz-border-radius: 50%;position: fixed;}.heart:after{top: -5px;}.heart:before{left: -5px;}");
  n();
  r();
})(window, document);
</script>
阅读剩余
THE END