悬停在顶部导航上无法正常工作 (CSS)

Hover not working properly on topnav (CSS)

我在 HTML 文件中遇到问题。我是 HTML 的新手,当我为我的静态网站 here 制作顶部栏时,我尝试向其添加悬停,但它无法正常工作,只能在“搜索”和“购物车”按钮(它也可以用于“联系我们”,但仅限于右侧)。

所以,我不确定为什么悬停在所有按钮上都不起作用,即使乍一看顶部栏看起来不错。我是否覆盖了我不应该做的事情?这让我很困惑。这是代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #topBox {
            height: 250px;
            margin-top:-50px;
            margin-left: auto;
            margin-right: auto;
            background: #cbe9f3;
            border-radius: 15px;
        }
        #container {
            margin-left: 27px;
            margin-top: 41px;
            position: fixed;
            color: white;
            font-family: "Cute Aurora Regular";
        }
        


        .topnav {
            overflow: hidden;
            font-family: "Cute Aurora Regular";
            background-color: transparent;
            border: #c9c7c7 0.1px solid;
            margin-top: 5px;
            margin-left: auto;
            margin-right: auto;            
            border-left: none; 
            border-right: none; 

            }

            .topnav a {
            float: left;
            color: #b47d50;
            text-align: center;
            margin-left: 27px;
            padding: 14px 16px;
            margin-right: -20px;
            text-decoration: none;
            font-size: 19px;
            font-weight: bold;
            }

            .topnav a:hover {
            color: #ecb2ad;
            }
            
            .topnav a.search {
                margin-left: 290px;
            }   

            .topnav a.cart {
                margin-left: 25px;
            }   

        br {
            display:none;
        }

        /* Desktop grande */
        @media (min-width: 1025px) {
            #topBox {
                width:1000px;
            }
            #container {
                font-size: 600%;
            }
            #containerBunny {
                width: 250px;
                margin-left: 550px;
                margin-top: 150px;
            }
            .topnav {
                width: 1000px;
            }

        }

        /* Desktop pequeno */
        @media (min-width: 769px) and (max-width: 1024px) {
            #topBox {
                width:750px;
            }
            #container {
                font-size: 500%;
            }
            #containerBunny {
                width: 200px;
                margin-left: 460px;
                margin-top: 170px;
            }
            .topnav {
                width: 745px;
            }
        }

        /* Tablets */
        @media (min-width: 481px) and (max-width: 768px) {

        }

        /* Mobile */
        @media (min-width: 320px) and (max-width: 480px) {
            #topBox {
                width:1000px;
            }
            #container {
                font-size: 520%;
            }
            #containerBunny {
                width: 250px;
            }
            br {
                display: block;
            }
        }

    </style>
</head>

<body>
    <div id="topBox">
        <div id="container">
            <p>Bunny <br>Shop</p>
        </div>
        <img id="containerBunny" src="images/molangMilk.png" alt="">
    </div>

        <div class="topnav">
            <a href="#home">HOME</a>
            <a href="#new">NEW</a>
            <a href="#sale">SALE</a>
            <a href="#products">PRODUCTS</a>
            <a href="#contactUs">CONTACT US</a>
            <a class="search" href="#search">SEARCH</a>
            <a class="cart" href="#cart">CART</a>
          </div>


</body>

</html>

您的 ID 为“container”的元素覆盖了您的导航按钮。这与您的悬停逻辑无关。

您需要调整布局,使容器不再位于顶部,因为鼠标事件只会传播到最顶部的元素。

假设容器用于存放“Bunny Shop”页眉。我建议调整这个元素的高度。您可能会发现它不需要使用“固定”定位,并且可以相对于它的父组件放置。相对于视口本身,Fixed 是一个绝对的元素。

由于您修复了容器,您的容器元素与顶部栏或导航项重叠。 从

更改您的代码
        #container {
            margin-left: 27px;
            margin-top: 41px;
            position: fixed; // remove it.
            color: white;
            font-family: "Cute Aurora Regular";
         }

         #container {
                margin-left: 27px;
                margin-top: 41px;
                color: white;
                font-family: "Cute Aurora Regular";
         }

现在可以悬停导航了。

两个快速而懒惰的解决方案是将以下内容添加到 #topBox div:

  1. pointer-events: none; 将允许您单击“通过”div 到导航栏
  2. height: auto; 将防止 div 与导航栏重叠

翻转未按预期工作的原因是 #container#containerBunny div 覆盖了 topnav div。

You can see the overlapping divs here

我建议添加 Pesticide Chrome 扩展以帮助可视化您的 div 并更容易查看正在发生的事情。