Можно ли отображать класс при наведении курсора на другой класс внутри одного и того же родителя?

Я хочу сделать ".navbar-drop" видимым (display: block) при наведении курсора на элемент с class="fas fa-bars".

Не работает:

.navbar-drop {
    display: none;
}
.navbar i:hover .navbar-drop {
    display: block;
}

Вот html:

 <div class = "navbar">
        <div class = "navbar-drop">
            <ul>
                <li><a href = "#" class = "home">Home</a></li>
                <li><a href = "#" class = "about-me">About Me</a></li>
                <li><a href = "#" class = "my-projects">My Projects</a></li>
                <li><a href = "#" class = "contact-me">Contact Me</a></li>
            </ul>
        </div>
        <i class = "fas fa-bars"></i>
    </div>

Мои извинения, если это дубликат, но я искал ответ почти полчаса и не могу найти ничего, что мог бы понять.

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
34
2

Ответы 2

вы не можете выбрать родительский элемент, вам нужно соблюдать правила селектора css. для этого случая правильно это:

.navbar:hover .navbar-drop {
    display: block;
}

то есть при наведении курсора на тег .navbar вы установите блок отображения в своих дочерних элементах. .navar-drop невозможно выбрать родительский элемент или что-то, что невозможно с помощью правил выбора CSS

Я понял, спасибо <3

MoreeZ 18.02.2019 14:45

Нет, я не думаю, что это возможно в CSS, но возможно с jQuery.

Я бы исправил это, используя этот бит jQuery

  $( ".navbar i" ).hover(
  function() {
    $( ".navbar-drop" ).css( "display", "block" );
  }, function() {
    $( ".navbar-drop" ).css( "display", "none" );
  }
);

Надеюсь это поможет :)

ОТРЕДАКТИРОВАНО:

Это также возможно в простом JavaScript, как показано ниже.

var hoverPoint = document.getElementsByClassName("fas")[0];
var endPoint = document.getElementsByClassName("navbar-drop")[0];

hoverPoint.addEventListener('mouseover', function() {
   endPoint.classList.add('hovered');
});

hoverPoint.addEventListener('mouseout', function() {
    endPoint.classList.remove('hovered');
});

А затем скопируйте это в свой CSS :-)

.navbar-drop.hovered {
display: block;
}
.navbar-drop {
display: none;
}

Спасибо, есть ли способ сделать это без импорта всей библиотеки? например .addEventListener('mouseover', ... просто не уверен, как закрыть его после

MoreeZ 18.02.2019 14:44

@MoreeZ отредактировал мой ответ, надеюсь, это поможет :)

user11055071 18.02.2019 15:00

Другие вопросы по теме