【问题标题】:Stop CSS dropdown Menu stretching the navigation bar's height?停止CSS下拉菜单拉伸导航栏的高度?
【发布时间】:2016-03-14 14:22:45
【问题描述】:

我正在尝试在我的导航栏中创建一个 CSS 下拉菜单,当用户将鼠标悬停在设置图标上时会显示该下拉菜单。

但是,当用户将鼠标悬停在设置图标上时,下拉菜单会拉伸导航栏的高度。我想解决这个问题,因为我不希望下拉菜单对导航栏的高度产生任何影响。目前,使用 z-index 也不会弹出下拉菜单。下面的例子:

悬停前 - http://imgur.com/SNyEPYp

悬停期间 - http://imgur.com/DJD55nu

(黑线是导航栏的底部)

任何帮助都会很棒 - 谢谢!!

application.html.erb

<ul class="navigation-bar">

  <div class="navigation-bar-right-inset">

    <li class="navigation-bar-right"> <span class="settings"> <a href="#"> <img class="#" src="/assets/settings.svg"> </a> </span>
      <ul class="dropdown">
        <li> <%= link_to "sign out", destroy_user_session_url, method: :delete %> </li>
        <li> <%= link_to "profile", edit_user_registration_path %> </li>
      </ul>
    </li>

  </div>

</ul>

CSS 样式表

.navigation-bar {
  width: 100%;
  top: 0;
  position: fixed;
  z-index: 1050;
  list-style-type: none;
  overflow: hidden;
  background-color: rgb(251,251,251); 
  border-bottom: 1px solid #FFF;
}

.navigation-bar-right-inset { margin-right: 9%; }

.navigation-bar-right { float: right; }

.navigation-bar-right .settings img { 
  height: 65px; 
  margin-top: -5px;
  opacity: 0.3;
}

.navigation-bar-right .settings img:hover { opacity: 0.5 }

ul li .dropdown {
  display: none;
  position: relative;
  width: auto;
}

ul li:hover .dropdown { display:block }

【问题讨论】:

  • 我从未在
      中看到过 div,但无论如何...我认为您不需要 float-right 属性,因为您的
    • 项目已经在包装 div 中。尝试将您的
    • 元素设置为position:absolute,以便它们拥有自己的堆叠上下文并从
        容器中弹出。
  • 在您的导航栏中添加max-height
  • 感谢您的所有反馈 - 非常感谢!

标签: jquery html css ruby-on-rails-4


【解决方案1】:

这个怎么样:

ul li .dropdown {
 display: none;
 position: absolute;
 width: auto;
 top: 50px; //amend as needed 
 right: 0; // amend as needed
}

还从.navigation-bar 中删除了overflow:hidden,因为它隐藏了下拉菜单。

https://jsfiddle.net/8nmtbv5g/

【讨论】:

    【解决方案2】:

    请使用这个 CSS

        ul li .dropdown {
      display: none;
      position: fixed;
      z-index:100;
      width: auto;
      background-color: rgb(231,231,231);
    }
    
    
    
      .navigation-bar {
      width: 100%;
      top: 0;
      position: fixed;
      z-index: 90; //--- must be lower than ul li .dropdown 
      list-style-type: none;
      overflow: hidden;
      background-color: rgb(251,251,251); 
      border-bottom: 1px solid #FFF;
    }
    

    【讨论】:

    • 您好 kkjoshi - 感谢您的回复!不幸的是,虽然这会阻止导航栏的高度拉伸,但它也会隐藏下拉菜单 - Example
    • z-index:100; // ---in ul li .dropdown 并检查
    • 父容器(.navigation-bar)的z-index属性必须低于子容器,所以相应地调整它
    • 感谢您的更新!但是,这并没有解决问题。奇怪
    猜你喜欢
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多