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

250 lines
8.7 KiB
HTML

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8" />
<title>Conditional native lazy loading - Lazyload demos</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style>
ul,
li {
list-style-type: none;
margin: 0;
padding: 0;
}
a,
img {
display: block;
}
img {
border: 0;
width: 220px;
height: 280px;
}
img:not([src]) {
visibility: hidden;
}
.warning {
padding: 1em;
color: black;
background: lightyellow;
border-radius: 1em;
border: 1px solid gray;
}
/* Fixes Firefox anomaly during image load */
@-moz-document url-prefix() {
img:-moz-loading {
visibility: hidden;
}
}
</style>
</head>
<body>
<h1>Conditional native lazy loading demo</h1>
<h2>Images</h2>
<div id="results1" class="results">
<ul>
<li>
<a href="#/it/donna/stivaletti_cod44721746jj.html"
><img
alt="Stivaletti"
loading="eager"
src="https://images.unsplash.com/photo-1555923637-8e28485258ca?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=440&h=560&fit=crop&ixid=eyJhcHBfaWQiOjF9"
width="220"
height="280"
/></a>
</li>
<li>
<a href="#/it/donna/open-toe_cod44740806jx.html"
><img
alt="Open toe"
loading="eager"
src="https://images.unsplash.com/photo-1543286386-2e659306cd6c?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=440&h=560&fit=crop&ixid=eyJhcHBfaWQiOjF9"
width="220"
height="280"
/></a>
</li>
<li>
<a href="#/it/donna/sneakers-tennis-shoes-basse_cod44735977gr.html"
><img
alt="Sneakers &amp; Tennis"
class="lazy"
data-src="https://images.unsplash.com/photo-1554080450-0cf441c6eb68?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=440&h=560&fit=crop&ixid=eyJhcHBfaWQiOjF9"
width="220"
height="280"
/></a>
</li>
<li>
<a href="#/it/donna/sneakers-tennis-shoes-basse_cod44738717am.html"
><img
alt="Sneakers &amp; Tennis shoes basse"
class="lazy"
data-src="https://images.unsplash.com/photo-1554194666-dd5e2510e694?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=440&h=560&fit=crop&ixid=eyJhcHBfaWQiOjF9"
width="220"
height="280"
/></a>
</li>
<li>
<a href="#/it/donna/sneakers-tennis-shoes-alte_cod44739940cb.html"
><img
alt="Sneakers &amp; Tennis shoes alte"
class="lazy"
data-src="https://images.unsplash.com/photo-1555464735-4706a5ef4bf6?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=440&h=560&fit=crop&ixid=eyJhcHBfaWQiOjF9"
width="220"
height="280"
/></a>
</li>
<li>
<a href="#/it/donna/sneakers-tennis-shoes-alte_cod44740860xg.html"
><img
alt="Sneakers &amp; Tennis shoes alte"
class="lazy"
data-src="https://images.unsplash.com/photo-1556068791-9e3a08d59470?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=440&h=560&fit=crop&ixid=eyJhcHBfaWQiOjF9"
width="220"
height="280"
/></a>
</li>
<li>
<a href="#/it/donna/sneakers-tennis-shoes-basse_cod44738719vn.html"
><img
alt="Sneakers &amp; Tennis shoes basse"
class="lazy"
data-src="https://images.unsplash.com/photo-1554089672-043830ebaed9?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=440&h=560&fit=crop&ixid=eyJhcHBfaWQiOjF9"
width="220"
height="280"
/></a>
</li>
</ul>
</div>
<h2>Iframes</h2>
<iframe class="lazy" data-src="iframes/i01.html" frameborder="0"></iframe>
<iframe class="lazy" data-src="iframes/i02.html" frameborder="0"></iframe>
<iframe class="lazy" data-src="iframes/i03.html" frameborder="0"></iframe>
<h2>Preload = none</h2>
<video
class="lazy"
controls
preload="none"
width="620"
data-src="https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4"
data-poster="https://peach.blender.org/wp-content/uploads/title_anouncement.jpg?x11217"
>
<source
type="video/mp4"
data-src="https://archive.org/download/ElephantsDream/ed_1024_512kb.mp4"
/>
<source type="video/ogg" data-src="https://archive.org/download/ElephantsDream/ed_hd.ogv" />
<source type="video/avi" data-src="https://archive.org/download/ElephantsDream/ed_hd.avi" />
</video>
<h2>Preload = metadata</h2>
<video
class="lazy"
preload="metadata"
controls
width="620"
data-src="https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4"
data-poster="https://peach.blender.org/wp-content/uploads/title_anouncement.jpg?x11217"
>
<source
type="video/mp4"
data-src="https://archive.org/download/ElephantsDream/ed_1024_512kb.mp4"
/>
<source type="video/ogg" data-src="https://archive.org/download/ElephantsDream/ed_hd.ogv" />
<source type="video/avi" data-src="https://archive.org/download/ElephantsDream/ed_hd.avi" />
</video>
<script src="../dist/lazyload.min.js"></script>
<script>
(function () {
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://source.unsplash.com/random/440x560/?text=Error+Placeholder";
};
var callback_finish = function () {
logElementEvent("✔️ FINISHED", document.documentElement);
};
var callback_cancel = function (element) {
logElementEvent("🔥 CANCEL", element);
};
function supportsNativeLazyVideo() {
return "loading" in HTMLVideoElement.prototype;
}
// Single instance using native lazy loading on images, videos and iframes
function createSingleInstance() {
var lazyAll = new LazyLoad({
use_native: true,
// NOTICE: they won't be called since the loading will be native
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
});
}
// Double instance using native lazy loading on images and iframes,
// and JS driven lazy loading on videos
function createDoubleInstance() {
var lazyImgsIframes = new LazyLoad({
elements_selector: "img.lazy, iframe.lazy",
use_native: true,
// Assign the callbacks defined above
// NOTICE: they won't all called since the loading will be native
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 lazyVideos = new LazyLoad({
elements_selector: "video.lazy",
// 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
});
}
if (supportsNativeLazyVideo()) {
createSingleInstance();
} else {
createDoubleInstance();
}
})();
</script>
</body>
</html>