Я обычно использую свойство фона CSS. Это свойство позволяет вам установить аргумент прокрутки сверху и слева, как вы можете видеть в примере ниже. Поэтому идея состоит в том, чтобы создать одно изображение со всеми состояниями и просто расположить его на основе события, такого как наведение или другое пользовательское событие, в котором вы изменяете элементы CSS. Надеюсь, это поможет.
.mySprite a
{
background: transparent url(/images/spriteButton.gif) no-repeat scroll 0 0
}
.mySprite a:hover
{
background: transparent url(/images/spriteButton.gif) no-repeat scroll 30 0
}