Width 100% + px не работает

Нужна ваша помощь с кодом. У меня есть меню. Я задаю для каждого элемента меню ширину и делаю между ними отступы. Мне нужно чтобы при приведении элемент меню заполнялся цветом с отступлением, типа как на картинке. Я использую свойство: width: calc(100% + 20px);, но это не работает. Что я делаю не так ли? Спасибо

картинка

.logo_and_menu nav div {
  width: calc(100% + 20px);
  text-align: center;
  height: 45px;
  display: flex;
  justify-content: center;
  align-items: center;
  border-radius: 5px;
}

.logo_and_menu nav div:hover {
  width: calc(100% + 20px);
  background-color: #F2F3F5;
}
<div class="logo_and_menu">
  <img src="/assets/images/Canva.png">
  <nav>
    <div><a>Home</a></div>
    <div><a>Design</a></div>
    <div><a>Templates</a></div>
    <div><a>Features</a></div>
    <div><a>Learn</a></div>
    <div><a>Plans</a></div>
  </nav>


Ответы (1 шт):

Автор решения: Krovorgen

.items {
  display: flex;
  flex-direction: column;
  padding-left: 0;
}

.item {
  list-style: none;
}

.item:not(:last-child) {
  margin-bottom: 16px;
}

a {
  display: inline-block;
  width: 100%;
  text-align: center;
  padding: 8px 16px;
  background-color: #ccc;
  text-decoration: none;
  color: #181818;
}

a:hover {
  background-color: #181818;
  color: #ccc;
}
<nav class="menu">
  <ul class="items">
    <li class="item">
      <a class="link" href="#">Ссылка</a>
    </li>
    <li class="item">
      <a class="link" href="#">Ссылка</a>
    </li>
    <li class="item">
      <a class="link" href="#">Ссылка</a>
    </li>
    <li class="item">
      <a class="link" href="#">Ссылка</a>
    </li>
    <li class="item">
      <a class="link" href="#">Ссылка</a>
    </li>
  </ul>
</nav>

Если я вас правильно понял, то можно реализовать вот так

→ Ссылка