HTML & CSS - как создать раскрывающееся меню? - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть следующее HTML:

<div class="MenuContainer">
    <div class="Menu">
        <div class="MenuContents">
            <ul>
                <li><a id="index" href="index.html">Home</a></li>
                <li><a id="gamePage" href="gamePage.html">Game</a></li>
                <li><a id="gameDesignPage" href="gameDesignPage.html">Game Design</a></li>
                <li><a id="devRolesPage" href="devRolesPage.html">Developer Roles</a></li>
                <li class="float-right"><a id="about" href="about.html">About</a></li>
            </ul>
        </div>
    </div>
</div>

Как сделать так, чтобы элемент списка с идентификатором "gameDesignPage" имел раскрывающееся меню? Раскрывающийся список будет работать так же, как в этой ссылке : https://www.w3schools.com/css/tryit.asp?filename=trycss_dropdown_button

Я пробовал решения из других подобных вопросов переполнения стека (и ссылка сверху logi c), но они не работали правильно в моей структуре.

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Хотя на самом деле вам не нужно помещать раскрывающийся триггер в список, а затем раскрывающееся меню во вложенный список - я считаю, что лучше иметь автономный раскрывающийся компонент, созданный из вложенного скрытого списка в пределах родительский видимый список.

Вы создаете вложенный список с отображением: на нем нет, а затем при наведении на него родительского элемента li - применяйте отображение: стили блока для дочернего элемента ul. Дочерний ul может быть просто показан прямо под содержимым li (ie без стилей), но чтобы сделать это немного более сексуальным - я разработал раскрывающийся список как полностью ориентированный на следование указателю мыши на содержимое li.

Следующее позволяет видеть вложенный ul при наведении курсора на родительскую кнопку li / button * обратите внимание, что кнопка и ее стиль выведены из указанной страницы w3 - https://www.w3schools.com/css/tryit.asp?filename=trycss_dropdown_button)

Я также удалил пару слоев вложенных элементов div, которые не требуются для этого решения.

.dropbtn {
  background-color: #4CAF50;
  color: white;
  padding: 16px;
  font-size: 16px;
  border: none;
  cursor: pointer;
}

.dropdown-menu {
 list-style: none
}

.dropdown-menu-item {
 position: relative
}

.dropdown-menu-list {
 display: none;
 border: solid 1px #e1e1e1;
 background: #fff;
 position: absolute;
 left: 0;
 top: 50px;
 padding:0;
 list-style: none
}

.dropdown-menu-list-item {
 background: #fff;
 padding:  8px 16px;
}
.dropdown-menu-list-item:hover {
 background: #fafafa;
}


.dropdown-menu-list-item  a,
.dropdown-menu-list-item:hover a{
 text-decoration: none;
 display: block;
 cursor: pointer
}

.dropdown-menu:hover .dropdown-menu-list ,
.dropdown-menu-item:hover .dropdown-menu-list:hover{
 display: block;
}
<div class="menu-container">
  <ul class="dropdown-menu"> 
    <li class="dropdown-menu-item">
      <button class="dropbtn">Dropdown</button>
      <ul class="dropdown-menu-list">
        <li class="dropdown-menu-list-item"><a id="index" href="index.html">Home</a></li>
        <li class="dropdown-menu-list-item"><a id="gamePage" href="gamePage.html">Game</a></li>
        <li class="dropdown-menu-list-item"><a id="gameDesignPage" href="gameDesignPage.html">Game Design</a></li>
        <li class="dropdown-menu-list-item"><a id="devRolesPage" href="devRolesPage.html">Developer Roles</a></li>
         <li class="dropdown-menu-list-item" class="float-right"><a id="about" href="about.html">About</a></li>
       </ul>
     </li>
   </ul>    
</div>
0 голосов
/ 12 февраля 2020

Надеюсь, это то, что вы ищете.

<html>
<head>
<style>
.dropbtn {
  background-color: #4CAF50;
  color: white;
  padding: 16px;
  font-size: 16px;
  border: none;
  cursor: pointer;
}

.dropdown {
  position: relative;
  display: inline-block;
}

.dropdown-content {
  display: none;
  position: absolute;
  background-color: #f9f9f9;
  min-width: 160px;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
  z-index: 1;
}

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

.dropdown-content a:hover {background-color: #f1f1f1}

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

.dropdown:hover .dropbtn {
  background-color: #3e8e41;
}
</style>
</head>
<body>

<div class="dropdown">
  <button class="dropbtn">Dropdown</button>
  <div class="dropdown-content">
  <a href="index.html">Home</a>
  <a href="gamePage.html">Game</a>
  <a href="gameDesignPage.html">Game Design</a>
  <a href="devRolesPage.html">Developer Roles</a>
  <a href="about.html">About</a>
  </div>
</div>

</body>
</html>

Пожалуйста, проверьте ссылку ниже: https://www.w3schools.com/css/tryit.asp?filename=trycss_dropdown_button

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...