border-radius: 30px;
box-shadow: 0 0 10px 1px #080808;
“The fastest and best-optimized resource is a resource not sent.”
Ilya Grigorik
img {
max-width: 100%;
height: auto;
}
This image's size is defined by CSS
let lazyImageObserver = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
let loadImage = entry.target;
loadImage.src = image.dataset.src;
lazyImageObserver.unobserve(loadImage);
}
})
})
lazyImageObserver.observe(element);
let lazyImageObserver = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
let loadImage = entry.target;
loadImage.src = image.dataset.src;
lazyImageObserver.unobserve(loadImage);
}
})
})
let lazyImageObserver = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
let loadImage = entry.target;
loadImage.src = image.dataset.src;
lazyImageObserver.unobserve(loadImage);
}
})
})
let lazyImageObserver = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
let loadImage = entry.target;
loadImage.src = image.dataset.src;
lazyImageObserver.unobserve(loadImage);
}
})
})
let lazyImageObserver = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
let loadImage = entry.target;
loadImage.src = image.dataset.src;
lazyImageObserver.unobserve(loadImage);
}
})
})
let lazyImageObserver = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
let loadImage = entry.target;
loadImage.src = image.dataset.src;
lazyImageObserver.unobserve(loadImage);
}
})
})
if ("IntersectionObserver" in window) {
let lazyImageObserver ...
} else {
// Fallback
}
https://afarkas.github.io/lazysizes/index.html
.iconColor {
fill: yellow;
}
.iconColor {
fill: transparent;
stroke: yellow;
stroke-width: 5px;
}