web-assets/lazyload/v17/demos/load.html
2023-12-30 22:34:25 +01:00

416 lines
15 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Static load method - LazyLoad demos</title>
<style>
html {
box-sizing: border-box;
}
*,
*::before,
*::after {
box-sizing: inherit;
}
html {
background: grey;
}
body {
max-width: 1280px;
margin: 0 auto;
background: white;
}
.products {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
}
.product {
display: block;
position: relative;
text-align: center;
text-decoration: none;
width: 305px;
}
.product img {
display: block;
width: 305px;
height: 360px;
}
.product:hover .product-image__b.loaded {
opacity: 1;
}
.product-image__a {
margin: 0 auto;
}
.product-image__b {
opacity: 0;
transition: opacity 0.5s;
position: absolute;
top: 0;
left: calc(50% - 305px / 2);
}
img:not([src]) {
visibility: hidden;
}
</style>
</head>
<body>
<h1>Static load method demo</h1>
<div class="products">
<!-- Eagerly loading 8 -->
<a href="#" class="product">
<img
alt="01a"
class="product-image__a"
src="https://via.placeholder.com/305x360/7FD1B9/333333?text=01a"
srcset="
https://via.placeholder.com/305x360/7FD1B9/333333?text=01a 1x,
https://via.placeholder.com/610x720/7FD1B9/333333?text=01a 2x
"
/>
<img
alt="01b"
class="lazy-hover product-image__b"
data-src="https://via.placeholder.com/305x360/E56399/ffffff?text=01b"
data-srcset="https://via.placeholder.com/305x360/E56399/ffffff?text=01b 1x, https://via.placeholder.com/610x720/E56399/ffffff?text=01b 2x"
/>
<p>Product 01</p>
</a>
<a href="#" class="product">
<img
alt="02a"
class="product-image__a"
src="https://via.placeholder.com/305x360/7FD1B9/333333?text=02a"
srcset="
https://via.placeholder.com/305x360/7FD1B9/333333?text=02a 1x,
https://via.placeholder.com/610x720/7FD1B9/333333?text=02a 2x
"
/>
<img
alt="02b"
class="lazy-hover product-image__b"
data-src="https://via.placeholder.com/305x360/E56399/ffffff?text=02b"
data-srcset="https://via.placeholder.com/305x360/E56399/ffffff?text=02b 1x, https://via.placeholder.com/610x720/E56399/ffffff?text=02b 2x"
/>
<p>Product 02</p>
</a>
<a href="#" class="product">
<img
alt="03a"
class="product-image__a"
src="https://via.placeholder.com/305x360/7FD1B9/333333?text=03a"
srcset="
https://via.placeholder.com/305x360/7FD1B9/333333?text=03a 1x,
https://via.placeholder.com/610x720/7FD1B9/333333?text=03a 2x
"
/>
<img
alt="03b"
class="lazy-hover product-image__b"
data-src="https://via.placeholder.com/305x360/E56399/ffffff?text=03b"
data-srcset="https://via.placeholder.com/305x360/E56399/ffffff?text=03b 1x, https://via.placeholder.com/610x720/E56399/ffffff?text=03b 2x"
/>
<p>Product 03</p>
</a>
<a href="#" class="product">
<img
alt="04a"
class="product-image__a"
src="https://via.placeholder.com/305x360/7FD1B9/333333?text=04a"
srcset="
https://via.placeholder.com/305x360/7FD1B9/333333?text=04a 1x,
https://via.placeholder.com/610x720/7FD1B9/333333?text=04a 2x
"
/>
<img
alt="04b"
class="lazy-hover product-image__b"
data-src="https://via.placeholder.com/305x360/E56399/ffffff?text=04b"
data-srcset="https://via.placeholder.com/305x360/E56399/ffffff?text=04b 1x, https://via.placeholder.com/610x720/E56399/ffffff?text=04b 2x"
/>
<p>Product 04</p>
</a>
<a href="#" class="product">
<img
alt="05a"
class="product-image__a"
src="https://via.placeholder.com/305x360/7FD1B9/333333?text=05a"
srcset="
https://via.placeholder.com/305x360/7FD1B9/333333?text=05a 1x,
https://via.placeholder.com/610x720/7FD1B9/333333?text=05a 2x
"
/>
<img
alt="05b"
class="lazy-hover product-image__b"
data-src="https://via.placeholder.com/305x360/E56399/ffffff?text=05b"
data-srcset="https://via.placeholder.com/305x360/E56399/ffffff?text=05b 1x, https://via.placeholder.com/610x720/E56399/ffffff?text=05b 2x"
/>
<p>Product 05</p>
</a>
<a href="#" class="product">
<img
alt="06a"
class="product-image__a"
src="https://via.placeholder.com/305x360/7FD1B9/333333?text=06a"
srcset="
https://via.placeholder.com/305x360/7FD1B9/333333?text=06a 1x,
https://via.placeholder.com/610x720/7FD1B9/333333?text=06a 2x
"
/>
<img
alt="06b"
class="lazy-hover product-image__b"
data-src="https://via.placeholder.com/305x360/E56399/ffffff?text=06b"
data-srcset="https://via.placeholder.com/305x360/E56399/ffffff?text=06b 1x, https://via.placeholder.com/610x720/E56399/ffffff?text=06b 2x"
/>
<p>Product 06</p>
</a>
<a href="#" class="product">
<img
alt="07a"
class="product-image__a"
src="https://via.placeholder.com/305x360/7FD1B9/333333?text=07a"
srcset="
https://via.placeholder.com/305x360/7FD1B9/333333?text=07a 1x,
https://via.placeholder.com/610x720/7FD1B9/333333?text=07a 2x
"
/>
<img
alt="07b"
class="lazy-hover product-image__b"
data-src="https://via.placeholder.com/305x360/E56399/ffffff?text=07b"
data-srcset="https://via.placeholder.com/305x360/E56399/ffffff?text=07b 1x, https://via.placeholder.com/610x720/E56399/ffffff?text=07b 2x"
/>
<p>Product 07</p>
</a>
<a href="#" class="product">
<img
alt="08a"
class="product-image__a"
src="https://via.placeholder.com/305x360/7FD1B9/333333?text=08a"
srcset="
https://via.placeholder.com/305x360/7FD1B9/333333?text=08a 1x,
https://via.placeholder.com/610x720/7FD1B9/333333?text=08a 2x
"
/>
<img
alt="08b"
class="lazy-hover product-image__b"
data-src="https://via.placeholder.com/305x360/E56399/ffffff?text=08b"
data-srcset="https://via.placeholder.com/305x360/E56399/ffffff?text=08b 1x, https://via.placeholder.com/610x720/E56399/ffffff?text=08b 2x"
/>
<p>Product 08</p>
</a>
<!-- 8 more! -->
<a href="#" class="product">
<img
alt="09a"
class="lazy product-image__a"
data-src="https://via.placeholder.com/305x360/7FD1B9/333333?text=09a"
data-srcset="https://via.placeholder.com/305x360/7FD1B9/333333?text=09a 1x, https://via.placeholder.com/610x720/7FD1B9/333333?text=09a 2x"
/>
<img
alt="09b"
class="lazy-hover product-image__b"
data-src="https://via.placeholder.com/305x360/E56399/ffffff?text=09b"
data-srcset="https://via.placeholder.com/305x360/E56399/ffffff?text=09b 1x, https://via.placeholder.com/610x720/E56399/ffffff?text=09b 2x"
/>
<p>Product 09</p>
</a>
<a href="#" class="product">
<img
alt="10a"
class="lazy product-image__a"
data-src="https://via.placeholder.com/305x360/7FD1B9/333333?text=10a"
data-srcset="https://via.placeholder.com/305x360/7FD1B9/333333?text=10a 1x, https://via.placeholder.com/610x720/7FD1B9/333333?text=10a 2x"
/>
<img
alt="10b"
class="lazy-hover product-image__b"
data-src="https://via.placeholder.com/305x360/E56399/ffffff?text=10b"
data-srcset="https://via.placeholder.com/305x360/E56399/ffffff?text=10b 1x, https://via.placeholder.com/610x720/E56399/ffffff?text=10b 2x"
/>
<p>Product 10</p>
</a>
<a href="#" class="product">
<img
alt="11a"
class="lazy product-image__a"
data-src="https://via.placeholder.com/305x360/7FD1B9/333333?text=11a"
data-srcset="https://via.placeholder.com/305x360/7FD1B9/333333?text=11a 1x, https://via.placeholder.com/610x720/7FD1B9/333333?text=11a 2x"
/>
<img
alt="11b"
class="lazy-hover product-image__b"
data-src="https://via.placeholder.com/305x360/E56399/ffffff?text=11b"
data-srcset="https://via.placeholder.com/305x360/E56399/ffffff?text=11b 1x, https://via.placeholder.com/610x720/E56399/ffffff?text=11b 2x"
/>
<p>Product 11</p>
</a>
<a href="#" class="product">
<img
alt="12a"
class="lazy product-image__a"
data-src="https://via.placeholder.com/305x360/7FD1B9/333333?text=12a"
data-srcset="https://via.placeholder.com/305x360/7FD1B9/333333?text=12a 1x, https://via.placeholder.com/610x720/7FD1B9/333333?text=12a 2x"
/>
<img
alt="12b"
class="lazy-hover product-image__b"
data-src="https://via.placeholder.com/305x360/E56399/ffffff?text=12b"
data-srcset="https://via.placeholder.com/305x360/E56399/ffffff?text=12b 1x, https://via.placeholder.com/610x720/E56399/ffffff?text=12b 2x"
/>
<p>Product 12</p>
</a>
<a href="#" class="product">
<img
alt="13a"
class="lazy product-image__a"
data-src="https://via.placeholder.com/305x360/7FD1B9/333333?text=13a"
data-srcset="https://via.placeholder.com/305x360/7FD1B9/333333?text=13a 1x, https://via.placeholder.com/610x720/7FD1B9/333333?text=13a 2x"
/>
<img
alt="13b"
class="lazy-hover product-image__b"
data-src="https://via.placeholder.com/305x360/E56399/ffffff?text=13b"
data-srcset="https://via.placeholder.com/305x360/E56399/ffffff?text=13b 1x, https://via.placeholder.com/610x720/E56399/ffffff?text=13b 2x"
/>
<p>Product 13</p>
</a>
<a href="#" class="product">
<img
alt="14a"
class="lazy product-image__a"
data-src="https://via.placeholder.com/305x360/7FD1B9/333333?text=14a"
data-srcset="https://via.placeholder.com/305x360/7FD1B9/333333?text=14a 1x, https://via.placeholder.com/610x720/7FD1B9/333333?text=14a 2x"
/>
<img
alt="14b"
class="lazy-hover product-image__b"
data-src="https://via.placeholder.com/305x360/E56399/ffffff?text=14b"
data-srcset="https://via.placeholder.com/305x360/E56399/ffffff?text=14b 1x, https://via.placeholder.com/610x720/E56399/ffffff?text=14b 2x"
/>
<p>Product 14</p>
</a>
<a href="#" class="product">
<img
alt="15a"
class="lazy product-image__a"
data-src="https://via.placeholder.com/305x360/7FD1B9/333333?text=15a"
data-srcset="https://via.placeholder.com/305x360/7FD1B9/333333?text=15a 1x, https://via.placeholder.com/610x720/7FD1B9/333333?text=15a 2x"
/>
<img
alt="15b"
class="lazy-hover product-image__b"
data-src="https://via.placeholder.com/305x360/E56399/ffffff?text=15b"
data-srcset="https://via.placeholder.com/305x360/E56399/ffffff?text=15b 1x, https://via.placeholder.com/610x720/E56399/ffffff?text=15b 2x"
/>
<p>Product 15</p>
</a>
<a href="#" class="product">
<img
alt="16a"
class="lazy product-image__a"
data-src="https://via.placeholder.com/305x360/7FD1B9/333333?text=16a"
data-srcset="https://via.placeholder.com/305x360/7FD1B9/333333?text=16a 1x, https://via.placeholder.com/610x720/7FD1B9/333333?text=16a 2x"
/>
<img
alt="16b"
class="lazy-hover product-image__b"
data-src="https://via.placeholder.com/305x360/E56399/ffffff?text=16b"
data-srcset="https://via.placeholder.com/305x360/E56399/ffffff?text=16b 1x, https://via.placeholder.com/610x720/E56399/ffffff?text=16b 2x"
/>
<p>Product 16</p>
</a>
</div>
</body>
<script src="../dist/lazyload.min.js"></script>
<script>
(function (w, d) {
function logElementEvent(eventName, element) {
console.log(Date.now(), eventName, element.getAttribute("data-src"));
}
var callback_enter = function (element) {
logElementEvent("🔑 ENTERED", element);
};
var callback_exit = function (element) {
logElementEvent("🚪 EXITED", element);
};
var callback_loading = function (element) {
logElementEvent("⌚ LOADING", element);
};
var callback_loaded = function (element) {
logElementEvent("👍 LOADED", element);
};
var callback_error = function (element) {
logElementEvent("💀 ERROR", element);
element.src =
"https://via.placeholder.com/440x560/?text=Error+Placeholder";
};
var callback_finish = function () {
logElementEvent("✔️ FINISHED", document.documentElement);
};
var callback_cancel = function (element) {
logElementEvent("🔥 CANCEL", element);
};
var options = {
// Assign the callbacks defined above
callback_enter: callback_enter,
callback_exit: callback_exit,
callback_cancel: callback_cancel,
callback_loading: callback_loading,
callback_loaded: callback_loaded,
callback_error: callback_error,
callback_finish: callback_finish
};
var page_ll = new LazyLoad(options);
function mouseoverHandler(event) {
var product = event.currentTarget;
var lazyImg = product.querySelector(".lazy-hover");
if (!!lazyImg.getAttribute("data-ll-status")) {
return;
}
// page_ll.load(lazyImg); STILL WORKS, BUT DEPRECATED
LazyLoad.load(lazyImg, options);
}
function nodeSetToArray(nodeSet) {
return Array.prototype.slice.call(nodeSet);
}
function initializeMouseBehaviour() {
const products = document.querySelectorAll(".product");
nodeSetToArray(products).forEach(function (product) {
product.addEventListener("mouseover", mouseoverHandler, true);
});
}
initializeMouseBehaviour();
})(window, document);
</script>
</html>