4

我有这个下拉菜单,由于#parent 的溢出隐藏而被切断。有没有办法让下拉列表的溢出部分显示在#parent之外,同时保持#parent的溢出隐藏?

http://jsfiddle.net/vXuuA/

  <div id="parent">
    <ul>
      <li class="dropdown">
        <a href="#">Lorem</a>
        <ul>
          <li><a href="#">Ipsum</a></li>
          <li><a href="#">Dolor</a></li>
        </ul>
      </li>
    </ul>
  </div>

a {
  color: white;
}
#parent {
  height: 100px;
  background: blue;
}
.dropdown ul {
  width: 100px;
  display: none;
  padding: 50px;
  background: black;
}

$(".dropdown").hoverIntent({
  over: function() {
    $("ul", this).show();
  },
  out: function() {
    $("ul", this).hide();
  },
  timeout: 500
});

要求:http ://cherne.net/brian/resources/jquery.hoverIntent.minified.js

4

3 回答 3

7

请将<ul>css修改为:

.dropdown ul {
  width: 100px;
  display: none;
  padding: 50px;
  background: black;
  z-index:1000;
  position:absolute;
}

这将把菜单带到外面。

于 2012-12-01T12:49:34.603 回答
2

另一种解决方案是将 ul 替换为 select 元素。选择元素似乎总是被渲染,因为您希望下拉列表被渲染,如有必要,在父元素的上方和外部。你需要做一些造型让它看起来不错。查看上面的示例,我不确定选择是否足够灵活以满足您的显示要求,因为您在列表中有一个列表。

<div id="parent">
    <select name="select">
      <option value="value1">Value 1</option> 
      <option value="value2" selected>Value 2</option>
      <option value="value3">Value 3</option>
    </select>
</div>

Uttam Kaddam 为 ul 提供高 z-index 并使其位置绝对的解决方案对我来说不起作用,因为我在同一个父元素中有多个列表,实际上是下拉表头,这弄乱了表头的显示.

于 2013-12-17T16:58:27.190 回答
0
a {
    color: white;
}
#parent-wrapper {
    width: 500px;
    position: relative;
    float:left;
}
#parent {
    height: 100px;
    background: blue;
    display:block;
}
.dropdown ul {
    width: 100px;
    display: none;
    padding: 50px;
    background: black;
    z-index: 2000;
    position: absolute;
}
于 2013-05-17T01:48:57.693 回答