【问题标题】:Hover not working properly on topnav (CSS)悬停在 topnav (CSS) 上无法正常工作
【发布时间】:2023-04-05 11:43:01
【问题描述】:

我的 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>

【问题讨论】:

    标签: html css hover


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      更改您的代码
              #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";
               }
      

      现在您可以悬停导航。

      【讨论】:

        【解决方案3】:

        两个快速和懒惰的解决方案是将以下内容添加到#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 并更轻松地查看正在发生的事情。

        【讨论】:

        • 谢谢!那个 chrome 扩展非常有用,我不知道,你的解释是 100% 清楚的。
        • 不客气!我几乎每天都使用农药。希望你和我一样觉得它有帮助。
        猜你喜欢
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-18
        • 2019-05-20
        • 2016-04-27
        • 2015-12-14
        • 2012-07-27
        相关资源
        最近更新 更多