Выпадающее меню CSS при наведении мерцает при загрузке или обновлении страницы

#html #css #dropdown #flicker

#HTML #css #выпадающий #мерцание

Вопрос:

Я изучаю HTML и CSS, и я пытался создать кнопку меню с выпадающим списком других пунктов меню, отображаемых при наведении. Он работает нормально, но есть одна вещь, которая, на мой взгляд, неверна. И это факт, что это выпадающее меню отображается на полсекунды после каждой перезагрузки / обновления страницы. Может кто-нибудь, пожалуйста, помочь и проверить, что не так в коде, который я пытался использовать?

Заранее большое вам спасибо. Ниже приведен мой код HTML и CSS.

 body{
  background-color: tomato;
  height: 100vh;
}

.wrapper{
  width: 80%;
  margin: 0 auto;
}

.logo{
  float:left;
  font-family: arial;
}

.logo h2{
  color:#fff;s
}

.menu_button{
  background-color: transparent;
  color:#fff;
  padding:15px;
  font-size:15px;
  cursor: pointer;
  border: 1px solid #fff;
  width: 100px;
}

.right_menu{
  position:relative;
  display: inline-block;
  float: right;
}

.dropdown_menu{
  visibility: hidden;
  text-align: center;
  position: absolute;
  background-color: #f9f9f9;
  width: 100px;
  box-shadow: 0px 8px 16px 0 px rgba(0,0,0,0.2);
  z-index: 1;
  opacity: 0;
  transition: .3s;
}

.dropdown_menu a{
  color: black;
  padding: 12px 16px;
  text-decoration: none;
  display: block;
}

.dropdown_menu a:hover{
    background-color: #000;
    color:#fff;
    transition: .3s;
}

.right_menu:hover .dropdown_menu{
  visibility: visible;
  opacity: 1;
  transition: .4s;
}  
 <!DOCTYPE html>
<html lang="cs" dir="ltr">
  <head>
    <title>Hello world!</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <link rel="stylesheet" href="resetStyle.css">
  </head>
    <body>

      <div class="wrapper">
        <div class="logo">
          <h2>LOGO</h2>
        </div>

        <div class="right_menu">
          <button class="menu_button">Menu</button>
            <div class="dropdown_menu">
              <a href="index.html">Home</a>
              <a href="#">About us</a>
              <a href="contacts.html">Contacts</a>
            </div>
          </div>
      </div>
    </body>
</html>  

Комментарии:

1. Я не могу воспроизвести эту проблему на своей собственной машине, и я не вижу ничего плохого в коде (кроме случайного символа в конце одного из ваших правил стиля, но это не должно быть причиной). Кроме того, ваш код импортирует таблицу стилей сброса, которая, я не уверен, является частью вашего отправленного кода. (Сброс, вероятно, следует импортировать перед вашими стилями). Чтобы получить более точные ответы, вы также должны указать, в каком браузере появляется проблема.

2. Спасибо, извините за эту строку, импортирующую таблицу стилей сброса, она больше не является частью кода, у меня нет таблицы стилей сброса в моей корневой папке (это была просто старая часть кода), поэтому строка в html в настоящее время ничего не должна делать… Также извините, что не упомянул браузер, и, как я упоминал в комментарии ниже, проблема возникает только в Chrome или Microsoft Edge, Firefox и IE не мерцают…

3. Боюсь, что единственная полезная вещь, которую я могу сказать, это то, что он работает, когда я воспроизводю его на своем Mac с помощью Chrome, Firefox и Safari, и, как я уже сказал, код выглядит разумным для меня. Я бы посоветовал попробовать это на другом устройстве, если сможете.

Ответ №1:

То, что вы видите при этом мерцании, — это время, между которым браузер загрузил и отобразил HTML, а также загрузил, интерпретировал и применил CSS.

В зависимости от скорости своего компьютера пользователь может видеть или не видеть тот же артефакт, который вы описываете.

Комментарии:

1. Спасибо вам обоим. Сейчас я работаю на своем игровом ПК, который работает достаточно быстро, поэтому скорость Интернета или ПК не должна быть проблемой. Извините, я забыл упомянуть браузер… На самом деле, он не мерцает в Firefox и Internet Explorer, и проблема возникает при отображении страницы в Chrome или Microsoft edge.