Как активировать HTML-ссылку, нажав на <li>? - PullRequest
58 голосов
/ 14 июля 2009

У меня есть следующая разметка,

<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>

<li> немного большой, с маленьким изображением слева, Я действительно должен нажать на <a>, чтобы активировать ссылку. Как я могу нажать на <li> активировать ссылку?

Edit1:

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;
}

Ответы [ 13 ]

108 голосов
/ 14 июля 2009
#menu li { padding: 0px; }
#menu li a { margin: 0px; display: block; width: 100%; height: 100%; }

Может потребоваться некоторая настройка для IE6, но это примерно так.

16 голосов
/ 14 июля 2009

Как сказал Марино, вы можете использовать атрибут onclick <li> для изменения location.href через javascript:

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

Кроме того, вы можете удалить любые поля или отступы в <li> и добавить большой отступ слева от <a>, чтобы избежать попадания текста на маркер.

15 голосов
/ 05 июля 2013

Просто, чтобы выбросить эту опцию:

<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>

Это стиль, который я использую в своих меню, он делает сам элемент списка гиперссылкой (аналогично тому, как сделать изображение ссылкой).
Для стайлинга я обычно применяю что-то вроде этого:

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

Затем я могу применить любой стиль к

, какой захочу.

Примечание: Валидаторы будут жаловаться на этот метод, но если вы похожи на меня и не основываете свою жизнь на них, это должно работать просто отлично.

10 голосов
/ 20 февраля 2012

Просто добавьте обертку текста ссылки в тег 'p' или что-то подобное и добавьте поля и отступы для этого элемента, таким образом, это не повлияет на настройки, которые вам дал MiffTheFox, т.е.

<li> <a href="#"> <p>Link Text </p> </a> </li>
7 голосов
/ 07 ноября 2011

Это сделает весь <li> объект в виде ссылки:

<li onclick="location.href='page.html';"  style="cursor:pointer;">...</li>
2 голосов
/ 16 января 2014

jqyery это еще одна версия с jquery, чуть менее короткой. при условии, что элемент <a> находится внутри элемента de <li>

$(li).click(function(){
    $(this).children().click();
});
1 голос
/ 30 августа 2014

Или вы можете создать пустую ссылку в конце вашего <li>:

<a href="link"></a>

.menu li{position:relative;padding:0;}
.link{
     bottom: 0;
     left: 0;
     position: absolute;
     right: 0;
     top: 0;
}

Это создаст полностью кликабельный <li> и сохранит ваше форматирование по вашей реальной ссылке. Это может быть полезно и для тега <div>

1 голос
/ 14 июля 2009

Кажется, работает следующее:

ul#menu li a {
    color:#696969;
    display:block;
    font-weight:bold;
    line-height:2.8;
    text-decoration:none;
    width:100%;
}
0 голосов
/ 02 апреля 2019

Ссылка на ссылку привязки относится к li:

#menu li a {
       display:block;
    }
0 голосов
/ 28 декабря 2018

Я нашел простое решение: сделать тег "li" внутри тега "a":

<a href="#"><li>Something1</li></a>
...