Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.01.2019, 14:39
Интересующийся
Отправить личное сообщение для Андрей812 Посмотреть профиль Найти все сообщения от Андрей812
 
Регистрация: 10.09.2018
Сообщений: 27

Отложенная загрузка изображений при горизонтальном скролле
Всем привет! Вопрос про отложенную загрузку изображений. Использую код
$(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">

Подскажите, пожалуйста, как реализовать.

Последний раз редактировалось Андрей812, 25.01.2019 в 14:41.
Ответить с цитированием
  #2 (permalink)  
Старый 25.01.2019, 17:48
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<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>


вот самый простой способ

Последний раз редактировалось j0hnik, 25.01.2019 в 17:56.
Ответить с цитированием
  #3 (permalink)  
Старый 28.01.2019, 14:54
Интересующийся
Отправить личное сообщение для Андрей812 Посмотреть профиль Найти все сообщения от Андрей812
 
Регистрация: 10.09.2018
Сообщений: 27

Спасибо! Помогло
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в html форме вместе с файлом передать переменную kupidon Общие вопросы Javascript 7 22.01.2018 14:55
hide navbar отступ сверху,как его прятать при скролле полностью а не на его Height? dadubinin jQuery 6 26.02.2016 01:23
замена изображений в jquery при наведении zlokiz jQuery 0 05.08.2010 22:17
JQuery + Ajax = загрузка изображений jokerbot jQuery 0 06.12.2009 15:10
проблема со сменой изображений при наведение Jack Элементы интерфейса 0 19.03.2009 22:13