Je voudrais proposer cette solution de modèle à usage général qui développe la solution correcte fournie par Yi Jiang.
Les avantages supplémentaires comprennent :
- prise en charge du survol de tout type d'élément, ou de plusieurs éléments ;
- la fenêtre contextuelle peut être n'importe quel type d'élément ou ensemble d'éléments, y compris des objets ;
- code auto-documenté ;
- fait en sorte que la pop-up apparaisse au-dessus des autres éléments ;
- une base solide à suivre si vous générez du code html à partir d'une base de données.
Dans le html, vous placez la structure suivante :
<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>
Dans le css vous placez la structure suivante :
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;
}
Quelques points à noter :
- Étant donné que la position de la div.popup est fixe (elle peut également être absolue), le contenu ne se trouve pas dans le flux normal du document, ce qui permet à l'attribut visible de fonctionner correctement.
- z-index est défini pour garantir que la div.popup apparaisse au-dessus des autres éléments de la page.
- L'information_popup_container est définie à une petite taille et ne peut donc pas être survolée.
- Ce code ne prend en charge que le survol de l'élément div.information. Pour prendre en charge le survol des éléments div.information et div.popup, consultez la section survol de la popup ci-dessous.
- Il a été testé et fonctionne comme prévu dans Opera 12.16 Internet Explorer 10.0.9200, Firefox 18.0 et Google Chrome 28.0.15.
Passez la souris sur la fenêtre contextuelle
Comme information supplémentaire. Lorsque la fenêtre contextuelle contient des informations que vous pourriez vouloir couper et coller ou contient un objet avec lequel vous pourriez interagir, commencez par le remplacer :
div.information_popup_container > div.information:hover + div.popup_information {
visibility: visible;
z-index: 200;
}
avec
div.information_popup_container > div.information:hover + div.popup_information
,div.information_popup_container > div.popup_information:hover {
visibility: visible;
z-index: 200;
}
Ensuite, ajustez la position de div.popup pour qu'il y ait un chevauchement avec div.information. Quelques pixels suffisent pour que la div.popup puisse recevoir le survol lorsque le curseur quitte la div.information.
Cela ne fonctionne pas comme prévu avec Internet Explorer 10.0.9200 et fonctionne comme prévu avec Opera 12.16, Firefox 18.0 et Google Chrome 28.0.15.
Voir violon http://jsfiddle.net/F68Le/ pour un exemple complet avec un menu popup à plusieurs niveaux.
1 votes
Le div doit être à l'intérieur de la balise a
0 votes
Veuillez voir stackoverflow.com/questions/3847568/ quand vous trouvez que cette technique semble "cassée".
2 votes
N'oubliez pas que :hover ne fonctionnera pas de la même manière sur les écrans tactiles, et qu'il convient de l'utiliser avec précaution (évitez, par exemple, de l'utiliser pour afficher des éléments de navigation supplémentaires).
0 votes
@Pawel Bulwan J'ai combiné les suggestions de sélecteur CSS ":hover" et "+" d'ici avec une suggestion :target pour afficher le contenu en cas de clic (de stackoverflow.com/questions/18849520/ ) en une solution qui devrait fonctionner à la fois avec la souris et le toucher - zoomicon.wordpress.com/2017/11/25/
0 votes
Pour faire suite à mon dernier commentaire, voyez aussi quelques variations utiles dans une réponse à un commentaire que j'ai fait sur cet article de blog : zoomicon.wordpress.com/2017/11/25/