diff --git a/Packages/chrosey_materialize/js/site.js b/Packages/chrosey_materialize/js/site.js
index 216747b..94b175e 100644
--- a/Packages/chrosey_materialize/js/site.js
+++ b/Packages/chrosey_materialize/js/site.js
@@ -1 +1,37 @@
-M.AutoInit();
\ No newline at end of file
+M.AutoInit();
+
+// Set up an intersection observer with some options
+var observer = new IntersectionObserver(lazyLoad, {
+
+ // where in relation to the edge of the viewport, we are observing
+ rootMargin: "100px",
+
+ // how much of the element needs to have intersected
+ // in order to fire our loading function
+ threshold: 1.0
+
+});
+
+function lazyLoad(elements) {
+ elements.forEach(image => {
+ if (image.intersectionRatio > 0) {
+
+ // set the src attribute to trigger a load
+ image.src = image.dataset.src;
+
+ // stop observing this element. Our work here is done!
+ observer.unobserve(item.target);
+ };
+ });
+};
+
+// If the browser supports lazy loading, we can safely assign the src
+// attributes without instantly triggering an eager image load.
+if ("loading" in HTMLImageElement.prototype) {
+ const lazyImages = document.querySelectorAll("img.lazy");
+ lazyImages.forEach(img => {
+ img.src = img.dataset.src;
+ });
+} else {
+ // Use our own lazyLoading with Intersection Observers and all that jazz
+}
\ No newline at end of file
diff --git a/Packages/chrosey_materialize/partials/images.twig b/Packages/chrosey_materialize/partials/images.twig
index 58e245b..961c201 100644
--- a/Packages/chrosey_materialize/partials/images.twig
+++ b/Packages/chrosey_materialize/partials/images.twig
@@ -5,15 +5,18 @@
{% for image in images %}
-
{% endfor %}
{% else %}
-
{% endif %}
diff --git a/Packages/chrosey_materialize/templates/blog.twig b/Packages/chrosey_materialize/templates/blog.twig
index 6313451..44ef36c 100644
--- a/Packages/chrosey_materialize/templates/blog.twig
+++ b/Packages/chrosey_materialize/templates/blog.twig
@@ -9,8 +9,10 @@