При настройке эффекта опрокидывания в HTML, есть ли какие-либо преимущества (или ловушки) для его выполнения в CSS и JavaScript? Есть ли проблемы с эксплуатационной совместимостью или кодом, с которыми я должен быть знаком с любым из этих подходов?Каков предпочтительный способ прокрутки CSS?
ответ
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 ограничение обычно не проблема, так как вы склонны к тому, чтобы rollovers можно было щелкнуть. Последнее, однако, немного более проблематично. Существует метод, называемый CSS Sprites, который может предотвратить эту проблему. Вы можете найти пример используемой техники, чтобы сделать no-preload rollovers.
Это довольно просто, основной принцип заключается в том, что вы создаете изображение, большее, чем элемент, задаете изображение в качестве фонового изображения и позиционируете его с помощью 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 */
}
Обратите внимание, что с помощью этой техники «спрайтов» означает, что вы будете не в состоянии использовать альфа-прозрачного PNGs с IE6 (как единственным способом IE6 должен оказывать альфа-прозрачное PNGs правильно использует специальные изображения фильтра, который дон» т поддержка background-position
)
Я бы остаться на CSS стороне дома, но я сделал очень мало Javascript.
CSS, кажется, легче стандартизировать во всех браузерах, чем Javascript, хотя это может измениться с появлением V8 Chrome и предстоящего нового инструмента рендеринга в Firefox.
Потому что это аспект презентации, я бы сказал, что это больше стандартов, основанных сделать это с помощью CSS. Раньше это делалось в Javascript, просто потому, что мы не могли сделать это с помощью CSS (старые браузеры сосут, и я не думаю: hover был добавлен до CSS 2).
Это будет по-прежнему работать в CSS, если браузер случается, что Javascript отключен.
Реализация опрокидывание с CSS использует: парения псевдо-класс, чтобы определить стиль целевого элемента, когда он завис над. Это отлично работает во многих браузерах, но не в IE6, где он хорошо работает с тегом привязки (то есть a: hover). Я использовал CSS hover для создания панели с вкладками, но мне пришлось использовать поведение IE, чтобы заставить его работать в IE6.
не существует мнемонические для запоминания последовательности деклараций в CSS?
Да, лучший способ сделать это - csssprites.Досадная проблема возникает в IE6, когда браузер делает запрос каждый раз, когда элемент зависает. Чтобы исправить это, take a look here.
- 1. Каков предпочтительный способ реализации hashCode()?
- 2. Каков предпочтительный способ загрузки файлов CSS для браузера?
- 3. Каков предпочтительный способ написания масштабируемых многострочных макетов?
- 4. Каков предпочтительный способ обработки данных в Python?
- 5. Каков предпочтительный способ перечисления нескольких элементов?
- 6. Hibernate: Каков предпочтительный способ обновления объекта?
- 7. Каков предпочтительный способ инициализации представлений onCreate?
- 8. Каков предпочтительный способ объявить поток в java?
- 9. Каков предпочтительный способ написать мои демоны linux?
- 10. Каков предпочтительный способ создания строки из литерала?
- 11. Каков предпочтительный способ отображения номера версии модуля?
- 12. Каков предпочтительный способ загрузки артефактов в Artifactory?
- 13. Каков предпочтительный способ архивирования функций с coredata?
- 14. Каков предпочтительный способ обработки транзакций в pyscopg2?
- 15. Каков предпочтительный способ назначения коллекции из параметра?
- 16. Каков предпочтительный способ подстроки в языке D?
- 17. Каков предпочтительный способ отступов в коммутаторе?
- 18. Каков предпочтительный способ создания пузырьков событий?
- 19. Каков предпочтительный способ определения массива в мангусте?
- 20. Каков предпочтительный способ переназначения массивов NumPy?
- 21. Каков предпочтительный способ хранения различных версий данных?
- 22. Каков предпочтительный способ объединения функций Underscore.js?
- 23. Каков предпочтительный способ записи GTK-приложений?
- 24. Каков ваш предпочтительный способ очистки цикла while?
- 25. Каков предпочтительный способ разделить Birt rtpdesign?
- 26. Каков предпочтительный способ организации обратных вызовов?
- 27. Каков предпочтительный способ привязки radcombobox в radgrid?
- 28. Каков предпочтительный способ объединения двух раковин?
- 29. Java: Каков предпочтительный способ перебора множества?
- 30. Каков предпочтительный способ обработки отсутствующего элемента DynamicObject?
Вы можете получить псевдокласс `: hover` для работы с любым элементом в IE6, указав doctype. – 2008-10-06 18:16:07