Отложенная загрузка изображений при горизонтальном скролле
Всем привет! Вопрос про отложенную загрузку изображений. Использую код
$(document).ready(function() {
var lazyloadImages;
lazyloadImages = document.querySelectorAll(".lazyload");
var imageObserver = new IntersectionObserver(function(entries, observer) {
console.log(observer);
entries.forEach(function(entry) {
if (entry.isIntersecting) {
var image = entry.target;
image.src = image.dataset.src;
image.classList.remove("lazyload");
imageObserver.unobserve(image);
}
});
});
lazyloadImages.forEach(function(image) {
imageObserver.observe(image);
});
})
<style>
.picture {
overflow-x: scroll;
}
</style>
<div class="picture"> <img class="lazyload" data-src="1.jpg" src="1.jpg"> <img class="lazyload" data-src="2.jpg" src="2.jpg"> </div> - это загрузка изображений при вертикальном скролле. Но вопрос как реализовать отложенную загрузку при ГОРИЗОНТАЛЬНОМ скролле в <div class="picture"> Подскажите, пожалуйста, как реализовать. |
<style>
.picture {
overflow-x: scroll;
border: 1px solid red;
width: 200px;
}
.wrap {
width: 600px;
}
.picture img {
width: 200px;
}
</style>
</head>
<body>
<div class="picture">
<div class="wrap">
<img data-src="1.jpg"><img data-src="2.jpg"><img data-src="3.jpg">
</div>
</div>
<script>
var picture = document.querySelector('.picture'),
img = document.querySelectorAll('.picture img');
function visible() {
img.forEach(el => {
if (!el.src && el.getBoundingClientRect().left - picture.offsetWidth < 0) el.src = el.dataset.src;
});
}
visible();
picture.onscroll = visible;
</script>
вот самый простой способ |
Спасибо! Помогло
|
| Часовой пояс GMT +3, время: 14:27. |