【问题标题】:Second level menu is not opening only in safari二级菜单不仅在 Safari 中打开
【发布时间】:2018-06-21 17:57:19
【问题描述】:

我只在 Safari 中遇到了二级菜单的问题。顶级和子菜单在 chrome、firefox 等上鼠标悬停时工作正常,但在 Safari 中打开时,只有第一个菜单在悬停时打开。我已经在这里和其他论坛上尝试过其他可用的解决方案,但它仍然是一样的。

.nav {
    margin: 2% 10% 0 35%;
    /*margin-bottom: 4px;
    margin-top: 2%;
    margin-left: 35%;
    margin-right: 10%;*/
    width: 60%;
    height: auto;
    z-index: 1;
    position: absolute;
}

.nav-container {
    display: inline-block;
    padding: 0;
    font-weight: 300;
    font-family:"Open Sans";
    font-size: 15px;
}

.nav-container a:hover {
    color: #FFFFFF;
}

.nav-pos {
    display: inline-block;
    padding-bottom: 15px;
}

.nav-pos-sp {
    /*padding-left: 30px;*/
    padding-left: 0px !important;
    margin-left: 30px;
}

.navbar-nav {
    margin-top: 1%;
    display: none;
    height: auto;
    color: #C7C7C7;
    width: 200px;
    overflow: hidden;
    position: fixed;
}

.navbar-nav-menu a {
    font-size: 14px;
    display: block;
    text-align: left;
    padding: 15px 0px 15px 12px;
    border-bottom: thin solid #fff;
    background-color: #343434;
}

/* child menu dropdown */
.navbar-nav-child {
    display: none;
    height: auto;
    color: #C7C7C7;
    width: 200px;
    overflow: hidden;
    position: fixed;
    margin-left: -200px;
    margin-top: -50px;
}

.navbar-nav-menu-item-101a:hover .navbar-nav-child {
        margin-left: 200px !important;
        display: block !important;
}

.navbar-nav-menu-child-text a {
        font-size: 14px;
        display: block;
        text-align: left;
        padding: 15px 0px 15px 12px;
        border-bottom: thin solid #fff;
        background-color: #2B2B2B;
}

.services:hover .navbar-nav-menu {
        display: block;
}
<html>
<head>
    <link rel="stylesheet" href="../style/all.css.cf.css" type="text/css"/>
    <link rel="stylesheet" type="text/css"
          href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/>
</head>
<body>

<div class="nav">
    <div class="nav-container">
        <div class="nav-pos nav-pos-sp services">
            <a href="#0" target="_blank">First Menu <span class="fa fa-angle-down"></span></a>
            <div class="navbar-nav navbar-nav-menu navbar-nav-services">
                <ul>
                    <li class="navbar-nav-menu-item-101a"><a href="#0">Second Level Menu <span class="fa fa-angle-right"
                                                                                                                                                          style="float: right;margin-right: 10px;"></span></a>
                        <div class="navbar-nav-child navbar-nav-menu-child-text">

                            <a href="#0" target="_blank">1</a>
                            <a href="#0" target="_blank">2</a>
                            <a href="#0" target="_blank">3</a>
                        </div>
                    </li>
                </ul>
            </div>
        </div>
    </div>
</div>
</body>
</html>

我已经包含了菜单的 HTML 和 CSS 代码。我还使用 windows 操作系统在 chrome 上检查过它,它可以工作,但唯一的问题是 safari 浏览器。

【问题讨论】:

    标签: html css safari


    【解决方案1】:

    我有一些建议可能会有所帮助。

    首先,我不建议使用position: fixed; 来定位您的子菜单,因为fixed 是相对于浏览器窗口的位置。您可能希望子菜单根据父级而不是窗口定位。

    其次,您在.navbar-nav 上有overflow: hidden;,这意味着超出其边界的任何内容都应该是不可见的——包括您的子菜单。

    这是一个 JSFiddle,其中包含我的建议、测试和在 Safari 中工作的 sn-p 工作示例:

    .nav {
      margin: 2% 10% 0 35%;
      width: 60%;
      height: auto;
      z-index: 1;
      position: absolute;
    }
    
    .nav-container {
      display: inline-block;
      padding: 0;
      font-weight: 300;
      font-family: "Open Sans";
      font-size: 15px;
    }
    
    .nav-container a:hover {
      color: #FFFFFF;
    }
    
    .nav-pos {
      display: inline-block;
      padding-bottom: 15px;
    }
    
    .nav-pos-sp {}
    
    .navbar-nav {
      margin-top: 1%;
      display: none;
      height: auto;
      color: #C7C7C7;
      width: 200px;
      position: relative;
    }
    
    .navbar-nav-menu a {
      font-size: 14px;
      display: block;
      text-align: left;
      padding: 15px 0px 15px 12px;
      border-bottom: thin solid #fff;
      background-color: #343434;
    }
    
    /* child menu dropdown */
    
    .navbar-nav-child {
      display: none;
      height: auto;
      color: #C7C7C7;
      width: 200px;
      position: absolute;
      top: 0;
      left: 100%;
    }
    
    .navbar-nav-menu-item-101a:hover .navbar-nav-child {
      display: block !important;
    }
    
    .navbar-nav-menu-child-text a {
      font-size: 14px;
      display: block;
      text-align: left;
      padding: 15px 0px 15px 12px;
      border-bottom: thin solid #fff;
      background-color: #2B2B2B;
    }
    
    .services:hover .navbar-nav-menu {
      display: block;
    }
    <html>
    
      <head>
        <link rel="stylesheet" href="../style/all.css.cf.css" type="text/css" />
        <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" />
      </head>
    
      <body>
    
        <div class="nav">
          <div class="nav-container">
            <div class="nav-pos nav-pos-sp services">
              <a href="#0" target="_blank">First Menu <span class="fa fa-angle-down"></span></a>
              <div class="navbar-nav navbar-nav-menu navbar-nav-services">
                <ul>
                  <li class="navbar-nav-menu-item-101a"><a href="#0">Second Level Menu <span class="fa fa-angle-right"
                                                                                                                                                              style="float: right;margin-right: 10px;"></span></a>
                    <div class="navbar-nav-child navbar-nav-menu-child-text">
    
                      <a href="#0" target="_blank">1</a>
                      <a href="#0" target="_blank">2</a>
                      <a href="#0" target="_blank">3</a>
                    </div>
                  </li>
                </ul>
              </div>
            </div>
          </div>
        </div>
      </body>
    
    </html>

    https://jsfiddle.net/m59vk802/4/

    【讨论】:

    • 谢谢,我已经尝试过了,但它在 safari 上仍然相同,但是当我将 navbar-nav 的位置从固定更改为相对位置时,然后在子菜单变得可见时在 chrome 上显示另一个菜单第一个菜单改变他们的位置。我尝试在 jsfiddle 上进行这些更改并且它可以工作,但是当再次在 webstorm 上进行这些更改并在 safari 上打开文件时,它仍然保持不变。
    • @Nix 您是否签入并确保未缓存旧代码并且已加载更改?你有我们可以看到的实时网址吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 2021-08-09
    • 1970-01-01
    • 2013-07-21
    • 2013-02-25
    • 1970-01-01
    相关资源
    最近更新 更多