首页 > 解决方案 > 为什么我的按钮下拉菜单在我没有直接悬停的情况下被激活?

问题描述

我基本上创建了一个网格,并在其中一个网格元素内放置了一个按钮,只要我将鼠标悬停在网格中就会激活该按钮。我对网格布局和一般的 Web 开发非常陌生,我并不完全理解这些是如何工作的。

我考虑过的一个想法是将网格分成更小的部分,但我正在努力加载这些部分,因为某些组合grid-template-areas不起作用。在我解决这个问题之前,我应该决定自己使用 flexbox 来解决这个问题吗?

网格的重点不是在一个盒子里有多个元素吗?这似乎是自然的方式。

相关代码如下:

在此处输入图像描述

.item1 {
  grid-area: header;
}

.item2 {
  grid-area: menu;
}

.item3 {
  grid-area: main;
}

.item4 {
  grid-area: right;
}

.item5 {
  grid-area: footer;
}

.item6 {
  grid-area: footer2;
}

.item7 {
  grid-area: footer3;
}

.grid-container {
  display: grid;
  grid-template-areas: 'header header header header header header' 'menu main main main right right' 'menu footer footer footer footer footer' 'menu footer2 footer2 footer2 footer2 footer2' 'menu footer3 footer3 footer3 footer3 footer3';
  grid-gap: 20px;
  background-color: #2196F3;
  padding: 20px;
  padding-bottom: 250px;
  margin-bottom: 120px;
}

.grid-container>div {
  background-color: rgba(255, 255, 255, 0.8);
  text-align: center;
  padding: 20px 0;
  font-size: 30px;
}


/* Style The Dropdown Button */

.dropbtn {
  margin-right: 1700px;
  display: block;
  background-color: rgb(20, 149, 255);
  color: white;
  padding: 16px;
  font-size: 16px;
  border: none;
  cursor: pointer;
}


/* Dropdown button */

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


/* Dropdown Content (Hidden by Default) */

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


/* Links inside the dropdown */

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


/* Change color of dropdown links on hover */

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


/* Show the dropdown menu on hover */

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


/* Change the background color of the dropdown button when the dropdown content is shown */

.dropdown:hover .dropbtn {
  background-color: rgb(20, 149, 255);
}


/* Dropdown button ends here */
<div class="header">
  <h1 class="titleText">Shopping Project</h1>
  <div class="topnav">
    <form class="example" action="/action_page.php">
      <input type="text" placeholder="Search.." name="search">
      <button type="submit"><i class="fa fa-search"></i></button>
    </form>
  </div>
</div>
<br>
<br>
<div class="grid-container">
  <div class="item1">
    <div class="dropdown">
      <button class="dropbtn">Dropdown</button>
      <div class="dropdown-content">
        <a href="#">Link 1</a>
        <a href="#">Link 2</a>
        <a href="#">Link 3</a>
      </div>
    </div>
  </div>
  <div class="item2">Menu</div>
  <div class="item3">Main</div>
  <div class="item4">Right</div>
  <div class="item5">Footer</div>
  <div class="item6">Footer</div>
  <div class="item7">Footer</div>
</div>

标签: htmlcsswebstyling

解决方案


您需要在按钮上添加悬停而不是下拉

删除了这个

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

添加这个

button.dropbtn:hover + .dropdown-content {
   display: block;
}

推荐阅读