css - 固定导航下拉菜单剪辑

标签 css

我正在尝试构建一个固定在屏幕顶部的响应式导航菜单。我可以让响应部分和顶级菜单工作,但是当我尝试将下拉子菜单添加到导航中时,我的菜单分崩离析。我似乎无法让子菜单扩展到它们的容器之外。每当我将定位应用于我的 ul 列表时,子菜单要么在悬停时被剪掉,要么导致容器扩展。有什么办法可以防止子菜单被剪裁并允许它们延伸到容器之外吗?谢谢。

注意:下面的代码没有将 display:none 和 hover display:block 属性应用于子菜单。

另外,我在这里和其他网站上寻找解决方案,但没有找到似乎适合我的解决方案。我试过更改定位、删除和溢出:隐藏属性,但似乎没有任何效果。

代码(http://codepen.io/noob2016/pen/eZqdMM):

.fixedheader {
  background: #f2f2f2;
  width: 100%;
  position: fixed;
  top: 0;
  z-index: 300;
  transition: box-shadow 0.2s;
}
.top-bar-scrolled {
  border-bottom: 3px solid #d5d5d5;
  box-shadow: 0 3px 3px 1px rgba(0, 0, 0, 0.4);
}
header {
  background: #003383;
  border: 6px solid orange;
}
header .mainNav {
  background: #003383;
  border: 4px solid green;
  max-width: 1140px;
  margin-left: auto;
  margin-right: auto;
}
header .mainNav:after {
  content: " ";
  display: block;
  clear: both;
}
header .mainNav .activeNavlink {
  background: #3366cc;
}
header .mainNav .topnav {
  width: 100%;
  position: relative;
  border: 2px solid red;
}
header .mainNav .topnav .icon {
  display: none;
}
header .mainNav .topnav li {
  display: inline-block;
  float: none;
}
header .mainNav .topnav li a {
  display: block;
  color: #f2f2f2;
  text-align: center;
  padding: 10px 30px;
  text-decoration: none;
  transition: .4s;
  font-size: 0.88889em;
  line-height: 1.6875em;
  color: #f2f2f2;
}
header .mainNav .topnav li a:hover {
  background: #3366cc;
}
header .mainNav li:hover ul a {
  background: #f2f2f2;
  color: #000;
  height: 40px;
  line-height: 40px;
}
header .mainNav li:hover ul a:hover {
  background: #3366cc;
  color: #f2f2f2;
}
header .mainNav .hidden li {
  display: block;
  float: none;
}
header .mainNav li ul li a {
  width: auto;
  min-width: 100px;
  padding: 0 20px;
}
<div class="fixedheader top-bar">
  <header>
    <nav class="mainNav">
      <ul class="topnav">
        <li>
          <a class="activeNavlink" href="index.html">Home</a>
        </li>
        <li>
          <a href="events.html">main</a>
        </li>
        <li>
          <a href="about.html">main 1</a>
          <ul class="hidden">
            <li><a href="#">sub 1</a></li>
            <li><a href="#">sub 2</a></li>
            <li><a href="#">sub 3</a></li>
            <li><a href="#">sub 4</a></li>
            <li><a href="#">sub 5</a></li>
          </ul>
        </li>
        <li>
          <a href="contact.html">main 2</a>
          <ul class="hidden">
            <li><a href="#">sub 1</a></li>
            <li><a href="#">sub 2</a></li>
            <li><a href="#">sub 3</a></li>
            <li><a href="#">sub 4</a></li>
            <li><a href="#">sub 5</a></li>
          </ul>
        </li>
        <li>
          <a href="contact.html">main 3</a>
        </li>
        <li>
          <a href="contact.html">main 4</a>
        </li>
        <li class="icon">
          <a href="javascript:void(0);" style="font-size:15px;"  onclick="myFunction()">☰</a>
        </li>
      </ul>
    </nav>
  </header>
</div>

最佳答案

我想通了。我将 position:relative 和 positioned:absolute 设置为错误的元素。

关于css - 固定导航下拉菜单剪辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37379130/

相关文章:

html - 浏览器忽略表格布局 :fixed

css - 最大宽度突然停止在谷歌浏览器中工作

javascript - 滚动时修复/取消修复 Div

javascript - 如何在 jquery 中附加来自不同长度列表的多个 div?

css - 重新部署 webapp 缩小后出现 404 错误(缓存)

javascript - Angular v5 问题编译 Bootstrap4 样式

javascript - HTMl CSS 下拉导航

javascript - 在搜索时从 bootstrap select2 中删除事件

php - 如何根据浏览器版本给出条件 cellpadding 值?

html - 无法删除文本区域边距底部