css - 下拉菜单子(monad)菜单居中

标签 css

我正在为下拉菜单调整 css 样式表。我在将子菜单的框居中时遇到问题。目前看起来像this

#nav{
  list-style:none;
  margin:0;
  padding:120px 100px;
  text-align:center;
}
#nav li{
  position:relative;
  display:inline;
}
#nav a{
  display:inline-block;
  padding:10px;
}
#nav ul{
  position:absolute;
  left:-9999px;
  margin:0;
  padding:0;
  text-align:center;
}
#nav ul li{
  display:block;
}
#nav li:hover ul{
  left:0;
}
#nav li:hover a{
}
#nav li:hover ul a{
  text-decoration:none;
  background:none;
}
#nav li:hover ul a:hover{
  background:#fff;
}
#nav ul a{
  white-space:nowrap;
  display:block;
}
a{
  color:#c00;
  text-decoration:none;
  font-weight:bold;
}
a:hover{
}

但我希望子框相对于更高级别的框居中。我怎样才能做到这一点?

最佳答案

  • 将即时(顶级)li放入相关容器
  • 左侧位置嵌套 uls 50% 在新定义的 relative container 中并将它们转换为 -50% 自己的大小
  • 在嵌套的 ul 上移除 left:-9999px; 并切换 display: none/ block

#nav > li {
  position: relative;
}

#nav {
  list-style: none;
  margin: 0;
  padding: 20px 100px;
  text-align: center;
}

#nav li {
  position: relative;
  display: inline;
}

#nav a {
  display: inline-block;
  padding: 10px;
}

#nav ul {
  display: none;
  position: absolute;
  margin: 0;
  padding: 0;
  left: 50%;  
  transform: translateX(-50%);
}

#nav ul li {
  display: block;
}

#nav li:hover ul {
  display: block;
}

#nav li:hover a {}

#nav li:hover ul a {
  text-decoration: none;
  background: none;
}

#nav li:hover ul a:hover {
  background: #fff;
}

#nav ul a {
  white-space: nowrap;
  display: block;
}

a {
  color: #c00;
  text-decoration: none;
  font-weight: bold;
}
<ul id="nav">
  <li><a href="#">One</a>
    <ul>
      <li><a href="#">Sub One</a></li>
      <li><a href="#">Sub Two</a></li>
    </ul>
  </li>
  <li><a href="#">Two</a>
    <ul>
      <li><a href="#">Sub One</a></li>
      <li><a href="#">Sub Two</a></li>
    </ul>
  </li>
  <li><a href="#">Three</a>
    <ul>
      <li><a href="#">Sub One</a></li>
      <li><a href="#">Sub Two</a></li>
    </ul>
  </li>
</ul>

jsFiddle

关于css - 下拉菜单子(monad)菜单居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54744342/

相关文章:

css - 覆盖 Bootstrap 4 表单 CSS 类属性

javascript - 在网页上平滑滚动

css - 隐藏垂直滚动条但仍然滚动 Firefox/IE/Edge

css - 按钮恢复为预编程的伪类颜色、CSS

javascript - 为什么图像和边框之间有空间?

html - 如何在内容CSS3中隐藏图像地址

html - CSS - 在 div 之外相对于另一个的绝对位置

Javascript灵活的背景图片不起作用

javascript - 内容和页脚重叠而不是将页脚推到底部

jquery - 有没有办法使用 animate.css 循环组合动画?我正在尝试弹跳/滑动单词并让它们弹跳