Не показывать изображение пока оно не загрузилось

273
03 июля 2017, 20:30

Приветствую.

Думаю, многие знают о том, как не красиво выглядит загрузка большого изображения. Оно загружается и отображается по кускам сверху вниз. Это не очень приятно, не очень красиво.

Конечно, есть прелоадеры и, возможно, другое решение, но вот в чем вопрос:

Как сделать так, чтобы изображение не отображалось на странице, пока оно полностью не загрузится?

То есть будет сначала отображаться страница с текстом, потому что она весит меньше и потом будут отображаться все изображения или сколько их там, но каждое из них будет показываться (отображаться) после того, как полностью загрузилось.

Помогите.

Answer 1

Используйте этот код:

var img = document.createElement('img');
img.src = your_photo_path; // здесь начинается загрузка изображения
img.onload = function() {
    // устанавливаем новое изображение в photo_wrap
    document.getElementById('photo_wrap').innerHTML = '<img id="your_photo" src="' + your_photo_path + '">';
}

Для начала мы создаем объект img и без изменения текущего DOM страницы загружаем в него изображение. После загрузки изображение попадает в кэш браузера и срабатывает img.onload, а далее много путей. В приведенном примере было загружен тег с изображением в контейнер для фотографии photo_wrap, но можно и просто менять атрибут src или грузить изображение в background.

READ ALSO
Плавная анимация

Плавная анимация

Добрый вечер! Возник вопрос, как сделать плавный скроллингТ

193
Что помешало parse() обработать форму?

Что помешало parse() обработать форму?

Разбирая вот этот туториал (автор Manuel Kiessling), наткнулся на ошибку при выполнении финального примера; описание этой ошибки и действия, которые...

276
Логические операторы || vs &amp;&amp;

Логические операторы || vs &&

Подскажите, пожалуйста, почему выводит в консоль 1,2,3,4? В моем понимании, должны быть только 3 и 4 (первым срабатывает && где выполняется...

146