Я очень рекомендую использовать спрайты CSS:
http://www.alistapart.com/articles/sprites
Поначалу концепция может быть немного трудной для понимания, но вы в основном комбинируете исходное изображение и его состояние наведения (т. Е. Изображение, которое вы меняете, когда ссылка наведена) в одно изображение, затем показывая только соответствующую часть этого изображения за раз в качестве расположенного фонового изображения на элементе привязки.
У этого подхода есть несколько существенных преимуществ:
- Объединяя два изображения в одно, вы устраняете необходимость в одном HTTP-запросе, что повышает производительность загрузки страницы.
- При использовании обычного эффекта свопинга JavaScript изображение при наведении не будет загружаться, пока пользователь не наведет курсор мыши на ссылку. Это создает заметную задержку при загрузке / рендеринге, что визуально раздражает. Используя CSS-спрайты, оба состояния изображения загружаются одновременно (они являются частью одного и того же изображения), поэтому эффект при наведении изображения происходит мгновенно.
- Некоторые (включая меня) утверждают, что простой обмен изображениями при наведении изображения относится к уровню представления (CSS), а не к уровню поведения (JavaScript). Это просто хорошая практика, и она может привести к более понятному и понятному коду.
Конечно, это предполагает, что изображение, которое вы переключаете, является самим изображением ссылки, а не другим элементом на странице, который изменяется при наведении курсора на ссылку. Это, конечно, возможно, но потребует JavaScript.