90 lines
2.3 KiB
JavaScript
90 lines
2.3 KiB
JavaScript
/* global objectFitImages */
|
|
;(function () {
|
|
function createObserver (handler) {
|
|
return new IntersectionObserver(function (entries) {
|
|
for (var i = 0; i < entries.length; i++) {
|
|
handler(entries[i])
|
|
}
|
|
}, {
|
|
rootMargin: '0px',
|
|
threshold: 0.1
|
|
})
|
|
}
|
|
|
|
Flatsome.behavior('lazy-load-images', {
|
|
attach: function (context) {
|
|
var observer = createObserver(function (entry) {
|
|
if (entry.intersectionRatio > 0) {
|
|
observer.unobserve(entry.target)
|
|
|
|
var $el = jQuery(entry.target)
|
|
var src = $el.data('src')
|
|
var srcset = $el.data('srcset')
|
|
|
|
if ($el.hasClass('lazy-load-active')) return
|
|
else $el.addClass('lazy-load-active')
|
|
|
|
if (src) $el.attr('src', src)
|
|
if (srcset) $el.attr('srcset', srcset)
|
|
|
|
$el.imagesLoaded(function () {
|
|
$el.removeClass('lazy-load')
|
|
if (typeof objectFitImages !== 'undefined') {
|
|
objectFitImages($el)
|
|
}
|
|
})
|
|
}
|
|
})
|
|
|
|
jQuery('.lazy-load', context).each(function (i, el) {
|
|
observer.observe(el)
|
|
})
|
|
}
|
|
})
|
|
|
|
Flatsome.behavior('lazy-load-sliders', {
|
|
attach: function (context) {
|
|
var observer = createObserver(function (entry) {
|
|
if (entry.intersectionRatio > 0) {
|
|
observer.unobserve(entry.target)
|
|
|
|
var $el = jQuery(entry.target)
|
|
|
|
if ($el.hasClass('slider-lazy-load-active')) return
|
|
else $el.addClass('slider-lazy-load-active')
|
|
|
|
$el.imagesLoaded(function () {
|
|
if ($el.hasClass('flickity-enabled')) {
|
|
$el.flickity('resize')
|
|
}
|
|
})
|
|
}
|
|
})
|
|
|
|
jQuery('.slider', context).each(function (i, el) {
|
|
observer.observe(el)
|
|
})
|
|
}
|
|
})
|
|
|
|
Flatsome.behavior('lazy-load-packery', {
|
|
attach: function (context) {
|
|
var observer = createObserver(function (entry) {
|
|
if (entry.intersectionRatio > 0) {
|
|
observer.unobserve(entry.target)
|
|
|
|
var $el = jQuery(entry.target)
|
|
|
|
$el.imagesLoaded(function () {
|
|
jQuery('.has-packery').packery('layout') // why global selector?
|
|
})
|
|
}
|
|
})
|
|
|
|
jQuery('.has-packery .lazy-load', context).each(function (i, el) {
|
|
observer.observe(el)
|
|
})
|
|
}
|
|
})
|
|
})()
|