Задать вопрос
@Diesel-nick

CSS Sidebar — как сохранить вид дерева и сделать выделение всей строки (без учёта отступа)?

Как сделать сад бар в виде дерева с (т.е. меню потомков должно отступать от края на большее расстояние чем родитель) и при этом при a:hover выделять всю строку (а не ту часть где начинается <a>)

Пример на jsfiddle.net

d65a4849556144d3a46a658c6785bf27.png
<span>Sidebar</span>
<div id="sidebar">
  <ul>
    <li class="nav-item">
      <a href="#" class="nav-link">One item</a>
    </li>
    <li class="nav-item">
      <a href="#" class="nav-link">Two item</a>
    </li>
    <ul class="submenu">
      <li class="nav-item">
        <a href="#" class="nav-link">Submenu one item</a>
      </li>
      <ul class="submenu">
        <li class="nav-item">
          <a href="#" class="nav-link">Submenu one item</a>
        </li>
        <li class="nav-item">
          <a href="#" class="nav-link">Submenu two item</a>
        </li>
      </ul>
      <li class="nav-item">
        <a href="#" class="nav-link">Submenu two item</a>
      </li>
    </ul>
  </ul>
</div>


#sidebar {
  background: #e8e8ee;
  width: 300px;
  ul {
    list-style: none;
  }
  .nav-link {
    display: block;
    line-height: 40px;
    text-decoration: none;
    &:hover {
      background: green;
    }
  }
}
  • Вопрос задан
  • 292 просмотра
Подписаться 1 Оценить 3 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Профессиональная вёрстка на HTML и CSS
    3 месяца
    Далее
  • Skillbox
    Веб-вёрстка 3.0
    3 месяца
    Далее
  • OTUS
    HTML/CSS
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 2
@artem_music
Можно попробовать псевдоэлементами
ul{
padding-left:20px;
}
li{
position:relative;
}
a:hover:after{
content:'';
position:absolute;
left:0;
top:0;
width:100%;
height:100%;
background:green;
}
Ответ написан
Ankhena
@Ankhena Куратор тега CSS
Нежно люблю верстку
:hover применять не к ссылке, а к li
у ссылок увеличивать отступ, у li - нет.

Если количество уровней вложенности известное, то стилями.
Если нет, то придется считать, например js'ом.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
FoodSoul Калининград
от 180 000 до 250 000 ₽
Data Directs Тель-Авив
от 350 000 ₽