PATH:
home
/
letacommog
/
rachat-or-bourgenbresse
/
wp-content
/
themes
/
dt-the7
/
js
/
atoms
/
plugins
/* Lazy loading: begin */ // http://paulirish.com/2011/requestanimationframe-for-smart-animating/ // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating // requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel // MIT license (function() { var lastTime = 0; var vendors = ['ms', 'moz', 'webkit', 'o']; for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame']; window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame']; } if (!window.requestAnimationFrame) window.requestAnimationFrame = function(callback, element) { var currTime = new Date().getTime(); var timeToCall = Math.max(0, 16 - (currTime - lastTime)); var id = window.setTimeout(function() { callback(currTime + timeToCall); }, timeToCall); lastTime = currTime + timeToCall; return id; }; if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function(id) { clearTimeout(id); }; }()); // https://github.com/callmecavs/layzr.js // CONSTRUCTOR function Layzr(options) { // debounce this._lastScroll = 0; this._ticking = false; // options options = options || {}; this._optionsContainer = document.querySelector(options.container) || window; this._optionsSelector = options.selector || '[data-layzr]'; this._optionsAttr = options.attr || 'data-layzr'; this._optionsAttrSrcSet = options.attrSrcSet || 'data-layzr-srcset'; this._optionsAttrRetina = options.retinaAttr || 'data-layzr-retina'; this._optionsAttrBg = options.bgAttr || 'data-layzr-bg'; this._optionsAttrHidden = options.hiddenAttr || 'data-layzr-hidden'; this._optionsThreshold = options.threshold || 0; this._optionsBefore = options.before || null; this._optionsAfter = options.after || null; this._optionsCallback = options.callback || null; // properties this._retina = window.devicePixelRatio > 1; this._srcAttr = this._retina ? this._optionsAttrRetina : this._optionsAttr; // nodelist this._nodes = document.querySelectorAll(this._optionsSelector); // scroll and resize handler this._handlerBind = this._requestScroll.bind(this); // call to create this._create(); } // DEBOUNCE HELPERS // adapted from: http://www.html5rocks.com/en/tutorials/speed/animations/ Layzr.prototype._requestScroll = function() { if(this._optionsContainer === window) { this._lastScroll = window.pageYOffset; } else { this._lastScroll = this._optionsContainer.scrollTop + this._getOffset(this._optionsContainer); } this._requestTick(); }; Layzr.prototype._requestTick = function() { if(!this._ticking) { requestAnimationFrame(this.update.bind(this)); this._ticking = true; } }; // OFFSET HELPER // remember, getBoundingClientRect is relative to the viewport Layzr.prototype._getOffset = function(node) { if(node.hasAttribute("data-src")) { var extAttr = node.getAttribute("data-src"); var ext = extAttr.substring(extAttr.lastIndexOf(".")+1); } if(ext == "png"){ node.parentNode.classList.add("layzr-bg-transparent"); }; return node.getBoundingClientRect().top + window.pageYOffset; }; // HEIGHT HELPER Layzr.prototype._getContainerHeight = function() { return this._optionsContainer.innerHeight || this._optionsContainer.offsetHeight; } // LAYZR METHODS Layzr.prototype._create = function() { // fire scroll event once this._handlerBind(); // bind scroll and resize event this._optionsContainer.addEventListener('scroll', this._handlerBind, false); this._optionsContainer.addEventListener('resize', this._handlerBind, false); }; Layzr.prototype._destroy = function() { // unbind scroll and resize event this._optionsContainer.removeEventListener('scroll', this._handlerBind, false); this._optionsContainer.removeEventListener('resize', this._handlerBind, false); }; Layzr.prototype._inViewport = function(node) { // get viewport top and bottom offset var viewportTop = this._lastScroll; var viewportBottom = viewportTop + this._getContainerHeight(); // get node top and bottom offset var nodeTop = this._getOffset(node); var nodeBottom = nodeTop + this._getContainerHeight(); // calculate threshold, convert percentage to pixel value var threshold = (this._optionsThreshold / 100) * window.innerHeight; // return if node in viewport return nodeBottom >= viewportTop - threshold && nodeTop <= viewportBottom + threshold && !node.hasAttribute(this._optionsAttrHidden); //console.log(this, node + "viewport") }; Layzr.prototype.inView = function(node){ //Window Object var win = window; //Object to Check obj = this; //the top Scroll Position in the page var scrollPosition = dtGlobals.winScrollTop; var threshold = (this._optionsThreshold / 100) * window.innerHeight; //the end of the visible area in the page, starting from the scroll position var visibleArea = dtGlobals.winScrollTop + win.innerHeight; //the end of the object to check var objEndPos = (this._getOffset(node) + threshold); return(visibleArea >= objEndPos && scrollPosition <= objEndPos ? true : false); }; Layzr.prototype._reveal = function(node) { // get node source var source = node.getAttribute(this._srcAttr) || node.getAttribute(this._optionsAttr), lazyrObj = this; // console.log( lazyrObj) // call the callback if(typeof this._optionsCallback === 'function') { var runCallback; // "this" will be the node in the callback if(node.addEventListener) { node.addEventListener("load",function() { lazyrObj._optionsCallback.call(node); //runCallback = true; }); // if(!runCallback){ // if(node.complete){ // lazyrObj._optionsCallback.call(node); // console.log(node) // runCallback = false; // } // } }else { node.attachEvent("onload", function() { lazyrObj._optionsCallback.call(node); }); } // node.addEventListener("load", function() { // lazyrObj._optionsCallback.call(node); // console.log(node) // }); } // before hook if(typeof this._optionsBefore === 'function') { // "this" will be the node in the callback this._optionsBefore.call(node); } // set node src or bg image if(node.hasAttribute(this._optionsAttrBg)) { node.style.backgroundImage = 'url(' + source + ')'; //console.log(source) } else { if (source) node.setAttribute('src', source); if (node.hasAttribute(this._optionsAttrSrcSet)) node.setAttribute('srcset', node.getAttribute(this._optionsAttrSrcSet)); //console.log(source) } // after hook if(typeof this._optionsAfter === 'function') { // "this" will be the node in the callback this._optionsAfter.call(node); } // remove node data attributes node.removeAttribute(this._optionsAttr); node.removeAttribute(this._optionsAttrSrcSet); node.removeAttribute(this._optionsAttrRetina); node.removeAttribute(this._optionsAttrBg); node.removeAttribute(this._optionsAttrHidden); }; Layzr.prototype.updateSelector = function() { // update cached list of nodes matching selector this._nodes = document.querySelectorAll(this._optionsSelector); }; Layzr.prototype.update = function() { // cache nodelist length var nodesLength = this._nodes.length; // loop through nodes for(var i = 0; i < nodesLength; i++) { // cache node var node = this._nodes[i]; // check if node has mandatory attribute if(node.hasAttribute(this._optionsAttr) || node.hasAttribute(this._optionsAttrSrcSet) || node.hasAttribute(this._optionsAttrRetina)) { // check if node in viewport if(this._inViewport(node)) { // reveal node this._reveal(node); //console.log(node) } } } // allow for more animation frames this._ticking = false; }; /* Lazy loading: end */
[+]
..
[-] layzr.js
[edit]
[-] mfp.js
[edit]
[-] easing.js
[edit]
[-] parallax.js
[edit]
[-] custom-select.js
[edit]
[-] custom-scrollbar.js
[edit]
[+]
validator
[-] isotope.js
[edit]
[-] before-after.js
[edit]
[-] velocity.min.js
[edit]
[-] jquery.filterade.js
[edit]
[-] .htaccess
[edit]
[-] owl.carousel.js
[edit]
[-] waves.js
[edit]
[-] tooltip.js
[edit]
[-] ripple.js
[edit]
[-] jquery.mousewheel.min.js
[edit]