Добавляем иконку предзагрузки к большим изображениям при помощи CSS

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

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

1. Находим иконку предварительной загрузки

Существует много сайтов, позволяющих создавать свои собственные изображения предзагрузки. Например, вот этот. Только не забудьте обратить внимание на то, что это изображение (размер файла) не должно быть слишком большим. Пусть будет такое:

load

2. Пишем CSS-код

Код минимален, создается всего одно просто правило следующего содержания:

.load {
	background: url(i/load.gif) center no-repeat;
}

Вместо load.gif, естественно, должно быть название вашей иконки предзагрузки.

3. Пишем HTML-код

Чтобы иконку предзагрузки можно было центрировать относительно размеров изображения, поместим изображение в div-контейнер, которому зададим размеры изображения:

<div class="load" style="width:200px;height:200px">
<img src="large.jpg" alt="Альтернативный текст" /></div>

Готово.

Посмотреть примеры с несколькими вариациями описанного способа можно здесь.

Данный способ был проверен и совместим с Internet Explorer 5.5, 6, 7, FireFox (PC и Mac), Netscape и Safari (PC и Mac).

Вольный перевод статьи “css: add a “loading” icon to your larger images”

* * *

В Москве и Московской области существует огромное количество фитнес-центров. На сайте InFit.ru представлены лучшие фитнес клубы, а также всегда актуальные новости и статьи на данную тему, на которые можно подписаться по электронной почте.

Комментарии (16)

  1. ACID Jesus
    29 января 2008 г. в 20:20

    Полезно, заюзаем, спасибо 8-)

  2. rmaksim
    29 января 2008 г. в 20:31

    так можно и без дополнительного дива – class=”load” присвоить сразу картинке

    для FF и опера задать: min-width: 32px; min-height: 32px; – это если не заданы размеры картинки в img

  3. 29 января 2008 г. в 20:33

    3-й пункт нужно что ли к каждой картинке присобачивать??
    Може это все можно реализовать плагином для WP как-нибудь?

  4. 29 января 2008 г. в 23:57

    rmaksim, да, можно и без дива, в примерах автора статьи такой пример как раз есть.

    3-й пункт нужно что ли к каждой картинке присобачивать??

    Конечно :)

    Може это все можно реализовать плагином для WP как-нибудь?

    Не знаю.

  5. 30 января 2008 г. в 02:59

    А можно это сделать как-нибудь для просто тега img у которого нет не высоты не ширины, на автомате?

  6. 30 января 2008 г. в 10:16

    Бухгалтер, если размер всех изображений одинаковый, то можно с помощью CSS задать ширину и высоту для тега img.

  7. 30 января 2008 г. в 10:35

    Каждую картинку тегами окружать – слишком утомительно… ждем-с чуда в виде плагина для WP…

  8. Взлом-щик
    30 января 2008 г. в 12:34

    Народ верно говорит, div’ы то добавить пусть и не сложно, но нада что-то делать, чтобы не прописывать к каждой картинке высоту и ширину…

  9. 30 января 2008 г. в 16:09

    Хорошая идея. Надо будет реализовать на каком-нибудь проекте.

  10. ReStaK
    30 января 2008 г. в 16:17

    Обязательно попробую при случае. Результат потом покажу.

  11. sergius
    30 января 2008 г. в 18:12

    интересно, полезно и… просто!!!
    спасибо, самому с этим разбираться было бы очень утомительно! обязательно буду использовать!

  12. 6 февраля 2008 г. в 19:01

    круто!
    только некрасиво с размером картинок
    (пошел думать)

  13. oблаkо
    8 ноября 2008 г. в 16:57

    да не сложно же сделать и так, чтобы не присобачивать класс – для тега img в классе новости прописать код, и он будет автоматом добавляться ко всем картинкам, размещённым в новости

  14. Sarmat
    5 января 2009 г. в 14:57

    Я сделал так:

    img {background: url(../i/des/loader.gif) center no-repeat;}

    Можно, в принципе, задать для любого класса:

    .your_class img {background: url(../i/des/loader.gif) center no-repeat;}
    1. андрей
      29 октября 2009 г. в 01:11 / ответ на коммент Sarmat

      Sarmat

      img {background: url(../i/des/loader.gif) center no-repeat;}

      так ведь под каждой картинкой прелоад будет, под каким нибудь PNG будет не в тему,
      или из под смайла торчать, тоже не кул

  15. 5 января 2009 г. в 15:50

    Sarmat, поддерживаю. Я бы сейчас именно так и сделал. Только в этом случае нужно, чтобы у изображения обязательно присутствовали параметры ширины и высоты.

Ваш комментарий

Жирный текст

Ссылка

Цитата

Внутристрочный код

CSS-код

HTML-код

JavaScript-код

PHP-код