Я хотел бы предложить это шаблонное решение общего назначения, которое расширяет правильное решение, предоставленное И Цзяном.
Дополнительные преимущества включают:
- поддержка наведения на любой элементтип или несколько элементов;
- всплывающее окно может быть любого типа элемента или набора элементов, включая объекты;
- самодокументируемый код;
- обеспечивает появление всплывающего окнаповерх других элементов;
- разумная основа, которой нужно следовать, если вы генерируете html-код из базы данных.
В html вы помещаете следующую структуру:
<div class="information_popup_container">
<div class="information">
<!-- The thing or things you want to hover over go here such as images, tables,
paragraphs, objects other divisions etc. -->
</div>
<div class="popup_information">
<!-- The thing or things you want to popup go here such as images, tables,
paragraphs, objects other divisions etc. -->
</div>
</div>
В CSS вы размещаете следующую структуру:
div.information_popup_container {
position: absolute;
width:0px;
height:0px;
/* Position Information */
/* Appearance Information */
}
div.information_popup_container > div.information {
/* Position Information */
/* Appearance Information */
}
div.information_popup_container > div.popup_information {
position: fixed;
visibility: hidden;
/* Position Information */
/* Appearance Information */
}
div.information_popup_container > div.information:hover + div.popup_information {
visibility: visible;
z-index: 200;
}
Обратите внимание на следующие моменты:
- Поскольку положение div.popup установлено на фиксированное (также будет работать с абсолютным) содержимое не внутри нормального потока документа, что позволяет атрибуту visible работать хорошо.
- z-index установлен, чтобы div.popup отображался над другой страницей.elements.
- Параметр information_popup_container имеет небольшой размер и поэтому не может быть наведен на него.
- Этот код поддерживает только наведение на элемент div.information.Чтобы поддержать зависание над div.information и div.popup, см. Всплывающее окно «Наведите курсор на всплывающее окно» ниже.
- Он был протестирован и работает, как ожидается, в Opera 12.16 Internet Explorer 10.0.9200, Firefox 18.0 и Google Chrome 28.0..15.
Наведите курсор на всплывающее окно
В качестве дополнительной информации.Когда всплывающее окно содержит информацию, которую вы, возможно, захотите вырезать и вставить, или содержит объект, с которым вы, возможно, захотите взаимодействовать, сначала замените:
div.information_popup_container > div.information:hover + div.popup_information {
visibility: visible;
z-index: 200;
}
на
div.information_popup_container > div.information:hover + div.popup_information
,div.information_popup_container > div.popup_information:hover {
visibility: visible;
z-index: 200;
}
И затемотрегулируйте положение div.popup таким образом, чтобы оно совпадало с информацией о div.inop.Несколько пикселей достаточно для того, чтобы div.popup мог получать указатель при перемещении курсора от div.information.
Это не работает должным образом с Internet Explorer 10.0.9200 и работает должным образом сOpera 12.16, Firefox 18.0 и Google Chrome 28.0.15.
Полный пример с всплывающим многоуровневым меню см. В скрипте http://jsfiddle.net/F68Le/.