Как сделать всю область элемента списка на панели навигации доступной для кликабельности в виде ссылки?
у меня есть горизонтальная панель навигации, сделанная из неупорядоченного списка, и каждый элемент списка имеет много отступов, чтобы он выглядел красиво, но единственная область, которая работает как ссылка, - это сам текст. Как я могу позволить пользователю щелкнуть в любом месте элемента списка, чтобы активировать ссылку?
#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>
9 ответов:
не помещайте заполнение в элемент "li". Вместо этого установите тег привязки в
display:inline-block;
и применить прокладку к нему.
определите свойство css тега привязки как:
{display:block}
тогда якорь будет занимать всю область списка, так что ваш щелчок будет работать в пустом пространстве рядом со списком.
супер, супер поздно на эту вечеринку, но в любом случае: вы также можете стилизовать якорь как гибкий элемент. Это особенно полезно для динамически размерных / упорядоченных элементов списка.
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; }
(предостережение: flexboxes по-прежнему не поддерживаются. Autoprefixer к спасению!)
или вы можете использовать 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;
вы всегда можете обернуть весь тег li с помощью тега hiperlink Вот мое решение:
#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; text-align: center; float: left; width: 40px; 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> <a href="#"><li>One1</li></a> <a href="#"><li>Two</li></a> <a href="#"><li>Three</li></a> <a href="#"><li>Four</li></a> </ul> </div> <div> <h2>Heading</h2> </div>