J'ai une barre de navigation horizontale faite à partir d'une liste non ordonnée, et chaque élément de la liste a beaucoup de remplissage pour le rendre joli, mais la seule zone qui fonctionne comme lien est le texte lui-même. Comment puis-je permettre à l'utilisateur de cliquer n'importe où dans l'élément de liste pour activer le lien?
#nav {
background-color: #181818;
margin: 0px;
overflow: hidden;
}
#nav img {
float: left;
padding: 5px 10px;
margin-top: auto;
margin-bottom: auto;
vertical-align: bottom;
}
#nav ul {
list-style-type: none;
margin: 0px;
background-color: #181818;
float: left;
}
#nav li {
display: block;
float: left;
padding: 25px 10px;
}
#nav li:hover {
background-color: #785442;
}
#nav a {
color: white;
font-family: Helvetica, Arial, sans-serif;
text-decoration: none;
}
<div id="nav">
<img src="/images/renderedicon.png" alt="Icon" height="57" width="57" />
<ul>
<li><a href="#">One1</a></li>
<li><a href="#">Two</a></li>
<li><a href="#">Three</a></li>
<li><a href="#">Four</a></li>
</ul>
</div>
<div>
<h2>Heading</h2>
</div>
display: inline; zoom: 1;
dans un commentaire conditionnel pour IE6 et IE7 remplaceradisplay: inline-block;
bien que oui, si les éléments de la liste sont déjà flottants, cedisplay: block;
sera OK aussi>
symbole apparaisse après le texte de mon lien, mais je ne l'ai pas mis dans le contenu ... J'ai fini par le mettre simplement dans le contenu. Je serais curieux de savoir s'il existe une meilleure façon d'accomplir cela.Définissez votre propriété css de balise d'ancrage comme suit:
Ensuite, l'ancre occupera toute la zone de liste, de sorte que votre clic fonctionnera dans l'espace vide à côté de votre liste.
la source
li
, comme une icône.Faites en sorte que la balise d'ancrage contienne le remplissage plutôt que le
li
. De cette façon, il occupera toute la zone.la source
Super, très tard à cette fête, mais de toute façon: vous pouvez également coiffer l'ancre comme un élément flexible. Ceci est particulièrement utile pour les éléments de liste dimensionnés / organisés dynamiquement.
(Attention: les flexbox sont obvs toujours pas bien supportés. Autoprefixer à la rescousse!)
la source
ul
et flexbox.Utilisez ce qui suit:
la source
Ou vous pouvez utiliser jQuery:
la source
Vous devez utiliser cette propriété et cette valeur CSS dans votre
li
:Ainsi, vous pouvez gérer le lien avec jQuery ou JavaScript, ou utiliser une
a
balise, mais tous les autres éléments de balise à l'intérieur duli
devraient avoir la propriété CSS:la source
Appliquez simplement le CSS ci-dessous:
la source
voici comment je l'ai fait
Créez le
<a>
bloc en ligne et supprimez le rembourrage de votre<li>
Ensuite, vous pouvez jouer avec le
width
et leheight
du<a>
dans le<li>
Mettez le
width
à100%
un départ et voir comment cela fonctionnePS: - Obtenez l'aide des outils de développement Chrome lors du changement de
height
etwidth
la source
Vous pouvez toujours envelopper la balise entière li avec la balise hiperlink Voici ma solution:
la source
Placez l'élément de liste dans le lien hypertexte au lieu de l'inverse.
Par exemple avec votre code:
la source