У меня есть серия вложенных элементов ul
и li
для создания навигационной системы на боковой панели. Когда пользователь наводит курсор на один из элементов li
, я хочу изменить всю ширину фона (показано справа), а не только внутреннюю часть контейнера (показано слева).
![Different hover styles](https://i.stack.imgur.com/RiVzm.png)
Проблема, с которой я столкнулся, заключается в том, что для того, чтобы изменить ширину целиком, мне нужно удалить ul
padding-left
, который затем удаляет отступ и «вложенный» вид элементы списка.
Пример ниже показывает поведение, присутствующее в настоящее время, где background-color
не изменяется для всей ширины. Желательно, чтобы мне не приходилось вручную добавлять отступы для каждого элемента, поскольку вложенные отступы работают довольно хорошо, как есть, но открыты для предложений: D
* {
box-sizing: border-box;
}
nav {
width: 100px;
background-color: lightgrey;
}
li {
list-style: none;
}
ul {
padding-left: 10px;
}
a {
color: black;
text-decoration: none;
padding: 5px;
display: inline-block;
width: 100%;
}
a:hover {
background-color: grey;
color: white;
}
<nav>
<ul>
<li><a href='#'>Home</a></li>
<li><a href='#'>Work</a></li>
<ul>
<li><a href='#'>Piece 1</a></li>
<li><a href='#'>Piece 2</a></li>
</ul>
<li><a href='#'>Contact</a></li>
</ul>
</nav>
Мои вопросы :
Как сделать фон всей ширины li
обновление при наведении, без удаления отступа для вложенных элементов списка.
Почему элементы width: 100%
li
не выходят за пределы навигационной панели? Поскольку я думал, что width: 100%
означало, что их ширина была такой же, как ширина их родителей, что, разумеется, с отступом означало бы, что они будут простираться за пределы.
Спасибо!