76 votes

Comment activer le lien HTML en cliquant sur le <li> ?

J'ai la balise suivante,

<ul id="menu">              
    <li><a href="#">Something1</a></li>
    <li><a href="#">Something2</a></li>
    <li><a href="#">Something3</a></li>
    <li><a href="#">Something4</a></li>
</ul>

En <li> est un peu grand, avec une petite image à sa gauche, Je dois cliquer sur l'image <a> pour activer le lien. Comment puis-je faire un clic sur le <li> activer le lien ?

Éditer1 :

ul#menu li
{
    display:block;
    list-style: none;
    background: #e8eef4 url(images/arrow.png) 2% 50% no-repeat;
    border: 1px solid #b2b2b2;
    padding: 0;
    margin-top: 5px;
}

ul#menu li a
{

    font-weight: bold;
    text-decoration: none;
    line-height: 2.8em;
    padding-right:.5em;
    color: #696969;
}

130voto

MiffTheFox Points 10537
#menu li { padding: 0px; }
#menu li a { margin: 0px; display: block; width: 100%; height: 100%; }

Il faudra peut-être l'adapter à IE6, mais c'est à peu près comme cela qu'il faut faire.

1 votes

Voici comment je procéderais. Le lien est agrandi à la taille de la balise <li>.

0 votes

Cela fonctionne, mais le texte (lien) est collé à la bordure droite, quand je donne un padding-right : .5em le <a> sort de <li>.

0 votes

Continuez à faire des ajustements et vous obtiendrez un résultat parfait. Vérifiez que les marges et le rembourrage ne sont pas négatifs, car il est probable que quelque chose ne s'additionne pas et s'effondre. Assurez-vous également qu'il n'y a pas de text-align : right ; coincé là-dedans.

24voto

Eric Points 36290

Comme l'a dit Marineio, vous pouvez utiliser la fonction onclick de l'attribut <li> pour modifier location.href par le biais de javascript :

<li onclick="location.href='http://example';"> ... </li>

Il est également possible de supprimer les marges ou le rembourrage dans le fichier <li> et ajoutez un large rembourrage sur le côté gauche de l'écran d'affichage. <a> pour éviter que le texte ne dépasse la puce.

1 votes

Pouvez-vous nous en dire plus à ce sujet ? Pourquoi est-ce une mauvaise idée ?

15voto

Duncan Points 518

Il s'agit simplement d'une option :

<ul id="menu">
    <a href="#"><li>Something1</li></a>
    <a href="#"><li>Something2</li></a>
    <a href="#"><li>Something3</li></a>
    <a href="#"><li>Something4</li></a>
</ul>

C'est le style que j'utilise dans mes menus, il fait de l'élément de la liste lui-même un lien hypertexte (de la même manière qu'une image est un lien).
Pour le coiffage, j'applique généralement quelque chose comme ceci :

nav ul a {
    color: inherit;
    text-decoration: none;
}

Je peux ensuite appliquer le style que je souhaite au <li>.

Remarque : Les validateurs se plaindront de cette méthode, mais si vous êtes comme moi et que votre vie n'est pas basée sur eux, cela devrait fonctionner parfaitement.

3 votes

Les enfants (descendants directs) d'un élément ul doivent tous être des éléments li. Il s'agit d'une exigence purement syntaxique. conformément à sémantique correcte pour ul dans ul - cette réponse se traduira par un code HTML invalide

1 votes

Un validateur sauvage est apparu :)

12voto

Adam Points 21

Il suffit d'insérer le texte du lien dans une balise 'p' ou quelque chose de similaire et d'ajouter une marge et un espacement à cet élément, de cette façon cela n'affectera pas les paramètres que MiffTheFox t'a donné, c'est à dire

<li> <a href="#"> <p>Link Text </p> </a> </li>

0 votes

Celui-ci a été le meilleur pour moi. J'ai utilisé un <span> et mettre l'affichage en mode bloc. Span me semblait plus correct qu'un paragraphe. Quoi qu'il en soit, cela a bien fonctionné.

8voto

DejanR Points 190

Cela rendra l'ensemble des <li> en tant que lien :

<li onclick="location.href='page.html';"  style="cursor:pointer;">...</li>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X