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 :

Forcer un <a> à occuper tout l'espace du <li> parent


Sujet :

CSS

  1. #1
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Points : 64
    Points
    64
    Par défaut Forcer un <a> à occuper tout l'espace du <li> parent
    Bonsoir,

    Comment faire en sorte qu'un élément de lien html <a> prenne tous l'espace d'un élément de liste a puce <li> ? Comprenez vous ma question ?

    J'ai un <div> qui englobe un menu d'onglet (bien ce ne soit pas des onglet a proprement dit) sue lequel j'applique les définitions des <li> et <a> suivantes:
    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
    .menu-onglet {
    	margin-left: 180px;
    	margin-bottom: 50px;
    	padding: 0px;
    }
     
    .menu-onglet li {
        display: inline; 	
        border: 1px solid blue;
        margin:  20px;
        padding: 10px;
        height: 25px;
    }
     
    .menu-onglet a {
        display : inline-block;
        color : #666;
        text-decoration : none;
        padding : 10px;
        height: 25px;
        line-height: 25px;
    }
     
    .menu-onglet a:hover {
        background: red;
    }

    Je veux que le hover en rouge (hover du <a>) superpose exactement le <li> entouré d'un rectangle bleu. Je ne comprends pas, j'ai bien positionné le height et le line-height du <a>. J'ai mis aussi le même padding.

    J'appelle comme ca en html:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div class="menu-onglet">
        <ul>
            <li> <a> Mon lien </a> </li>
            <li> <a> Mon second lien </a> </li>
        </ul>

    Merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    • Enlève le padding sur le li
    • Et met le a en display:block.

  3. #3
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Points : 64
    Points
    64
    Par défaut
    Merci jreaux62.

    En plus de ce que tu me recommande j'ai du mettre un width fixe (en pixels) sur les <li> pour que ca donne un beau résultat. Mais comment faire si on ne veux pas fixer des largeurs/width fixe sur les <li> ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Montre ton nouveau code...

  5. #5
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Points : 64
    Points
    64
    Par défaut
    voici mon nouveau code:

    Code css3 : 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
     
     
    .menu-onglet {
        margin-left: 180px;
        margin-bottom: 50px;
        padding: 0px;
    }
     
    .menu-onglet li {
        display: inline-block; 	
        border: 0px solid blue;
        margin:  20px;
        padding: 00px;
        height: 25px;
        width: 180px;
    }
     
    .menu-onglet a {
        display : block;
        color : #666;
        text-decoration : none;
        padding : 00px;
        height: 25px;
        line-height: 25px;
        width: 180px;
        text-align: center;
    }
     
    .menu-onglet a:hover {
        border-top: 2px solid #0075CA;
    }

  6. #6
    Membre éclairé
    Homme Profil pro
    Retraité informatique
    Inscrit en
    Juin 2012
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 519
    Points : 705
    Points
    705
    Par défaut
    Une approche si ça peut aider ...

    https://codepen.io/JefReb/pen/PjLRqB

    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
    .menu-onglet {
    	margin:0;
    	padding: 0;
    }
    .menu-onglet li {
    	display: inline-block;
    }
    .menu-onglet a {
    	color : #fff;
    	text-decoration : none;
    	line-height: 80px;
    	font-size: 30px;
    	font-weight:bold;
    	width: auto;
    	padding:10px;
    	text-align: center;
    	background-color: #03C;
    }
    .menu-onglet a:hover {
    	text-decoration: underline;
    	background-color: #609;
    }
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <ul class="menu-onglet">
      <li> <a> Mon lien </a> </li>
      <li> <a> Mon second lien </a> </li>
    </ul>
    ps: une <div> ouverte doit être fermée par </div>
    ps: padding:0; suffit largement. Pas besoin de padding:00px;

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1/ comme il s'agit d'une barre de navigation, on utilise la balise dédiée >nav> :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <nav class="menu-onglet">
      <ul>
        <li><a href="">Mon lien</a></li>
        <li><a href="">Mon second lien</a></li>
      </ul>
    </nav>
    2/ Un bon code CSS est un code SIMPLE :

    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
    .menu-onglet {
        margin:  0;
        padding: 0;
    }
     
    .menu-onglet li {
        display: inline-block; 	
        margin:  0;
        padding: 0;
    }
     
    .menu-onglet a {
        display : block;
        color : #666;
        margin:  0;
        padding : 10px 20px;
        text-decoration : none;
        text-align: center;
        border-top: 2px solid transparent; /* pour éviter que ça saute sur le hover */
    }
     
    .menu-onglet a:hover {
        border-top: 2px solid #0075CA;
    }
    3/ Quant au "beau résultat", à toi de nous dire ce que tu veux obtenir au final.

    4/ Une autre approche est d'utiliser les flexbox (display:flex; sur le ul +...) :

  8. #8
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Points : 64
    Points
    64
    Par défaut
    le width:auto; a suffit a tout résoudre.

    Merci a tous.

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 09/12/2005, 07h04
  2. stockage de photos dans base de données ou dans un répertoir
    Par papy_tergnier dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 08/12/2005, 16h22
  3. Réponses: 2
    Dernier message: 14/09/2005, 13h39
  4. [BIGINT dans Firebird] comment les manipuler dans Delphi ?
    Par kase74 dans le forum Bases de données
    Réponses: 4
    Dernier message: 30/08/2004, 11h11

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