html - 了解下拉菜单上的 float

标签 html css drop-down-menu

我很好奇这个下拉菜单的 float 效果http://jsfiddle.net/0eLfwoof/ .所以,问题是,如果我没有在 nav 或 nav > ul 上使用 float ,当我将鼠标悬停在子菜单上时,子菜单就会消失。所以我要问的是为什么我必须在这里使用 float ..

<!--html file -->

<nav>
  <ul>
    <li><a href="#">list beritem</a>
          <ul>
            <li><a href="#">SUB LIST</a></li>
            <li><a href="#">SUB LIST2</a>
                    <ul>
                      <li><a href="">sub3 menu</a></li>
                      <li><a href="">sub3 menu</a></li>
                      <li><a href="">sub3 menu</a></li>
                    </ul>
                </li>
            <li><a href="#">SUB LIST</a></li>
          </ul>
       </li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
  </ul>
</nav>

</body>

<!-- CSS -->

*{
  margin:0; padding:0;
}

p{
  color:red;
  clear:both;
}

/* it work when i make nav or nav ul float */
nav{
  float:left;
}

ul li{
  list-style:none;
  position:relative;
}

a{
  text-decoration:none;
  background-color:aqua;
  display:inline-block;
  width:100px;
  height:20px;
  padding:5px;
  border:1px solid black;
}

/*-- Second Level Menu --*/

ul li ul{
  display:none;
  position:absolute;
  left:110px;
  top:0px;
}

ul li:hover > ul{
  display:block;
}


li ul a{
  background-color:#298d30;
}

最佳答案

你不必。这里的问题是 ul 显示为一个 block 。当您尝试将鼠标悬停在子列表 2 上时,您实际上是将鼠标悬停在第一个菜单的第二个列表项上!所以从理论上讲,如果我们这样做应该可行:

ul { 
    display: inline-block;
}

这是工作 fiddle :http://jsfiddle.net/0eLfwoof/8/

看看 DOM 中发生了什么。

enter image description here

ul 显示为一个 block ,跨越父级的宽度(完全填充)。您可以通过两种方式来解决这个问题。

  1. float 元素,不会将元素呈现为 block
  2. 将显示设置为内联 block

不要忘记,即使你设置了一个元素的宽度,如果一个元素是 block 级别的,边距会占用剩余的空间来填充父元素,所以这是行不通的。

我认为这应该足以帮助您了解发生了什么。

关于html - 了解下拉菜单上的 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28360958/

相关文章:

javascript - jquery多下拉过滤菜单

javascript - 更新行中的元素后,将表行从 body 标记附加到另一个表

html - 将多个 DIV 并排放置并垂直居中对齐

objective-c - 创建下拉列表

css - 锯齿形边框 CSS SVG

javascript - 创建学生列表并为每个按钮分配功能

javascript - 点击退出后下拉菜单不会关闭

html - 在 bootstrap 2.x 中带有汉堡包图标的居中 Logo

jquery - 在悬停/鼠标移出事件时关闭/展开宽度

html - Sweetalert 2 占位符不透明度