Browse Source

Add selector options #102

pull/104/head
tsuyoshiwada 9 years ago
parent
commit
91274fdd8b
  1. 7
      dist/echo.js
  2. 2
      dist/echo.min.js
  3. 7
      src/echo.js

7
dist/echo.js vendored

@ -17,12 +17,14 @@
var callback = function () {}; var callback = function () {};
var selector = 'img[data-echo], [data-echo-background]';
var offset, poll, delay, useDebounce, unload; var offset, poll, delay, useDebounce, unload;
var isHidden = function (element) { var isHidden = function (element) {
return (element.offsetParent === null); return (element.offsetParent === null);
}; };
var inView = function (element, view) { var inView = function (element, view) {
if (isHidden(element)) { if (isHidden(element)) {
return false; return false;
@ -51,6 +53,7 @@
var optionToInt = function (opt, fallback) { var optionToInt = function (opt, fallback) {
return parseInt(opt || fallback, 10); return parseInt(opt || fallback, 10);
}; };
selector = opts.selector || selector;
offset = { offset = {
t: optionToInt(opts.offsetTop, offsetVertical), t: optionToInt(opts.offsetTop, offsetVertical),
b: optionToInt(opts.offsetBottom, offsetVertical), b: optionToInt(opts.offsetBottom, offsetVertical),
@ -72,7 +75,7 @@
}; };
echo.render = function () { echo.render = function () {
var nodes = document.querySelectorAll('img[data-echo], [data-echo-background]'); var nodes = document.querySelectorAll(selector);
var length = nodes.length; var length = nodes.length;
var src, elem; var src, elem;
var view = { var view = {

2
dist/echo.min.js vendored

@ -1,2 +1,2 @@
/*! echo-js v1.7.3 | (c) 2016 @toddmotto | https://github.com/toddmotto/echo */ /*! echo-js v1.7.3 | (c) 2016 @toddmotto | https://github.com/toddmotto/echo */
!function(t,e){"function"==typeof define&&define.amd?define(function(){return e(t)}):"object"==typeof exports?module.exports=e:t.echo=e(t)}(this,function(t){"use strict";var e,n,o,r,c,a={},u=function(){},d=function(t){return null===t.offsetParent},i=function(t,e){if(d(t))return!1;var n=t.getBoundingClientRect();return n.right>=e.l&&n.bottom>=e.t&&n.left<=e.r&&n.top<=e.b},l=function(){(r||!n)&&(clearTimeout(n),n=setTimeout(function(){a.render(),n=null},o))};return a.init=function(n){n=n||{};var d=n.offset||0,i=n.offsetVertical||d,f=n.offsetHorizontal||d,s=function(t,e){return parseInt(t||e,10)};e={t:s(n.offsetTop,i),b:s(n.offsetBottom,i),l:s(n.offsetLeft,f),r:s(n.offsetRight,f)},o=s(n.throttle,250),r=n.debounce!==!1,c=!!n.unload,u=n.callback||u,a.render(),document.addEventListener?(t.addEventListener("scroll",l,!1),t.addEventListener("load",l,!1)):(t.attachEvent("onscroll",l),t.attachEvent("onload",l))},a.render=function(){for(var n,o,r=document.querySelectorAll("img[data-echo], [data-echo-background]"),d=r.length,l={l:0-e.l,t:0-e.t,b:(t.innerHeight||document.documentElement.clientHeight)+e.b,r:(t.innerWidth||document.documentElement.clientWidth)+e.r},f=0;d>f;f++)o=r[f],i(o,l)?(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"),o.removeAttribute("data-echo-background")),u(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"),u(o,"unload"));d||a.detach()},a.detach=function(){document.removeEventListener?t.removeEventListener("scroll",l):t.detachEvent("onscroll",l),clearTimeout(n)},a}); !function(t,e){"function"==typeof define&&define.amd?define(function(){return e(t)}):"object"==typeof exports?module.exports=e:t.echo=e(t)}(this,function(t){"use strict";var e,n,o,r,c,a={},u=function(){},d="img[data-echo], [data-echo-background]",l=function(t){return null===t.offsetParent},i=function(t,e){if(l(t))return!1;var n=t.getBoundingClientRect();return n.right>=e.l&&n.bottom>=e.t&&n.left<=e.r&&n.top<=e.b},f=function(){(r||!n)&&(clearTimeout(n),n=setTimeout(function(){a.render(),n=null},o))};return a.init=function(n){n=n||{};var l=n.offset||0,i=n.offsetVertical||l,s=n.offsetHorizontal||l,h=function(t,e){return parseInt(t||e,10)};d=n.selector||d,e={t:h(n.offsetTop,i),b:h(n.offsetBottom,i),l:h(n.offsetLeft,s),r:h(n.offsetRight,s)},o=h(n.throttle,250),r=n.debounce!==!1,c=!!n.unload,u=n.callback||u,a.render(),document.addEventListener?(t.addEventListener("scroll",f,!1),t.addEventListener("load",f,!1)):(t.attachEvent("onscroll",f),t.attachEvent("onload",f))},a.render=function(){for(var n,o,r=document.querySelectorAll(d),l=r.length,f={l:0-e.l,t:0-e.t,b:(t.innerHeight||document.documentElement.clientHeight)+e.b,r:(t.innerWidth||document.documentElement.clientWidth)+e.r},s=0;l>s;s++)o=r[s],i(o,f)?(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"),o.removeAttribute("data-echo-background")),u(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"),u(o,"unload"));l||a.detach()},a.detach=function(){document.removeEventListener?t.removeEventListener("scroll",f):t.detachEvent("onscroll",f),clearTimeout(n)},a});

7
src/echo.js

@ -16,12 +16,14 @@
var callback = function () {}; var callback = function () {};
var selector = 'img[data-echo], [data-echo-background]';
var offset, poll, delay, useDebounce, unload; var offset, poll, delay, useDebounce, unload;
var isHidden = function (element) { var isHidden = function (element) {
return (element.offsetParent === null); return (element.offsetParent === null);
}; };
var inView = function (element, view) { var inView = function (element, view) {
if (isHidden(element)) { if (isHidden(element)) {
return false; return false;
@ -50,6 +52,7 @@
var optionToInt = function (opt, fallback) { var optionToInt = function (opt, fallback) {
return parseInt(opt || fallback, 10); return parseInt(opt || fallback, 10);
}; };
selector = opts.selector || selector;
offset = { offset = {
t: optionToInt(opts.offsetTop, offsetVertical), t: optionToInt(opts.offsetTop, offsetVertical),
b: optionToInt(opts.offsetBottom, offsetVertical), b: optionToInt(opts.offsetBottom, offsetVertical),
@ -71,7 +74,7 @@
}; };
echo.render = function () { echo.render = function () {
var nodes = document.querySelectorAll('img[data-echo], [data-echo-background]'); var nodes = document.querySelectorAll(selector);
var length = nodes.length; var length = nodes.length;
var src, elem; var src, elem;
var view = { var view = {

Loading…
Cancel
Save