Выпадающее меню без использования списка

Я просто играю с некоторым кодом и пытаюсь создать раскрывающееся меню без использования списка.

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

У меня скрыта видимость в раскрывающемся классе, а видимость установлена ​​на видимость при наведении, но она не отображается. Если я установлю видимость в раскрывающемся классе, он отображается, значит, это должно быть как-то связано с моим наведением?

* {
  margin: 0;
  padding: 0;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

body {
  display: grid;
  margin: 0px;
  grid-gap: 0px;
  grid-template-columns: 1fr;
  grid-template-rows: 70px calc(100vh - 70px);
}

.header {
  background: red;
  display: grid;
}

.header--container {
  width: 1160px;
  justify-self: center;
  display: grid;
  grid-column: 1;
  grid-row: 1;
  grid-auto-flow: column;
}

.header--container span:first-child {
  background: purple;
  display: grid;
  grid-auto-flow: column;
  justify-items: left;
  display: grid;
  align-items: center;
}

.header--container nav {
  background: black;
  display: grid;
  grid-auto-flow: column;
  justify-items: center;
  display: grid;
  align-items: center;
}

.header--container span:last-child {
  background: yellow;
  display: grid;
  grid-auto-flow: column;
  justify-items: right;
  display: grid;
  align-items: center;
}

.hero {
  background: blue;
  display: grid;
}

.hero--container {
  width: 1160px;
  justify-self: center;
  background: pink;
}

.site-navigation .menu-item {
  color: #fff;
  background: #3498db;
  display: block;
}

.site-navigation .menu-item a {
  color: #fff;
  text-decoration: none;
  display: block;
}

.site-navigation .menu-item:hover {
  background: #52a6df;
  cursor: pointer;
}

.dropdown {
  background: #52a6df;
  visibility: hidden;
  position: absolute;
  transition: visibility 0.65s ease-in;
  z-index: 999;
}

a:hover>.dropdown,
a .dropdown:hover {
  visibility: visible;
  z-index: 9999;
}
<div class = "header">
  <div class = "header--container">
    <span>
      <a href = ""><img src = "imgs/ID_Logo_Websitesmall.jpg" alt = "logo" height = "50px"></a>
    </span>
    <nav id = "navigation" class = "site-navigation" role = "navigation">
      <a href = "#" class = "menu-item">News</a>
      <a href = "#" class = "menu-item">Snippets
        <div class = "dropdown">
          <a href = "#"class = "menu-item sub-menu">CSS</a>
          <a href = "#" class = "menu-item sub-menu">HTML</a>
          <a href = "#" class = "menu-item sub-menu">jQuery</a>
          <a href = "#" class = "menu-item sub-menu">PHP</a>
          <a href = "#" class = "menu-item sub-menu">WordPress</a>
        </div>
      </a>
      <a href = "#" class = "menu-item">Inspiration</a>
      <a href = "#" class = "menu-item">Tools</a>
      <a href = "#" class = "menu-item">Tutorials</a>
    </nav>
    <span>
      <a href = "">01442 817767</a>
    </span>
  </div>
</div>
<div class = "hero">
  <div class = "hero--container">cd</div>
</div>

Я, честно говоря, не знаю почему, но я протестировал это в Firefox и обнаружил, что это работает, если вы используете .menu-item:hover>.dropdown, .menu-item .dropdown:hover { вместо a:hover>.dropdown, a .dropdown:hover { Я, вероятно, упускаю из виду что-то очевидное.

Amunium 26.04.2019 10:55
Улучшение производительности загрузки с помощью 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 страниц, которые помогут...
1
1
480
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Тег привязки внутри другого имеет недопустимый синтаксис — при осмотре вы можете видеть, что div dropdown перемещается и занимает место в качестве следующего родственного элемента. Измените теги a на span — см. демонстрацию ниже:

* {
  margin: 0;
  padding: 0;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

body {
  display: grid;
  margin: 0px;
  grid-gap: 0px;
  grid-template-columns: 1fr;
  grid-template-rows: 70px calc(100vh - 70px);
}

.header {
  background: red;
  display: grid;
}

.header--container {
  width: 1160px;
  justify-self: center;
  display: grid;
  grid-column: 1;
  grid-row: 1;
  grid-auto-flow: column;
}

.header--container span:first-child {
  background: purple;
  display: grid;
  grid-auto-flow: column;
  justify-items: left;
  display: grid;
  align-items: center;
}

.header--container nav {
  background: black;
  display: grid;
  grid-auto-flow: column;
  justify-items: center;
  display: grid;
  align-items: center;
}

.header--container span:last-child {
  background: yellow;
  display: grid;
  grid-auto-flow: column;
  justify-items: right;
  display: grid;
  align-items: center;
}

.hero {
  background: blue;
  display: grid;
}

.hero--container {
  width: 1160px;
  justify-self: center;
  background: pink;
}

.site-navigation .menu-item {
  color: #fff;
  background: #3498db;
  display: block;
}

.site-navigation .menu-item a {
  color: #fff;
  text-decoration: none;
  display: block;
}

.site-navigation .menu-item:hover {
  background: #52a6df;
  cursor: pointer;
}

.dropdown {
  background: #52a6df;
  visibility: hidden;
  position: absolute;
  transition: visibility 0.65s ease-in;
  z-index: 999;
}

a:hover>.dropdown,
a .dropdown:hover {
  visibility: visible;
  z-index: 9999;
}
<div class = "header">
  <div class = "header--container">
    <span><a href = ""><img src = "https://via.placeholder.com/100" alt = "logo" height = "50px"></a></span>
    <nav id = "navigation" class = "site-navigation" role = "navigation">
      <a href = "#" class = "menu-item">News</a>
      <a href = "#" class = "menu-item">Snippets
        <div class = "dropdown">
          <span href = "#"class = "menu-item sub-menu">CSS</span>
          <span href = "#" class = "menu-item sub-menu">HTML</span>
          <span href = "#" class = "menu-item sub-menu">jQuery</span>
          <span href = "#" class = "menu-item sub-menu">PHP</span>
          <span href = "#" class = "menu-item sub-menu">WordPress</span>
        </div>
      </a>
      <a href = "#" class = "menu-item">Inspiration</a>
      <a href = "#" class = "menu-item">Tools</a>
      <a href = "#" class = "menu-item">Tutorials</a>
    </nav>
    <span><a href = "">01442 817767</a></span>
  </div>
</div>
<div class = "hero">
  <div class = "hero--container">cd</div>
</div>

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