Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 06.06.2017, 15:14
Интересующийся
Отправить личное сообщение для Kyjek Посмотреть профиль Найти все сообщения от Kyjek
 
Регистрация: 06.06.2017
Сообщений: 13

https://jsfiddle.net/Kyjek/ut4xmk56/5/

изменил на огромное фото http://luxfon.com/images/201505/luxfon.com_35100.jpg
оно очень долго рисуется.

Собсвенное весь код перед глазами. но что он делает я сходу не пойму ))

Последний раз редактировалось Kyjek, 06.06.2017 в 15:17.
Ответить с цитированием
  #12 (permalink)  
Старый 06.06.2017, 15:55
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,661

Kyjek, я тоже не пойму что тебе надо, и у меня нет желания тратить траффик на твои огромные картинки, и угадывать что тебе там привиделось, я пас.
Ответить с цитированием
  #13 (permalink)  
Старый 06.06.2017, 16:03
Интересующийся
Отправить личное сообщение для Kyjek Посмотреть профиль Найти все сообщения от Kyjek
 
Регистрация: 06.06.2017
Сообщений: 13

Чего же тут не понять. Картинка в примере https://jsfiddle.net/Kyjek/ut4xmk56/5/
отображается сразу полностью. от верха до низа. не полосками (по полсочке). Мне надо понять как. Код есть но сложный. Совственно это все.

трафик в 2017 году. сейчас даже на мобильном безлимитный. Покрайнемере у меня
Ответить с цитированием
  #14 (permalink)  
Старый 06.06.2017, 18:31
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,661

Kyjek, трафик картинок пишется в кэш, и твои бесполезные огромные картинки могут затереть там массу полезной информации, с полезным кэшом полезные ресурсы грузятся мгновенно и можно работать в оффлайн режиме, например можно нагрузить весь канал передачи данных или отключиться от сети, и без проблемно продолжить серфинг по ранее посещенным страницам, не все в интернете только видосики и картинки смотрят) некоторые еще и читают, 2017 год, а ты всё проспал))

Последний раз редактировалось Rise, 06.06.2017 в 18:48.
Ответить с цитированием
  #15 (permalink)  
Старый 07.06.2017, 10:39
Интересующийся
Отправить личное сообщение для Kyjek Посмотреть профиль Найти все сообщения от Kyjek
 
Регистрация: 06.06.2017
Сообщений: 13

Проанализировал код lazy плагина и выделил часть отвечающую за прорисовку.
Реализованно хитро и совсем не гибко.
<img id="img1" data-original="img/2.jpg"   src="img/loader.gif"  >

Есть картинка с изначальной img/loader.gif и пока img/2.jpg не загрузится и не прорисуется она не сменит img/loader.gif.
$(document).ready(function () {
          var $self = $('#img1');
          $self.one("appear", function () {
              var original = $self.data('original');
              $("<img />")
                  .bind("load", function () {
                      $self.attr("src", original);
                     
                  })
                  .attr("src", original);
          }).trigger("appear");
      });

Надо заметить что работает так как мне нужно, но я не могу отловить момент когда происходит смена картинки.
Я бы хотел добавить стиль к загруженной картинке. (например width:100%
Но так не получается стиль применяется раньше и раздувает img/loader.gif.
Подскажите как отловить событие смены картинок и если можно немного пояснните как загружается изображение.
Ответить с цитированием
  #16 (permalink)  
Старый 07.06.2017, 11:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

.attr("src", original) - старт загрузки
.bind("load"... - окончание загрузки
$self.one("appear"... определение момента загрузки (прокручено до изображения, "ленивая загрузка")
Ответить с цитированием
  #17 (permalink)  
Старый 07.06.2017, 14:01
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,661

Сообщение от Kyjek Посмотреть сообщение
Открытого Коллбэка нет поэтому меня и не устраивает этот скрипт.
Что значит нет, а это что:
$('img.lazy').lazyload({
	appear: function(remains, settings) {
		// before load
	},
	load: function(remains, settings) {
		// after load
		$(this).css('width', '100%');
	}
});

Последний раз редактировалось Rise, 07.06.2017 в 14:05.
Ответить с цитированием
  #18 (permalink)  
Старый 07.06.2017, 15:26
Интересующийся
Отправить личное сообщение для Kyjek Посмотреть профиль Найти все сообщения от Kyjek
 
Регистрация: 06.06.2017
Сообщений: 13

этот колбэк выполняется раньше чем картинка сменится. Т.е. он выполняется по факту загрузки.
Если смотреть код в отладчике, проходя по всем шагам, то можно заметить что все выполнение js заканчивается на этапе замены src. Дальше js ничего не делает, однако на экране у картинки с прописанным src = img ( он подставился туда т.к. load произошел) отображается загрузчик и он сам сменится на картинку как только она прорисуется. Это какая то хитрость на которой основана работа плагина. Меня она полностью устраивает за исключением одного.
Я хочу изменить заглушку загрузки.
Тут она хитрая
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC

Такая короткая по объёму и в тоже время бесконечно длинная картинка в виде квадрата. Что это такое???
В идеале хотелось бы ее с spiner в центре.
но будет достаточно сделать ее не в виде квадрата, а прямоугольник с короткой высотой, т.к. в большинстве случаев картинке задается ширина, а высота автоматически, что делает неудобным применение данной заглушки.
Ответить с цитированием
  #19 (permalink)  
Старый 07.06.2017, 17:04
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,661

Сообщение от Kyjek Посмотреть сообщение
однако на экране у картинки с прописанным src = img ( он подставился туда т.к. load произошел) отображается загрузчик и он сам сменится на картинку как только она прорисуется. Это какая то хитрость на которой основана работа плагина.
Естественно сам сменится и это не великая хитрость, а так и работает свойство image.src, когда ему присваиваешь строку в виде пути к картинке, браузер ее загружает и отображает, поменяешь значение загрузится другая картинка и отобразится и тд. Когда картинка загрузится вызывается событие load, а как быстро браузер тебе ее покажет на экране от скрипта не зависит, а зависит от реализации самого браузера, от производительности твоего компа в данный момент и от размера картинки, тоже самое как производительность в играх падает на слабых компах или когда игра сама по себе плохо оптимизирована, картинка может отрисоваться с задержкой.
Сообщение от Kyjek Посмотреть сообщение
Такая короткая по объёму и в тоже время бесконечно длинная картинка в виде квадрата. Что это такое???
Это data:uri картинка в один пиксель, введи ее код в адресную строку и увидишь, ее можно также присваивать в image.src, и она не бесконечно длинная, а просто растянута на установленную ширину и высоту, если заменить обычной картинкой в один пиксель, будет то же самый эффект, разница в том что здесь исходный код картинки хранится непосредственно в файле скрипта, а не на диске, но преобразованная таким образом картинка обычно весит на 30% больше.
Ответить с цитированием
  #20 (permalink)  
Старый 07.06.2017, 17:11
Интересующийся
Отправить личное сообщение для Kyjek Посмотреть профиль Найти все сообщения от Kyjek
 
Регистрация: 06.06.2017
Сообщений: 13

Хм прикольно, можете подсказать как сделать два пикселя в ряд прозрачных! В base64
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическая смена картинок через заданное время herotic Элементы интерфейса 45 15.05.2020 16:44
Loading Image на JS exec Ваши сайты и скрипты 10 05.04.2017 20:08
Jquery Upload image & PHP capscom jQuery 0 17.10.2011 17:06
jQuery Image Scroller dolfik Элементы интерфейса 0 31.03.2011 01:03
Jquery doctype + ie8 alizid Internet Explorer 5 21.08.2010 13:39