为什么悬停(hover)不起作用,样式不显示?
P粉842215006
P粉842215006 2023-08-02 20:04:07
[CSS3讨论组]

我正在设计导航条,但是我的鼠标悬停不起作用。当我悬停在“man”项目在我的下拉菜单,它的悬停样式,不工作,不显示样式在检查。有什么问题吗?这是我的HTML代码:


/* Navbar container */
 body {
     margin: 0;
     padding: 0;
     box-sizing: border-box;
 }

 li {
     text-decoration: none;
 }

 .nav-container {
     direction: rtl;
     text-align: right
 }

 .navbar {
     overflow: hidden;
     background-color: #333;
     font-family: Arial;
 }

 /* Links inside the navbar */
 .navbar a {
     float: right;
     font-size: 16px;
     color: white;
     text-align: center;
     padding: 14px 16px;
     text-decoration: none;
 }

 /* The dropdown container */
 .dropdown {
     float: right;
     overflow: hidden;
 }

 /* Dropdown button */
 .dropdown .dropbtn {
     font-size: 16px;
     border: none;
     outline: none;
     color: white;
     padding: 14px 16px;
     background-color: inherit;
     font: inherit;
     /* Important for vertical align on mobile phones */
     margin: 0;
     /* Important for vertical align on mobile phones */
 }


 /* Dropdown content (hidden by default) */
 .dropdown-content {
     display: none;
     position: absolute;
     background-color: #f9f9f9;
     width: 100%;
     left: 0;
     box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
     z-index: 1;
 }

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

.megamenu-container {
    background-color: aqua;
    width: 100%;
}

.megmenu {
    width: 100%;
}

.megamenu-title {
    width: 20%;
    background-color: blue;
    display: inline-block;
    padding: 5px 15px;
    vertical-align: top;
}

.megamenu-subitems-default {
    width: 70%;
    background-color: blueviolet;
    display: inline-block;
    padding: 15px;
}

.megamenu-item {
    float: unset !important;
    padding: 0 !important;
}

.man:hover .megamenu-subitems-default {
    visibility: hidden;
}

#subitems {
    display: inline-block;
    visibility: hidden;
    background-color: yellowgreen;
    width: 70%;
}

.man:hover #subitems {
    visibility: visible;    
}

.test {
    color: yellow;
}

.man:hover .test {
    color: wheat;
}
<!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">
      <link rel="stylesheet" href="./megamenu.css">
      <title>Document</title>
  </head>

  <body>
      <div class="nav-container">
          <div class="navbar">
              <a href="#home">Home</a>
              <a href="#news">News</a>
              <div class="dropdown">
                  <button class="dropbtn">Dropdown
                      <i class="fa fa-caret-down"></i>
                  </button>
                  <div class="dropdown-content">
                      <div class="megamenu-container">
                          <div class="megmenu">
                              <div class="megamenu-title">
                                  <ul>
                                      <li >
                                          <div class="man">
                                          <a class="megamenu-item" href="#">man</a>
                                          </div>
                                      </li>
                                      <li id="woman">
                                          <a class="megamenu-item" href="#">woman</a>
                                      </li>
                                      <li id="kid">
                                          <a class="megamenu-item" href="#">kid</a>
                                      </li>
                                  </ul>
                              </div>
                              <div class="megamenu-subitems-default">
                                  <p>hello-default</p>
                              </div>
                              <div class="megamenu-subitems-test" id="subitems">
                                  <p>hello-1</p>
                              </div>
                              <div class="megamenu-subitems">
                                  <p>hello-2</p>
                              </div>
                              <div class="megamenu-subitems">
                                  <p>hello-3</p>
                              </div>
                              <div class="megamenu-subitems">
                                  <p>hello-4</p>
                              </div>
                          </div>
                      </div>
                      <p class="test">test</p>
                  </div>
              </div>
          </div>
      </div>
  </body>
</html>


当我悬停在“man”项目在我的下拉菜单,它的悬停样式不工作,不显示样式在Inspect

P粉842215006
P粉842215006

全部回复(1)
P粉226413256

在您的CSS文件中,您有这个规则:

.man:hover #subitems {
 visibility: visible;    
}

然而,#subitems不是.man的后代。您需要将#subitems放置在与.man相同的层级上,或者作为它的后代。

这个CSS规则指定了当.hover在具有类.man的祖先之一上悬停时,具有id为#subitems的元素将变为可见;但是,在您的HTML中,.man是一个只有一个子元素.megamenu-item的div。

为了隐藏默认的子项div,请尝试替换这个选择器:

.man:hover .megamenu-subitems-default{
    visibility: hidden;
}

with:

.megamenu-title:hover ~ .megamenu-subitems-default{
    visibility: hidden;
}

对于每个菜单项的子项,我建议您要么为每个子项div提供一个唯一的ID并使用JavaScript控制它们的可见性,要么更改您的布局,使.megamenu-subitems div与li元素处于同一级别,并使用兄弟选择器,或者将它们作为li元素的后代。


热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号