Ei kuvausta

echo.min.js 2.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /*! echo.js v1.6.0 | (c) 2014 @toddmotto | https://github.com/toddmotto/echo */ ! function(t, e) {
  2. "function" == typeof define && define.amd ? define(function() {
  3. return e(t)
  4. }) : "object" == typeof exports ? module.exports = e : t.echo = e(t)
  5. }(this, function(t) {
  6. "use strict";
  7. var e, n, o, r, c, a = {},
  8. d = function() {},
  9. u = function(t, e) {
  10. var n = t.getBoundingClientRect();
  11. return n.right >= e.l && n.bottom >= e.t && n.left <= e.r && n.top <= e.b
  12. },
  13. l = function() {
  14. (r || !n) && (clearTimeout(n), n = setTimeout(function() {
  15. a.render(), n = null
  16. }, o))
  17. };
  18. return a.init = function(n) {
  19. n = n || {};
  20. var u = n.offset || 0,
  21. i = n.offsetVertical || u,
  22. f = n.offsetHorizontal || u,
  23. s = function(t, e) {
  24. return parseInt(t || e, 10)
  25. };
  26. e = {
  27. t: s(n.offsetTop, i),
  28. b: s(n.offsetBottom, i),
  29. l: s(n.offsetLeft, f),
  30. r: s(n.offsetRight, f)
  31. }, o = s(n.throttle, 250), r = n.debounce !== !1, c = !!n.unload, d = n.callback || d, a.render(), document.addEventListener ? (t.addEventListener("scroll", l, !1), t.addEventListener("load", l, !1)) : (t.attachEvent("onscroll", l), t.attachEvent("onload", l))
  32. }, a.render = function() {
  33. for (var n, o, r = document.querySelectorAll("img[data-echo], [data-echo-background]"), l = r.length, i = {
  34. l: 0 - e.l,
  35. t: 0 - e.t,
  36. b: (t.innerHeight || document.documentElement.clientHeight) + e.b,
  37. r: (t.innerWidth || document.documentElement.clientWidth) + e.r
  38. }, f = 0; l > f; f++) o = r[f], u(o, i) ? (c && o.setAttribute("data-echo-placeholder", o.src), null !== o.getAttribute("data-echo-background") ? o.style.backgroundImage = "url(" + o.getAttribute("data-echo-background") + ")" : o.src = o.getAttribute("data-echo"), c || o.removeAttribute("data-echo"), d(o, "load")) : c && (n = o.getAttribute("data-echo-placeholder")) && (null !== o.getAttribute("data-echo-background") ? o.style.backgroundImage = "url(" + n + ")" : o.src = n, o.removeAttribute("data-echo-placeholder"), d(o, "unload"));
  39. l || a.detach()
  40. }, a.detach = function() {
  41. document.removeEventListener ? t.removeEventListener("scroll", l) : t.detachEvent("onscroll", l), clearTimeout(n)
  42. }, a
  43. });