28172 sujets

CSS et mise en forme, CSS3

Bonsoir,

Je suis face à un problème. J’ai bien lu (pour être sûr de ne pas être passé à côté d’une info essentielle) votre article sur le z-index, et après coup, je pense l'utiliser correctement.

Voici un codepen pour illustrer mon problème: https://codepen.io/anon/pen/eEOLQm
En gros, une fois le menu déployé, un overlay doit s’étendre sur tout l’écran comme actuellement. Petite subtilité, le bouton « mon bouton » dans le menu en haut à gauche doit passer au dessus l’overlay.

En se rapprochant de ce que j'ai déjà fait, les z-index me semble bien utilisés:
Menu ouvert: z-index: 15, Overlay: z-index: 10, mon bouton: z-index: 9999 (on est jamais assez sûr Smiley langue ).

Pourtant, le bouton reste toujours en dessous de l’overlay…

Une petite idée ?

Merci.
Modifié par lorraineS (22 Jul 2017 - 21:28)
Bizarre, parce que j'arrive à cliquer sur le bouton "mon bouton" donc il est bien au dessus de l'overlay. Il a la classe .btn et est en float: right? Je vois pas de bouton dans un menu en haut à gauche. Je vois même pas de menu. Je vais considérer que c'est la div .main-menu qui est le menu en question et d'ailleurs il passe en dessus du overlay.

Dans tous les cas, ça ne sert à rien de donner de z-index au bouton .btn sauf s'il doit se positionner devant ses frères (hors il est fils unique). Donc le z-index: 999 doit être sur le parent .header-top et du coup le overlay rouge prends cette fois-çi toute la largeur de l'écran.

Ici le parent c'est body qui contient 3 enfants: .header-top, .main-menu & .menu-overlay. Donc pour positionner ces éléments l'un au dessus ou dessous de l'autre, il faudra appliquer la propriété z-index à eux seulement et non aux enfants.

Je sais pas si c'est le résultat attendu.
Je voulais bien entendu dire "le bouton en haut à droite", désolé.

En fait, le résultat attendu est le suivant: le bouton "mon bouton" doit passer au dessus de l'overlay, et uniquement ce composant. Le reste du menu (il faut s'imagine qu'il y aura un logo au milieu de la navigation du haut) lui, reste en dessous de l'overlay.

Donc de ce que je comprends avec cette histoire d'enfant/parent, ça ne sera pas réalisable avec un simple z-index ?
Modifié par lorraineS (23 Jul 2017 - 10:29)
Comme je l'ai expliqué plus haut, donner un z-index au bouton ne servira strictement à rien. Il faut le donner au parent. Pourtant, le bouton reste cliquable donc il est bien accessible donc au dessus du overlay (la barre rouge j'imagine).

Je suis pas sûr de bien comprendre....Mets le codepen à jour avec les z-index sur les parents et le code menu en question entièrement , ce sera plus clair. Je pense qu'il y a une meilleure façon de code cet overlay.
Modifié par allan00958 (23 Jul 2017 - 10:46)
Je considère l'overlay comme étant le background (bleu/gris) de fond, la barre rouge elle représente la navigation.

J'ai bien compris qu'en mettant un z-index à ma navigation (le parent du bouton), celle-ci sera visible et "vu" par dessus l'overlay. Mais ce que je souhaite faire, c'est uniquement mettre en avant le bouton, pas la totalité du menu. C'est justement toute la difficulté. En ajoutant un z-index au parent, TOUTE la navigation sera mise en avant.

J'ai ajouté un fake logo pour mieux comprendre: https://codepen.io/anon/pen/mMbZjV

Ici, le bouton "mon bouton" doit passer au dessus de tout et uniquement ce bouton. La navigation, le logo, eux, doivent rester derrière l'overlay.

Voici une maquette qui résume le résultat attendu. On voit que le bouton est désormais au premier plan: upload/1500808018-65092-capturedaeacran2017-07-23aa13.jpg
Modifié par lorraineS (23 Jul 2017 - 13:12)
Bonjour.

Je n'ai pas la dernière version de Firefox mais en ce qui me concerne, le bouton est bien au-dessus de l'overlay.

Smiley smile
Zelena a écrit :
Bonjour.
Je n'ai pas la dernière version de Firefox mais en ce qui me concerne, le bouton est bien au-dessus de l'overlay.
Smiley smile


J'ai essayé avec Chrome, IE11, Edge, Safari, Opera, le bouton est toujours derrière l'overlay.... Tu pourrais me prendre un screenshot du rendu que tu as ?

Merci.
Modifié par lorraineS (23 Jul 2017 - 16:32)
Oui je peux cliquer dessus. Sur le screen on voit bien "l'outline" autour lors du clic, mais il est "visuellement" derrière... Smiley confus
Je vois pas d'outline lors du clic.
Je suppose que ce overlay sera affiché lors d'un clic ou d'un scroll, peut-être rajouter un bouton à l'intérieur div overlay, quitte à avoir 2 boutons.
Disons que mon bouton à plusieurs états en fonction de plusieurs paramètres. Dupliquer toute une partie du code dans toutes les pages n'est pas vraiment la solution...

Concernant le screenshot il ne s'est pas upload correctement, mais je te confirme que je peux bien cliquer dessus Smiley cligne
Modérateur
ou sortir le bouton de son parent pour le mettre en adjacence avec les autres élements pour que son z-index ne soit pas pris en compte à partir de son parent (défaut = 0), comme l'indiquait allan00958 , mais à partir d'un conteneur commun aux autres. ex: https://codepen.io/gc-nomade/pen/JyjGpG Cela modifie la structure pour le coup Smiley decu
Modifié par gcyrillus (24 Jul 2017 - 00:20)
Ce n'est pas faisable. comme dit précédemment, mon bouton est lié à mon menu. Dès que le menu change d'état (au scroll notamment) tout mon bouton est impacté. En le faisant sortir, ça ne fonctionnera plus.

Je vais devoir trouver une autre solution Smiley confus
Juste à des fins de compréhension, peut tu nous expliquer précisément ce que tu essaies de réaliser. En details....que ce passe -t- il au scroll ?
Bonjour,
lorraineS a écrit :
Ce n'est pas faisable. comme dit précédemment, mon bouton est lié à mon menu. Dès que le menu change d'état (au scroll notamment) tout mon bouton est impacté. En le faisant sortir, ça ne fonctionnera plus.

Je ne vois également pas d'autre solution, que de sortir le bouton du menu.
Tu devrais donc gérer le changement d'état de ton bouton en même temps que ton menu.
Bonjour.

Je peux faire un screenshot (d'ailleurs je l'ai fait) mais cela ne va pas vous avancer : ce n'est rien d'autre que le résultat attendu. Mon Firefox est un peu particulier : c'est celui livré avec Fedora 21 à savoir Firefox 42…

Hum… pourquoi ne pas mettre l'overlay directement sous le bouton ?

Smiley smile
Meilleure solution
Modérateur
Zelena a écrit :
Bonjour.

Je peux faire un screenshot (d'ailleurs je l'ai fait) mais cela ne va pas vous avancer : ce n'est rien d'autre que le résultat attendu. Mon Firefox est un peu particulier : c'est celui livré avec Fedora 21 à savoir Firefox 42…

Hum… pourquoi ne pas mettre l'overlay directement sous le bouton ?

Smiley smile


Mais bon sang mais c'est bien sur, du coup le parent est commun ..... bien vu Smiley smile
Bonjour,
Zelena a écrit :
Hum… pourquoi ne pas mettre l'overlay directement sous le bouton ?

Ce n'est pas très élégant, mais ça fonctionne. Smiley ravi
...

J'ai pu trouver une solution avec une tonne de répétition dans mon code et un peu de Javascript, mais j'avoue que la méthode de l'overlay "sur" le bouton est beaucoup plus simple.

Tellement évident que j'y avais pas pensé...

Merci Smiley biggol