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 :

Menu déroulant avec width à 100% incompatible sous IE 7 & IE6


Sujet :

CSS

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 104
    Points : 45
    Points
    45
    Par défaut Menu déroulant avec width à 100% incompatible sous IE 7 & IE6
    Bonjour

    J'ai réalisé un menu déroulant pour lequel je mets une width à 100% sur la li afin que la largeur s'adapte en fonction du contenu. Mais le problème c'est que sur IE 6 et IE7 cela me décale tout alors que sous FF cela marche à merveille. Par contre si je mets une largeur fixe mes problèmes sont résolus mais je veux pouvoir faire une sous menu dynamique

    Quelqu'un a une petite idée?? Merci de votre aide

    Voici mon code css

    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
     
    ul#menu_principal ul.sousmenu {
      border: 0;
      position:absolute;
      z-index: 5;
      padding: 5px 0px 0px 0px;
      text-transform:none;
      display:none;
      margin-left:0px;
    }
     
    ul#menu_principal ul.sousmenu li {
      background: none;
      border: 0;
      display: block;
      clear: both;
      float:left;
      /*width:100%;*/
      width:200px;
    }

  2. #2
    BnA
    BnA est déconnecté
    Membre averti Avatar de BnA
    Inscrit en
    Mars 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 559
    Points : 397
    Points
    397
    Par défaut
    Le code que tu indiques n'est, j'espère, pas l'entièreté de ton menu!

    Poste-nous l'HTML et la totalité des classes associées au menu, ainsi que le Javascript si tu en utilises... Tu auras plus de chance d'avoir une réponse!
    Sans extrait de code, ne vous attendez à aucun miracle (sauf miracle) ...

    ...et n'oubliez pas: RTFM!!

    Téléchargez FireBug pour Firefox (le paracétamol du développement web)

    "MERCI" ne coûte rien, n'hésitez pas à vous en servir!

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 104
    Points : 45
    Points
    45
    Par défaut
    voici mon css

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
     
    ul#menu_principal ul.sousmenu {
      border: 0;
      position:absolute;
      z-index: 5;
      padding: 5px 0px 0px 0px;
      text-transform:none;
      display:none;
      margin-left:0px;
     
    width:auto;
    }
     
    ul#menu_principal ul.sousmenu li {
      background: none;
      border: 0;
      float:left;
      width:100%;
      clear: both;
     
     
     
      /*width:200px;*/
    }
     
    ul#menu_principal ul.sousmenu li.last a.bouton_ssmenu span, ul#menu_principal ul.sousmenu li.first a.bouton_ssmenu span, ul#menu_principal ul.sousmenu li a.bouton_ssmenu span{
    font-size: 0.9em;
    color: #fff;
    display: block;
    padding-left:13px;
    padding-top:1px;
    padding-right:13px;
    height:17px;
    }
     
    ul#menu_principal ul.sousmenu li.last a.bouton_ssmenu, ul#menu_principal ul.sousmenu li.first a.bouton_ssmenu,ul#menu_principal ul.sousmenu li a.bouton_ssmenu{
    display:block;
    }
     
    ul#menu_principal ul.sousmenu li a.bouton_ssmenu{
    background:url(images/item_ss_menu_gauche.gif) no-repeat left top;
    }
     
    ul#menu_principal ul.sousmenu li a.bouton_ssmenu span{
    background:url(images/item_ss_menu_droite.gif) no-repeat right top;
    margin-right:-2px;
    }
    ul#menu_principal ul.sousmenu li.first a.bouton_ssmenu{
    background:url(images/first_item_ss_menu_gauche.gif) no-repeat left top;
    }
    ul#menu_principal ul.sousmenu li.last a.bouton_ssmenu{
    background:url(images/last_item_ss_menu_gauche.gif) no-repeat left top;
    }
    ul#menu_principal ul.sousmenu li.first a.bouton_ssmenu span{
    background:url(images/first_item_ss_menu_droite.gif) no-repeat right top;
    margin-right:-2px;
    }
    ul#menu_principal ul.sousmenu li.last a.bouton_ssmenu span{
    background:url(images/last_item_ss_menu_droite.gif) no-repeat right top;
    margin-right:-2px;
    }
    voici mon html

    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
     
    <div id="menu">
              <ul id="menu_principal">
                <li><a class="bouton_menu" href="#"><span>Présentation</span></a>
                  <ul class="sousmenu">
                    <li class="first"><a class="bouton_ssmenu" href="#"><span>Test 1000</span></a></li>
                    <li class="last"><a class="bouton_ssmenu" href="#"><span>Test 2</span></a></li>
                  </ul>
                </li>
                <li><a class="bouton_menu" href="#"><span>Formation</span></a>
     
                  <ul class="sousmenu">
                    <li class="first"><a class="bouton_ssmenu" href="#"><span>Test 3</span></a></li>
                    <li class="last"><a class="bouton_ssmenu" href="#"><span>Test 4</span></a></li>
                  </ul>
     
                </li>
                <li>
                	<a class="bouton_menu" href="#"><span>Recherche</span></a>
                </li>
                <li><a class="bouton_menu" href="#"><span>Documentation</span></a></li>
                <li><a class="bouton_menu selected" href="#"><span>Campus</span></a>
                  <ul class="sousmenu">
                    <li class="first"><a class="bouton_ssmenu" href="#"><span>Handicap</span></a></li>
                    <li><a class="bouton_ssmenu" href="#"><span>Association</span></a></li>
                    <li><a class="bouton_ssmenu" href="#"><span>Culture</span></a></li>
                    <li><a class="bouton_ssmenu" href="#"><span>Sport</span></a></li>
                    <li class="last"><a class="bouton_ssmenu" href="#"><span>Portail Etudiant Portail Etudiant</span></a></li>
                  </ul>
                </li>
                <li><a class="bouton_menu" href="#"><span>International</span></a></li>
                <li><a class="bouton_menu" href="#"><span>Culture</span></a></li>
                <li id="dernier_item"><a class="bouton_menu" href="#"><span>Actualités</span></a></li>
              </ul>
            </div>
    si tu as une solution je suis preneuse car je galere depuis un jour dessus

    merci

  4. #4
    BnA
    BnA est déconnecté
    Membre averti Avatar de BnA
    Inscrit en
    Mars 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 559
    Points : 397
    Points
    397
    Par défaut
    Ton menu il fonctionne en Javascript ou en full CSS?
    Sans extrait de code, ne vous attendez à aucun miracle (sauf miracle) ...

    ...et n'oubliez pas: RTFM!!

    Téléchargez FireBug pour Firefox (le paracétamol du développement web)

    "MERCI" ne coûte rien, n'hésitez pas à vous en servir!

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 104
    Points : 45
    Points
    45
    Par défaut
    l'affichage se fait avec du jquery

  6. #6
    Rédacteur
    Avatar de Macmillenium
    Homme Profil pro
    Développeur front-end
    Inscrit en
    Mars 2008
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur front-end
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 2 333
    Points : 3 747
    Points
    3 747
    Par défaut
    Bonsoir,

    Tu veux flotter tes <li> et en même temps tu fais dégager les flottants avec le clear:both;, c'est un peu contradictoire
    Il faudrait enlever le clear:both; et rajouter un float:left; sur tes <a> (pour IE6-)

    J'ai réalisé un menu déroulant pour lequel je mets une width à 100% sur la li afin que la largeur s'adapte en fonction du contenu
    Renseigner un width:100% est inutile sauf dans le cas d'un float:left/right, position:absolute;, position:fixed; et display:table/table-cell/table-row étant donné que l'élément doté de l'une de ces propriétés s'adapte à la taille de son contenu et non pas son conteneur.
    Ceci dit, tu n'as pas besoin d'un width:100%;

    Code css : 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
     
    ul#menu_principal ul.sousmenu {
      border: 0;
      position:absolute;
      z-index: 5;
      padding: 5px 0px 0px 0px;
      text-transform:none;
      display:none;
      margin-left:0px;
    }
     
    ul#menu_principal ul.sousmenu li {
      background: none;
      border: 0;
      /* display: block; */
      /* clear: both; */
      float:left;
      /*width:100%;*/
      /* width:200px; */
    }

    Si tu veux te simplifier la vie, évite au maximum de conférer le Layout aux list-items, vu les problèmes de rendu que cela pose.

    A ta place je ferai ceci :

    Code css : 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
     
    ul#menu_principal ul.sousmenu {
      border: 0;
      position:absolute;
      z-index: 5;
      padding: 5px 0px 0px 0px;
      text-transform:none;
      display:none;
      margin-left:0px;
    }
     
    ul#menu_principal ul.sousmenu li {
      background: none;
      border: 0;
      display:inline;
      /* display: block; */
      /* clear: both; */
      /* float:left; */
      /*width:100%;*/
      /* width:200px; */
    }
    
    ul#menu_principal ul.sousmenu li a {
      float:left;
    }

    Et styler uniquement les <a>.
    Je ne réponds pas aux questions techniques par MP.

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 104
    Points : 45
    Points
    45
    Par défaut
    J'ai essayé mais rien y fait j'ai le menu sur une ligne et la largeur de chaque li dépend du contenu du a

    tu as une autre idée?

  8. #8
    Rédacteur
    Avatar de Macmillenium
    Homme Profil pro
    Développeur front-end
    Inscrit en
    Mars 2008
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur front-end
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 2 333
    Points : 3 747
    Points
    3 747
    Par défaut
    Citation Envoyé par dedel53 Voir le message
    J'ai essayé mais rien y fait j'ai le menu sur une ligne et la largeur de chaque li dépend du contenu du a
    Citation Envoyé par dedel53 Voir le message
    J'ai réalisé un menu déroulant pour lequel je mets une width à 100% sur la li afin que la largeur s'adapte en fonction du contenu.
    Je comprends alors pourquoi tu as float:left et clear:both en même temps.

    Code css : 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
    ul#menu_principal ul.sousmenu {
      border: 0;
      position:absolute;
      z-index: 5;
      padding: 5px 0px 0px 0px;
      text-transform:none;
      display:none;
      margin-left:0px;
      width:200px; /* exemple à adapter */
    }
     
    ul#menu_principal ul.sousmenu li {
      background: none;
      border: 0;
      display:inline;
      /* display: block; */
      /* clear: both; */
      /* float:left; */
      /*width:100%;*/
      /* width:200px; */
    }
    
    ul#menu_principal ul.sousmenu li a {
     display:block;
    }

    Tu n'as pas besoin de flotter tes éléments, passer le <a> en display:block permet d'occuper toute la largeur de son conteneur ul#menu_principal ul.sousmenu
    Je ne réponds pas aux questions techniques par MP.

  9. #9
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 104
    Points : 45
    Points
    45
    Par défaut
    tu mets une width à 200px mais je ne veux justement pas fixer une largeur

  10. #10
    Rédacteur
    Avatar de Macmillenium
    Homme Profil pro
    Développeur front-end
    Inscrit en
    Mars 2008
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur front-end
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 2 333
    Points : 3 747
    Points
    3 747
    Par défaut
    Citation Envoyé par dedel53 Voir le message
    tu mets une width à 200px mais je ne veux justement pas fixer une largeur
    C'est un exemple, si l'un des conteneurs parents a une largeur fixe, mets juste width:100% sur ul#menu_principal ul.sousmenu vu qu'il est en absolute (Cf Mon message plus haut).
    Je ne réponds pas aux questions techniques par MP.

Discussions similaires

  1. [MySQL] Menu déroulant avec données sql
    Par matt38 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 08/08/2012, 23h40
  2. menu déroulant (avec sous menus)
    Par devlopassion dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 14/04/2008, 11h55
  3. [PHP-JS] Menu déroulant avec proposition de login
    Par xender dans le forum Langage
    Réponses: 1
    Dernier message: 16/05/2006, 14h08
  4. [PHP-JS] besoin d'aide pour menu déroulant avec lien
    Par Damarus dans le forum Langage
    Réponses: 3
    Dernier message: 06/10/2005, 18h43
  5. Menu déroulant avec préselection automatique
    Par nesbla dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/06/2005, 12h11

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