固定div右侧的悬停菜单

时间:2013-03-15 22:47:14

标签: javascript jquery menu css-position

我有一个固定位置的div(顶部面板),它还包含最右边的设置菜单(目前通过浮动)。

将鼠标悬停在设置图像上时,我想在图像下方显示一个菜单。 我希望菜单与图像一样对齐。

<div id="panel" style="position:fixed">
  <panel-entry 1>
  <panel-entry 2>
  <panel-entry n>

  <div id="settings" style="float:right/snapped to the right side>
    <img src=settings>
    <ul>
      <li>setting 1</li>
      <li>setting 2</li>
      <li>setting n</li>
    </ul>
  </div>
</div>

任何使用jQuery的想法都非常感激,随意重新安排任何HTML。

2 个答案:

答案 0 :(得分:1)

不需要jQuery,只需给你的#panel宽度:

#panel {
  position: fixed;
  width: 100%;
}
#settings {
  float: right;
}

请参阅DEMO

答案 1 :(得分:1)

除了您的示例不是HTML ,我无论如何都会纠正概念方法。这样的任务不需要jQuery,这可以完全用CSS完成。

  1. 您希望#panel首先包含一个<ul>,其中包含<li> s,这将是您的<panel-entry>,应将其设为inline-block

  2. #settings应该是其中之一,可能是特殊的classid(我们现在会保留设置)。您可以position: absolute将此right: 0改为float,或者background-image。不要使用图像元素,而是使用<ul>

  3. 在此元素中,您将有一个子菜单:即另一个display: none position:absoluteright: 0top: X#panel,所以X与您的:hover不重叠。

  4. 接下来,您要在li#settings的{​​{1}}上显示该元素。

  5. Here's a working demo

    基本HTML

    <div id="panel">
      <ul>
          <li>Panel entry 1</li>
          <li>Panel entry 2</li>
          <li>Panel entry n</li>
          <li id="settings">
    
            <ul>
              <li>setting 1</li>
              <li>setting 2</li>
              <li>setting n</li>
            </ul>
    
          </li>
      </ul>
    </div>
    

    基本CSS

    #panel {
      position: fixed;
      top: 0;
      width: 100%;
    }
    
    #panel > ul > li {
      display: inline-block;
    }
    
    #panel > ul > li > ul {
      display: none;
      position: absolute;
      top: {X};
      right: 0;
    }
    
    li#settings {
    
      background: url({youricon}) no-repeat top center;
      position: absolute;
      right: 0;
      min-width: {youricon-x};
      min-height: {youricon-y};
    }
    
    li#settings:hover > ul{
    
      display: block;
    
    }