Tengo una barra de navegación horizontal hecha de una lista desordenada, y cada elemento de la lista tiene mucho relleno para que se vea bien, pero la única área que funciona como enlace es el texto en sí. ¿Cómo puedo permitir que el usuario haga clic en cualquier parte del elemento de la lista para activar el enlace?
#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;
en un comentario condicional para IE6 e IE7 reemplazará,display: inline-block;
aunque sí, si los elementos de la lista ya están flotando,display: block;
también estará bien>
que apareciera un símbolo después del texto de mi enlace, pero no ponerlo en el contenido ... Terminé simplemente poniéndolo en el contenido. Sería curioso si hay una mejor manera de lograrlo.Defina la propiedad CSS de su etiqueta de anclaje como:
Luego, el ancla ocupará toda el área de la lista, por lo que su clic funcionará en el espacio vacío junto a su lista.
fuente
li
, como un icono.Haga que la etiqueta de ancla contenga el relleno en lugar del
li
. De esta manera, ocupará toda el área.fuente
Super, super tarde para esta fiesta, pero de todos modos: también puedes diseñar el ancla como un elemento flexible. Esto es particularmente útil para elementos de lista ordenados o de tamaño dinámico.
(Advertencia: las cajas flexibles todavía no están bien soportadas. ¡Autoprefixer al rescate!)
fuente
ul
y flexbox.Utilice lo siguiente:
fuente
O podrías usar jQuery:
fuente
Debe usar esta propiedad y valor de CSS en su
li
:Entonces, puede manejar el enlace con jQuery o JavaScript, o usar una
a
etiqueta, pero todos los demás elementos de etiqueta dentro deli
deben tener la propiedad CSS:fuente
Simplemente aplique el CSS a continuación:
fuente
así es como lo hice
Haga el
<a>
bloque en línea y quite el relleno de su<li>
Entonces puedes jugar con el
width
y elheight
del<a>
en el<li>
Poner el
width
que100%
como punto de partida y ver cómo funcionaPD: - Obtenga la ayuda de las herramientas de desarrollo de Chrome al cambiar
height
ywidth
fuente
Siempre puedes envolver toda la etiqueta li con la etiqueta de hipervínculo Aquí está mi solución:
fuente
Coloque el elemento de la lista dentro del hipervínculo en lugar de al revés.
Por ejemplo con tu código:
fuente