IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mise en page CSS Discussion :

Problème de chevauchement entre 2 divs


Sujet :

CSS

  1. #1
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Par défaut Problème de chevauchement entre 2 divs
    Bonjour,

    J'ai un menu_haut qui contient une liste de boutons, et juste en dessous (collé), j'ai un sous_menu.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <html>
    	<head>
    		<style type="text/css">
    			*
    			{
    				margin: 0;
    				padding: 0;
    				border: 0;
    			}
     
    			#menu_haut
    			{
    				height: 20px;
    			}
     
    			#sous_menu
    			{
    				background-color: #F8C262;
    			}
     
    			li
    			{
    				display: inline;
    			}
    		</style>
    	</head>
    	<body>
    		<div id="menu_haut">
    			<ul>
    				<li>
    					<img src="/btn_accueil.png" />
    				</li>
    				<li>
    					<img src="/btn_presentation.png" />
    				</li>
    			</ul>
    		</div>
    		<div id="sous_menu">
    			&nbsp;
    		</div>
    	</body>
    </html>
    Difficile de faire plus simple ^^. Voici ce que je voudrais obtenir :


    Cependant, il semblerait qu'il y ait plusieurs bugs :
    1/ sous IE6, les boutons du menu_haut ne sont pas collés au sous_menu :


    2/ Aussi bien sous IE6 que sous FF, lorsqu'on fait un zoom du texte (ctrl+ sous Firefox), les boutons du menu_haut viennent chevaucher le sous_menu...


    Un petit lien pour tester par vous-même, si vous le voulez : ICI


    Quelqu'un pourrait-il m'aider à régler ce soucis? J'ai pas mal cherché, et hélas rien trouvé...
    Merci d'avance!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 50
    Par défaut
    Bonjour,

    pour ton problème 1

    juste modifier ton css:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    			#menu_haut
    			{
    				height: 20px;
    				overflow: hidden;
    			}

  3. #3
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Par défaut
    Oui en effet cela cache le soucis, mais je suppose que les 2 problèmes sont liés : il semblerait en fait que les images soient placés sur une ligne de texte (se réparées par des espaces, et que plus on zoom, plus forcément la hauteur de ces espaces grandit. Ce qui expliquerait qu'un écart se crée sans raisons au dessus, et en dessous des l'images. Hélas, je n'arrive pas à supprimer cette ligne, ou à lui donner une hauteur constante (j'ai bien essayé de mettre un line-height un peu partout, sur le <li>, le <ul>, le <div id="menu_haut">... mais sans résultat)...

    On voit d'ailleur cela si l'on essaie de sélectionner l'espace entre les images :


    Mais impossible de le supprimer, ou de redéfinir sa hauteur :'(


    [Edit] Une possibilité serait en effet de mettre un "overflow: hidden;" à #menu_haut, et un "vertical-align:top;" à img. Dans ces cas là, on aligne l'image sur le haut de la ligne, et on cache ce qui dépasse ^^. Mais ça tient plus du bidouillage qu'autre chose. Cependant, ça a l'avantage d'être efficace.

  4. #4
    Rédacteur
    Avatar de MasterOfChakhaL
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    2 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 147
    Par défaut
    salut,

    Tu peux aussi éviter de définir la hauteur en pixel et utiliser une unite relative afin que le zoom s'applique aussi sur les dimensions.

    La plupart des navigateurs ont une taille de police par défaut de 16px. Si sur ton body tu définis un font-size de 62.5%, alors tu auras la correspondance 1em<->10px.

    Attention, vu que les tailles en em sont relatives, si tu as deux divs imbriqués ayant tout deux un font-size de 2em, alors le div enfant aura une police deux fois plus grandes que son père.

    Si tu t'imposes la discipline de ne définir les font-size qu'au niveau le plus profond de l'arborescence html, alors ce sera moins compliqué à gérer.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    N'oubliez pas de cliquer sur quand votre question à trouvé une solution.

    Si vous n'avez pas encore lu les règles du club, mieux vaut tard que jamais!

  5. #5
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Par défaut
    Je pense que je vais rester sur la piste de spitou_77. Au final, ça fonctionne bien, est relativement simple, donc pourquoi se compliquer la vie?

    Merci beaucoup pour vos réponses!

  6. #6
    Membre Expert
    Avatar de Candygirl
    Femme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 912
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 912
    Par défaut
    Perso je le ferais plutôt en float:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <ul id="menu_haut">
    	<li><img src="test_files/btn_accueil.png" alt="accueil"></li>
    	<li><img src="test_files/btn_presentation.png" alt="présentation"></li>
    </ul>
    <div id="sous_menu">
    	&nbsp;
    </div>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    			*{
    				margin: 0;
    				padding: 0;
    				border: 0;
    			}
     
     
    			#sous_menu{
    				background-color: #F8C262;
    				height:20px;
    			}
     
    			#menu_haut{
    				list-style:none;
    			}
     
    			#menu_haut li{
    				float:left;
    				margin-right:5px;
    			}
     
    			#menu_haut img {
    				display:block;
    			}
     
    			#sous_menu {
    				clear:both;
    			}
    Les bons réflexes:
    • avant de poser une question:
      règles | faq | tutoriels | recherche
    • clarté, politesse, vocabulaire et orthographe soignés = efficacité
    • remercier ceux qui ont pris le temps d'aider et :resolu: si c'est le cas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mise en page - Problème de chevauchement de div
    Par G-First dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 05/11/2008, 10h13
  2. Problème chevauchement entre objets
    Par lesafir dans le forum 2D
    Réponses: 2
    Dernier message: 07/06/2007, 12h46
  3. Réponses: 2
    Dernier message: 21/10/2004, 15h08
  4. Problèmes de compatibilité entre sdk 9.0c et geforce 2/4
    Par Francky033 dans le forum DirectX
    Réponses: 2
    Dernier message: 01/10/2004, 14h22
  5. [C#] Placer fichier html entre balises DIV
    Par Febus dans le forum ASP.NET
    Réponses: 9
    Dernier message: 07/05/2004, 11h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo