Ответ 1
CSS отлично подходит для опрокидывания. Они реализованы в основном с использованием псевдоселектора :hover
. Здесь действительно простая реализация:
a{
background-image: url(non-hovered-state.png);
}
a:hover{
background-image: url(hovered-state.png);
}
Есть несколько вещей, о которых вам нужно знать:
- IE6 поддерживает только теги
:hover
на<a>
- Изображения, указанные в CSS, но не используемые на странице, не будут загружаться немедленно (это означает, что состояние опрокидывания может занять первое место в первый раз)
Ограничение <a>
-tags-only обычно не является проблемой, так как вы склонны к тому, чтобы опрокидывающиеся клики были доступны. Последнее, однако, немного более проблематично. Существует метод, называемый CSS Sprites, который может предотвратить эту проблему, вы можете найти пример используемой техники, чтобы сделать откаты без предварительной загрузки.
Это довольно просто, основной принцип заключается в том, что вы создаете изображение, большее, чем элемент, задаете изображение в качестве фонового изображения и позиционируете его с помощью background-position
, так что только тот бит, который вы хотите, виден. Это означает, что для отображения зависающего состояния вам просто нужно изменить положение фона - никаких дополнительных файлов не нужно загружать вообще. Вот пример быстрого и грязного (в этом примере предполагается, что у вас есть элемент 20px high и фоновое изображение, содержащее как зависание, так и не зависающее состояние - одно поверх другого (так что изображение имеет высоту 40 пикселей):
a{
background-image: url(rollover-sprites.png);
background-position: 0 0; /* Added for clarity */
height: 20px;
}
a:hover{
background-position: 0 -20px; /* move the image up 20px to show the hovered state below */
}
Обратите внимание, что использование этой техники "спрайтов" означает, что вы не сможете использовать альфа-прозрачные PNG с IE6 (поскольку единственный способ, которым IE6 должен отображать альфа-прозрачные PNG, правильно использует специальный фильтр изображения, который не поддерживает background-position
)