Mam poziomy pasek nawigacyjny utworzony z nieuporządkowanej listy, a każdy element listy ma dużo wypełnienia, aby ładnie wyglądał, ale jedynym obszarem, który działa jako łącze, jest sam tekst. Jak mogę umożliwić użytkownikowi kliknięcie w dowolnym miejscu elementu listy, aby aktywować łącze?
#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;
w komentarzu warunkowym dla IE6 i IE7 zostaną zastąpione,display: inline-block;
chociaż tak, jeśli elementy listy są już pływające, równieżdisplay: block;
będzie OK>
aby symbol pojawił się po tekście mojego linku, ale nie umieszczałem go w treści ... Skończyło się na tym, że umieściłem go w treści. Byłbym ciekawy, czy istnieje lepszy sposób na osiągnięcie tego.Zdefiniuj właściwość css tagu kotwicy jako:
{display:block}
Następnie kotwica zajmie cały obszar listy, więc kliknięcie będzie działać w pustym miejscu obok listy.
źródło
li
, na przykład ikona.Spraw, aby tag kotwicy zawierał dopełnienie, a nie
li
. W ten sposób zajmie cały obszar.źródło
Super, bardzo późno na tę imprezę, ale w każdym razie: kotwicę można również stylizować jako element elastyczny. Jest to szczególnie przydatne w przypadku dynamicznie dopasowanych / uporządkowanych elementów listy.
a { /* This flexbox code stretches the link's clickable * area to fit its parent block. */ display: flex; flex-grow: 1; flex-shrink: 1; justify-content: center; }
(Uwaga: flexboxy nadal nie są dobrze obsługiwane. Autoprefixer na ratunek!)
źródło
ul
i flexbox.Użyj następujących:
a { display: list-item; list-style-type: none; }
źródło
Lub możesz użyć jQuery:
$("li").click(function(){ window.location=$(this).find("a").attr("href"); return false; });
źródło
Powinieneś użyć tej właściwości i wartości CSS w swoim
li
:pointer-events:all;
Możesz więc obsłużyć link za pomocą jQuery lub JavaScript albo użyć
a
tagu, ale wszystkie inne elementy tagu wewnątrzli
powinny mieć właściwość CSS:pointer-events:none;
źródło
Po prostu zastosuj poniższy CSS:
<style> #nav ul li { display: inline; } #nav ul li a { background: #fff;// custom background padding: 5px 10px; } </style>
źródło
oto jak to zrobiłem
Zrób
<a>
blok inline i usuń wyściółkę z<li>
Następnie można grać z
width
orazheight
z<a>
w<li>
Włóż
width
do100%
jako początek i zobaczyć, jak to działaPS: - Skorzystaj z pomocy Chrome Developer Tools przy zmianie
height
iwidth
źródło
Umieść element listy w hiperłączu, a nie na odwrót.
Na przykład z Twoim kodem:
<a href="#"><li>One</li></a>
źródło