У меня есть горизонтальная панель навигации, сделанная из неупорядоченного списка, и каждый элемент списка имеет много отступов, чтобы он выглядел красиво, но единственная область, которая работает как ссылка, - это сам текст. Как я могу позволить пользователю щелкнуть в любом месте элемента списка, чтобы активировать ссылку?
#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;
в условном комментарии для IE6 и IE7 заменит,display: inline-block;
хотя да, если элементы списка уже размещены,display: block;
тоже будет хорошо>
чтобы после текста ссылки появлялся символ, но не помещал его в контент ... В итоге я просто поместил его в контент. Было бы любопытно, есть ли лучший способ сделать это.Определите свойство css тега привязки как:
{display:block}
Тогда якорь будет занимать всю область списка, поэтому ваш щелчок будет работать в пустом месте рядом с вашим списком.
источник
li
, например значок.Сделайте так, чтобы тег привязки содержал заполнение, а не расширение
li
. Таким образом, он займет всю площадь.источник
Супер, супер поздно для этой вечеринки, но в любом случае: вы также можете стилизовать якорь как гибкий элемент. Это особенно полезно для элементов списка с динамическим размером / упорядочением.
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; }
(Предостережение: гибкие боксы - это obvs, которые все еще плохо поддерживаются. Autoprefixer спешит на помощь!)
источник
ul
flexbox.Используйте следующее:
a { display: list-item; list-style-type: none; }
источник
Или вы можете использовать jQuery:
$("li").click(function(){ window.location=$(this).find("a").attr("href"); return false; });
источник
Вы должны использовать это свойство и значение CSS в своих
li
:pointer-events:all;
Таким образом, вы можете обрабатывать ссылку с помощью jQuery или JavaScript или использовать
a
тег, но все остальные элементы тега внутриli
должны иметь свойство CSS:pointer-events:none;
источник
Просто примените приведенный ниже CSS:
<style> #nav ul li { display: inline; } #nav ul li a { background: #fff;// custom background padding: 5px 10px; } </style>
источник
вот как я это сделал
Сделайте
<a>
встроенный блок и удалите прокладку из вашего<li>
Затем вы можете играть с
width
иheight
из<a>
в<li>
Положить
width
в100%
качестве начала и посмотреть , как это работаетPS: - Воспользуйтесь помощью инструментов разработчика Chrome при изменении
height
иwidth
источник
Поместите элемент списка в гиперссылку, а не наоборот.
Например, с вашим кодом:
<a href="#"><li>One</li></a>
источник