如何实现这个菜单布局?全高边框和下拉菜单与菜单边框底部正确对齐?

Posted

技术标签:

【中文标题】如何实现这个菜单布局?全高边框和下拉菜单与菜单边框底部正确对齐?【英文标题】:How to achieve this menu layout? With full-height borders and the dropdown-menu properly aligned with the menu border bottom? 【发布时间】:2018-01-07 19:54:39 【问题描述】:

我想要一个如下所示的菜单,其中:

菜单的border-bottom紧挨着橙色背景,没有任何空白,并且这个border-bottom占据了全角,左右两边都没有空白

徽标右侧有一个全高边框,并且每个菜单项也有 全高边框

此外,我希望具有下拉菜单的“项目”在打开时与导航栏的灰色边框底部对齐。

对于我使用下面的代码,但我没有实现这个布局,我有一个工作示例,布局我得到“http://jsfiddle.net/4606qqux/”。你知道如何修复代码来实现上述布局吗?

HTML:

<div class="container-fluid px-0">
  <nav class="navbar navbar-expand-md navbar-light">
    <a href="#">Logo</a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#main_nav" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="menu_container">
      <div class="collapse navbar-collapse" id="main_nav">
        <ul class="navbar-nav ml-auto d-flex align-items-lg-center">
          <li class="nav-item">
            <a class="nav-link" href="#">Item 0</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Item 1</a>
          </li>
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="userDropdown"  data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
              <i class="fa fa-user" aria-hidden="true"></i> Jan
            </a>
            <div class="dropdown-menu" aria-labelledby="userDropdown">
              <a class="dropdown-item" href="#">Edit Profile</a>
              <div class="dropdown-divider"></div>
              <a class="dropdown-item" href="#">logout</a>
            </div>
          </li>
        </ul>
      </div>
    </div>
  </nav>
</div>

CSS

.menu_container 
  position: relative;
  width: 100%;
  border-bottom:1px solid gray;


div.dropdown-menu 
  left: auto;
  right: 0;


section 
  background-color: orange;
  height: 300px;
  width: 100%;


.nav-item 
  border-left: 1px solid gray;


.navbar
  border-right: 1px solid gray;

.logo
  border-right:1px solid gray;

【问题讨论】:

你的边框宽度是多少? 我使用 1px 的边框。 【参考方案1】:

据我了解,这就是你所追求的:

.logo 
  border-right:1px solid gray;
  height: 40px;
  border-bottom: 1px solid gray;
  padding-left: 20px;
  padding-right: 20px;
  line-height: 40px;

.dropdown-menu 
  border-radius: 0;
  border: 1px solid gray;
  margin-top: 0;

这是更新后的小提琴: http://jsfiddle.net/4606qqux/1/

这是一个更加更新的小提琴,顶部导航元素周围没有填充: http://jsfiddle.net/4606qqux/2/

【讨论】:

谢谢。但它不相等,例如在图像中,菜单的灰色边框底部紧挨着/粘在橙色背景上,没有任何空白。并且图像中的这个边框底部占据了整个宽度,左右没有空白。此外,标志和菜单项的边框没有像图片那样全高,菜单项上方有一些空白。 从第一个开始的线程怎么能理解你刚才说的?请更新初始线程,我会帮助您。

以上是关于如何实现这个菜单布局?全高边框和下拉菜单与菜单边框底部正确对齐?的主要内容,如果未能解决你的问题,请参考以下文章

如何制作带有圆角边框的选择下拉菜单?

下拉菜单边框

jquery下拉菜单瞬间闪烁

无法从 Firefox 选择下拉菜单中删除轮廓/虚线边框 [重复]

我的 CSS 下拉菜单和右边框之间有一个空格。如何删除它?

vue最多显示2个按钮,超出的用下拉菜单显示