Тема актуальна для картинок, которые не видны при первой загрузке страницы. Обычно они находятся в блоках с display:none (разные popup’ы) или используются для подмены при наведении на блок.
Проблема в том, что смена (желаемая) происходит на экране обычно быстрее, чем подгрузка картинок с сервера (особенно актуально для соединений с длинным пингом). Поэтому, чтобы не ждать пока изображение на экране перестанет быть уродливым, есть смысл загрузить все картинки сразу (правда время первой загрузки увеличится).
Нашёл 4 метода для этого:

  • сделать спрайт — поместить картинки, относящиеся к одному объекту и описывающие разные его состояния (спокойной состояние и при наведении курсора) в один файл. А смену картинок реализовать через background-position. Из недостатков — невозможность использования PNG в ие6 и мигание (flicker эффект) в ие — тот считает, что картинку надо всё равно подгружать, в кеш ему заглянуть лень. Но прелоад — это то, что никогда не обсуждается в ТЗ, не входит в мои обязанности и вполне (что логично) реализуемо через JS, поэтому то, что я делаю прелоад — бонус и ИЕ меня в этом случае мало интересует
  • сделать картинку с прозрачными областями и заполнять эти области через background-color. Из моей практики, таких случаев, когда можно применить этот метод — единицы, ведь использовать можно опять-таки только GIF, кроме того, нужно задавать цвет для бекграунда, а при смене цвета для общего фона будет пятно (о любви к заказчикам я уже писал)
  • сегодня нашёл способ — положить картинки, которые нужно закешировать, в бекграунды прочим элементам страницы (ЛЮБЫМ, у которых его нет). А чтобы они не мешали — использовать background-position. Ещё не пробовал, но звучит очень интересно.
Оценить:|
  
Комментировать
Раздел: CSS    
Просмотров: 2392
Комментариев (6)
  1. Greg
    Григорий Кочнев [Greg]
    24.08.2011 в 12:22

    А проще картинки вызывать в цсс, кэшировать, а при необходимости вызывать.
    Не обязательно при этом делать «бекграунды прочим элементам страницы(ЛЮБЫМ, у которых его нет)».

  2. Deff
    Андрей Данилов [Deff]
    29.09.2011 в 22:12

    Писал о примочках
    Правда остаётся нерешённой проблема позиционирования PNG-бекграунда. Знаю, есть яваскриптовые примочки для этого. Но я не люблю такого. Ну вот не люблю и всё! Поэтому из 300+ проектов я такую примочку использовал в 1-2. Если можно обойтись без неё — никто мне не докажет, что это проблема. Так, мелкий недочёт.

Оставить комментарий