Сохраняет цвет раскрывающейся ссылки bootstrap 4 при открытии при наведении - PullRequest
1 голос
/ 10 апреля 2020

Я использую bootstrap 4 для разработки меню с пунктами выпадающего меню. При наведении курсора цвет фона раскрывающейся ссылки изменяется и раскрывающийся список открывается. Когда я перемещаю мышь вниз, чтобы выбрать один из выпадающих элементов, цвет раскрывающейся ссылки возвращается к своему первоначальному цвету. Мне бы хотелось, чтобы цвет при наведении сохранялся, пока раскрывающийся список открыт.

body {
  background-color: #091230;
}

.dropdown:hover .dropdown-menu {
  display: block;
}

.navbar-nav>li {
  margin-left: 10px;
  margin-right: 10px;
}

nav .navbar-nav li>a {
  color: white !important;
  -moz-border-radius: 0px;
  -webkit-border-radius: 5px 5px 0px 0px;
  border-radius: 5px 5px 0px 0px;
}

nav .navbar-nav li>a:hover {
  background-color: grey;
}

.navbar .dropdown-menu {
  background-color: grey;
  margin: 0;
  -moz-border-radius: 0px;
  -webkit-border-radius: 0px 5px 5px 5px;
  border-radius: 0px 5px 5px 5px;
  border-top-color: #343A40 !important;
}

.dropdown div {
  border-color: grey !important;
}

.navbar .dropdown-menu a {
  color: white !important;
}

.dropdown-item:hover {
  background-color: #343A40 !important;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" />
<nav class="navbar navbar-expand navbar-dark bg-dark">


  <ul class="navbar-nav">
    <li class="nav-item dropdown">
      <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
          Dropdown
        </a>
      <div class="dropdown-menu" aria-labelledby="navbarDropdown">
        <a class="dropdown-item" href="#">Item 1</a>
        <a class="dropdown-item" href="#">Item 2</a>
        <a class="dropdown-item" href="#">Item 3</a>
        <a class="dropdown-item" href="#">Item 4</a>
      </div>
    </li>
  </ul>

</nav>

1 Ответ

0 голосов
/ 10 апреля 2020

Чтобы сделать это по мере необходимости, переместите состояние :hover из a в li:

nav .navbar-nav li:hover > a {
  background-color: grey;
}

Также обратите внимание, что по возможности следует избегать использования !important. Лучше переопределить существующие правила стиля, сделав ваши селекторы более точными c. Вот полный рабочий пример:

body {
  background-color: #091230;
}

.dropdown:hover .dropdown-menu {
  display: block;
}

.navbar-nav>li {
  margin-left: 10px;
  margin-right: 10px;
}

#container nav .navbar-nav li>a {
  color: white;
  border-radius: 5px 5px 0px 0px;
}

nav .navbar-nav li:hover>a {
  background-color: grey;
}

#container .navbar .dropdown-menu {
  background-color: grey;
  margin: 0;
  border-radius: 0px 5px 5px 5px;
  border-top-color: #343A40;
}

#container .dropdown div {
  border-color: grey;
}

#container .navbar .dropdown-menu a {
  color: white;
}

#container .dropdown-item:hover {
  background-color: #343A40;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" />
<div id="container">
  <nav class="navbar navbar-expand navbar-dark bg-dark">
    <ul class="navbar-nav">
      <li class="nav-item dropdown">
        <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dropdown</a>
        <div class="dropdown-menu" aria-labelledby="navbarDropdown">
          <a class="dropdown-item" href="#">Item 1</a>
          <a class="dropdown-item" href="#">Item 2</a>
          <a class="dropdown-item" href="#">Item 3</a>
          <a class="dropdown-item" href="#">Item 4</a>
        </div>
      </li>
    </ul>
  </nav>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...