CSS位置绝对值和父容器的宽度百分比

chr*_*ris 40 html css css-position drop-down-menu

我正在尝试构建一个宽度灵活的HTML/CSS下拉菜单.由于position:absolute导航的第二级,我没有得到第一级的宽度.删除位置:绝对将在悬停时移动所有后续元素...

我怎么解决这个问题?

这是代码:

ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.level_1 > li {
  float: left;
  width: 45%;
  background-color: #2FA4CF;
  margin-right: 6px;
}

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

.level_2 {
  display: none;
  position: absolute;
  width: 45%;
}

.level_2 li {
  background-color: #535B68;
}
Run Code Online (Sandbox Code Playgroud)
<ul class="level_1">
  <li>
    <a href="#">Level one (1)</a>
    <ul class="level_2">
      <li><a href="#">Level two (1)</a></li>
    </ul>
  </li>
  <li><a href="#">Level one (2)</a></li>
</ul>

<p>Paragraph</p>
Run Code Online (Sandbox Code Playgroud)

看到这里的结果:http://jsfiddle.net/5uf2Y/ 悬停"一级(1)",你会看到,第二级与第一级不一样......

art*_*tSx 54

您忘记了两个显示100%的元素.

在这里更正

第一个元素忘记了它: 相对于level_1> li的位置

.level_1 > li {
    float: left;
    width: 45%;
    background-color: #2FA4CF;
    margin-right: 6px;
    **position:relative;**
}
Run Code Online (Sandbox Code Playgroud)

第二个元素更正它是: 改变第二个li的大小

.level_2 {
    display: none;
    position: absolute;
    width: 100%;
}
Run Code Online (Sandbox Code Playgroud)

使用" width:100%" .level_2它会自动转动其父级的宽度

  • 为了让我免于加班加点+1:p (4认同)
  • 对我来说,tl;dr:将“position:relative”和“width:100%”添加到绝对定位元素的父级。 (2认同)

Low*_*ase 7

添加position:relativelevel_1 > li

.level_1 > li {
    float: left;
    width: 45%;
    background-color: #2FA4CF;
    margin-right: 6px;
    position:relative;
}
Run Code Online (Sandbox Code Playgroud)