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 :

width en pourcentage


Sujet :

CSS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 57
    Par défaut width en pourcentage
    Bonjour à tous,

    Je suis en train de faire un menu déroulant horizontal en css. J'indique mes largeurs en pourcentage et j'ai remarqué une différence d'interprétation de ces largeurs sous opera et ie6. La différence est suffisamment importante pour être génante. Quelqu'un a-t-il déjà remarqué cela?
    Existe-t-il un moyen de s'en sortir ?
    Ai-je fait une erreur quelque part?

    Merci d'avance et un peu de code (piqué sur le net puis modifié) pour illustrer :

    HTML :
    Code html : 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
    <div class="menu">
           		<ul>
            		<li><a href="index.php?ad=">&nbsp;Accueil
              			<!--[if gt IE 6]><!--></a><!--<![endif]-->
              			<!--[if lt IE 7]><table border="0" cellpadding="0" cellspacing="0"><tr><td><![endif]-->
              			<!--[if lte IE 6]></td></tr></table></a><![endif]-->
            		</li>
          		</ul>
          		<ul>
            		<li><a href="index.php?ad=dechetSol">&nbsp;Nos agences
              		<!--[if gt IE 6]><!--></a><!--<![endif]-->
              		<!--[if lt IE 7]><table border="0" cellpadding="0" cellspacing="0"><tr><td><![endif]-->
              			<ul>
                			<li><a href="index.php?ad=dechetSol"><img src="images/next.png" alt="" />&nbsp;Déchets solides</a></li>
                			<li><a href="index.php?ad=dechetLi"><img src="images/next.png" alt="" />&nbsp;Déchets liquides</a></li>
                			<li><a href="index.php?ad=dechetDang"><img src="images/next.png" alt="" />&nbsp;Déchets dangereux</a></li>
                			<li><a href="index.php?ad=traitement"><img src="images/next.png" alt="" />&nbsp;Traitement</a></li>
              			</ul>
              		<!--[if lte IE 6]></td></tr></table></a><![endif]-->
            		</li>
          		</ul>
          		<ul>
            		<li><a href="index.php?ad=collecte">&nbsp;Nos métiers
              		<!--[if gt IE 6]><!--></a><!--<![endif]-->
              		<!--[if lt IE 7]><table border="0" cellpadding="0" cellspacing="0"><tr><td><![endif]-->
              			<ul>
                			<li><a href="index.php?ad=collecte"><img src="images/next.png" alt="" />&nbsp;Collecte</a></li>
                			<li><a href="index.php?ad=assainissement"><img src="images/next.png" alt="" />&nbsp;Assainissement</a></li>
                			<li><a href="index.php?ad=nettoiement"><img src="images/next.png" alt="" />&nbsp;Nettoiement</a></li>
                			<li><a href="index.php?ad=analyse"><img src="images/next.png" alt="" />&nbsp;Analyse</a></li>
                			<li><a href="index.php?ad=traitement"><img src="images/next.png" alt="" />&nbsp;Traitement</a></li>
              			</ul>
              			<!--[if lte IE 6]></td></tr></table></a><![endif]-->
            		</li>
          		</ul>
          		<ul>
            		<li><a href="index.php?ad=actualite">&nbsp; Actualités
              		<!--[if gt IE 6]><!--></a><!--<![endif]-->
              		<!--[if lt IE 7]><table border="0" cellpadding="0" cellspacing="0"><tr><td><![endif]-->
              		<!--[if lte IE 6]></td></tr></table></a><![endif]-->
            		</li>
          		</ul>
          		<ul>
            		<li><a href="index.php?ad=references">&nbsp;Références
              		<!--[if gt IE 6]><!--></a><!--<![endif]-->
              		<!--[if lt IE 7]><table border="0" cellpadding="0" cellspacing="0"><tr><td><![endif]-->
              		<!--[if lte IE 6]></td></tr></table></a><![endif]-->
            		</li>
          		</ul>
          		<ul>
            		<li> <a href="index.php?ad=contact">&nbsp;Contacts
              		<!--[if gt IE 6]><!--></a><!--<![endif]-->
              		<!--[if lt IE 7]><table border="0" cellpadding="0" cellspacing="0"><tr><td><![endif]-->
              		<!--[if lte IE 6]></td></tr></table></a><![endif]-->
            		</li>
          		</ul>
        	</div>

    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
    /* style the outer div to give it width */
    .menu {
    width:100%; 
    font-size:0.85em;
    background:#67a656;
    border-bottom:3px solid white;
    margin-bottom: 1em;
    height:3em;
    z-index:10;
    vertical-align:middle;
    }
    .menu img {
    border:none;
    }
    /* remove all the bullets, borders and padding from the default list styling */
    .menu ul {
    padding:0;
    margin:0;
    list-style-type:none;
    }
    /* float the list to make it horizontal and a relative position so that you can control the dropdown menu position */
    .menu li {
    float:left;
    width:16.666%;
    position:relative;
    }
    .menu li li {
    width:100%;
    }
    C'est le width:16.66% qui pose problème.

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    As-tu un DOCTYPE complet et valide ?

    Au passage, les menus sur Cssplay sont certes des prouesses CSS, mais je ne pense pas qu'il faille les utiliser en production, d'autant plus qu'à ma connaissance celui-ci n'est pas effectif sur Opera.

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 912
    Par défaut
    Le problème avec opera c'est qu'il n'interprète que les valeurs rondes de pourcentage. 50% ou 50.9% c'est du kiff pour lui, il interprète comme 50%.

    De toute manière si le but est de placer 6 boutons côtes à côtes et occuper le 100% de la place à disopsition, il n'y aura guère que sur les navigateurs basés sur gecko qui t'afficheront un rendu correct quel que soit la largeur de la fenêtre.

    Sur IE tu auras la plus part du temps des boutons sur 2 lignes et sur safari un espace après les boutons vu leur différente politique concernant les arrondis.
    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

  4. #4
    Membre averti
    Inscrit en
    Août 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 57
    Par défaut
    Merci beaucoup pour vos réponses.
    As-tu un DOCTYPE complet et valide ?
    Je ne pense pas que ce soit un probleme de doctype, il semble que ce soit les valeurs arrondies des pourcentages de opera.

    les menus sur Cssplay sont certes des prouesses CSS, mais je ne pense pas qu'il faille les utiliser en production
    Je pensais pouvoir l'adapter sans trop de problèmes à mon cas, pourquoi me les déconseilles-tu ? Vaut-il mieux utiliser quelque chose à base de javascript ?

    si le but est de placer 6 boutons côtes à côtes et occuper le 100% de la place à disopsition, il n'y aura guère que sur les navigateurs basés sur gecko qui t'afficheront un rendu correct quel que soit la largeur de la fenêtre
    C'est bien mon but en effet. N'y a-t-il pas une solution à ce problème?

    Merci encore

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 912
    Par défaut
    Citation Envoyé par Dude1205 Voir le message
    N'y a-t-il pas une solution à ce problème?
    Pour éviter les problème sur IE le mieux est de laisser une dimensions libre afin d'absorber les différences. C'est possible en évitant de donner une dimension au dernier des éléments et en supprimant son flottement.

    L'idéal serait de jouer sur les pseudo-classe :first-child et :last-child pour éviter d'attribuer des classes mais malheureusement seul :first-child est reconnu sur IE7.

    Je pense que j'opterais pour ce genre de compromis:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <ul>
    	<li style="background:#888;">menu1</li>
    	<li style="background:#999;">menu2</li>
    	<li style="background:#aaa;">menu3</li>
    	<li style="background:#bbb;">menu4</li>
    	<li style="background:#ccc;">menu5</li>
    	<li id="last" style="background:#ddd;">menu6</li>	
    </ul>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    * {margin:0;padding:0;}
    ul {list-style:none;}
    li {width:17%;float:left;}
    li:first-child {width:16%;}
    #last {float:none;width:auto;}
    Ce qui nous donne le premier et dernier élément avec une largeur de 16%, les 4 autres à 17% et avec le dernier qui peut absorber les différences de pixels dues aux arrondis.
    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

  6. #6
    Membre averti
    Inscrit en
    Août 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 57
    Par défaut
    Merci pour ta solution candygirl.
    Je vais faire ca plutot que de centrer la liste, ce sera plus propre.

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 912
    Par défaut
    Si les aditions de tes pourcents font un total de 100% et que le conteneur n'a pas de taille fixe tu auras forcément des passages sur 2 lignes avec IE et un espace sur safari à certaines largeurs du conteneur.
    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

  8. #8
    Membre averti
    Inscrit en
    Août 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 57
    Par défaut
    Zut, je viens de modifier mon message précédent en voyant ta réponse
    peu importe, j'adopte ta solution.
    J'avais fait attention à ne pas mettre un total de 100%, je n'avais pas mis de marge à droite.
    Merci encore et bonne fin de journée

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

Discussions similaires

  1. Mise en place de div qui ne correspond pas aux pourcentages de width
    Par francky74 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 06/03/2015, 11h10
  2. Faire déborder un div en width pourcentage dans un td
    Par bhj2000 dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 28/01/2014, 17h37
  3. Width & Height avec pourcentages
    Par cl@ndestIno dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 07/05/2009, 15h09
  4. Régler le width d'un TextBox en pourcentage ?
    Par mamelouk dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 14/07/2008, 00h30

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