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 :

padding dans menu


Sujet :

CSS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Par défaut padding dans menu
    Bonjour,

    Je débute avec css et j'essai de faire un menu (avec highlight qd on survole les liens) avec qq mots clés et 2 petites images constituées par des drapeaux. Comme il y a ces images le fait de préciser un padding au balise <a> padding:10px 20px fait que le paddding est appliqué uniformément (au texte et aux images) et que les liens texte sont highlightés en partie alors que les images le sont complètement (décalage avec le border). Y a t il un moyen de spécifier un padding différent pour les balises <a> texte et les balises <a> image ? ou autre solution ?
    J'ai ajouté 2 petites images pour illuster.

    voici le code html :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <div id="topnav">
    		<ul>
    			<li><a href="index.html">Accueil</a></li>
    			<li><a href="Qui_sommes_nous.html">Qui sommes nous</a></li>
    			<li><a href="loi.html">La Loi</a></li>
    			<li><a href="ief.html">Mieux Connaître L'IEF</a></li>
    			<li><a href="ressources.html">Ressources</a></li>
    			<li><a href="contacts.html">Contacts</a></li>
    			<li><a href="english.html"><img src="images/icons/drapeau-uk.gif" /></a></li>
    			<li><a href="deutsch.htm"><img src="images/icons/drapeau-de.gif" /></a></li>
    		</ul>
    et le css :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #topnav 			{  clear:both; background-color:#333;  }
    #topnav ul			{ width:100%; float:left; margin:0px 0;	background-color:#333; border-bottom:3px #ccc solid; }
    #topnav ul li		{ display:inline; }
    #topnav ul li a		{ float:left;  padding:10px 20px;}
     
     
    #topnav a:link		{ color:#fff;	}
    #topnav a:visited	{ color:#fff;	}
    #topnav a:active	{ color:#fff;	}
    #topnav a:hover		{ color:#fff; background-color:#900;	}
    #topnav a:focus		{ color:#fff;	}
    merci de votre aide
    Images attachées Images attachées   

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Non, tu ne peux pas (encore) cibler un élément en fonction de ses enfants en CSS. Ce sera possible en CSS4, mais aucun navigateur ne l'implémente ne serait-ce que partiellement.

    La solution est de passer par des classes différentes selon le contenu et d'utiliser ces classes pour déterminer le padding souhaité.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Bonjour,
    as tu essayé de passer par un line-height , en mettant les A et les IMG en display:inline-block

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    Bonjour,
    as tu essayé de passer par un line-height , en mettant les A et les IMG en display:inline-block
    merci de la réponse.
    Comme en passant par des class cela semble fonctionner et comme je ne comprends pas trop ta réponse je ne creuse pas plus pour le moment....


  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Citation Envoyé par himba
    Comme en passant par des class cela semble fonctionner et comme je ne comprends pas trop ta réponse je ne creuse pas plus pour le moment....
    et on ne peut pas t'en blâmer.

    A y regarder de plus prêt il s’avère que mettre une height à tes A semble suffisant.

    Et en allant juste un peu plus loin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #topnav ul li a{
      float:left;
      padding:10px 20px;
      height:30px;           /* suffit pour occuper toute la hauteur et pour IE */
      line-height:30px;      /* centrage verticalement du texte */
      text-decoration:none;
    }
    #topnav ul li img{
      vertical-align:middle; /* centrage vertical des IMG au moins sur IE>7*/
      border:none;
    }

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Par défaut
    Merci beaucoup.
    Cela fonctionne effectivement très bien. Après je ne suis pas trop capable pour le moment de dire quel est la meilleure solution entre les class et les ajouts d'argument en terme par ex de compatibilité avec les différents browser. J'ai l'impression que les class offrent une meilleure compatibilité avec notamment les anciennes versions de css (mais ce n'est qu'une intuition).
    En tout cas merci beaucoup pour votre aide précieuse.

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Non, tu ne peux pas (encore) cibler un élément en fonction de ses enfants en CSS. Ce sera possible en CSS4, mais aucun navigateur ne l'implémente ne serait-ce que partiellement.

    La solution est de passer par des classes différentes selon le contenu et d'utiliser ces classes pour déterminer le padding souhaité.
    merci.

    Comme je débute j'en étais resté au div. Sa fonctionne effectivement très bien avec des class. J'ai donc modifié mon html comme ceci :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <div id="topnav">
    		<ul>
    			<li><a class="texte" "href="index.html">Accueil</a></li>
    			<li><a class="texte" href="Qui_sommes_nous.html">Qui sommes nous</a></li>
    			<li><a class="texte" href="loi.html">La Loi</a></li>
    			<li><a class="texte" href="ief.html">Mieux Connaître L'IEF</a></li>
    			<li><a class="texte" href="ressources.html">Ressources</a></li>
    			<li><a class="texte" href="contacts.html">Contacts</a></li>
    			<li><a class="image" href="english.html"><img src="images/icons/drapeau-uk.gif" /></a></li>
    			<li><a class="image" href="deutsch.htm"><img src="images/icons/drapeau-de.gif" /></a></li>
    		</ul>
    	</div>

    et mon css comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #topnav 			{  clear:both; background-color:#333;  }
    #topnav ul			{ width:100%; float:left; margin:0px 0;	background-color:#333; border-bottom:3px #ccc solid; }
    #topnav ul li		{ display:inline;  }
    #topnav ul li a		{ float:left; }
     
    .texte				{padding:10px 20px; }
    .image				{padding:5px 20px; }
    J'ai le résultat escompté mais je ne sais pas si mon code est très propre. N'y a t il pas moyen de cibler plus précisément les class d'une div ?


    merci

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/03/2006, 07h36
  2. [forms 9.04.0.19] Appel de form dans menu
    Par pdiaz dans le forum Forms
    Réponses: 6
    Dernier message: 06/07/2005, 08h05
  3. Icône dans menu contextuel
    Par Larion dans le forum C++Builder
    Réponses: 4
    Dernier message: 01/04/2005, 22h45
  4. [InnoSetup] Ajouter un raccourci dans menu Démarrer
    Par jlvalentin dans le forum Installation, Déploiement et Sécurité
    Réponses: 3
    Dernier message: 23/02/2005, 16h26
  5. [Systeme]Win XP pro: pb d'icone dans menu Démarrer
    Par Bountyx dans le forum Windows XP
    Réponses: 2
    Dernier message: 20/01/2005, 12h22

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