首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >z-order和jQuery迷你菜单

z-order和jQuery迷你菜单
EN

Stack Overflow用户
提问于 2009-08-10 19:41:20
回答 2查看 1.6K关注 0票数 0

我正在尝试实现一个非常简单的小下拉式迷你菜单,当网站用户将鼠标悬停在图像上时,它将出现。图像是下载内容的链接,迷你菜单将为他们提供格式选择(平面文件与图表)。

标记:

代码语言:javascript
复制
   <style>
      ol, ul
      {
         list-style: none;
      }
      .down-list
      {
         position:relative;
         left:0px;
         top:0px;
         z-index:2;
      }
   </style>

   ...

   <td>
     <div class="extraDownloadMenu"><img src="/AppName/Images/Icons/Download_15.gif" />
     <ul class="down-list" style="display:none;">
        <li>Data file</li>
        <li>Chart</li>
     </ul></div>
   </td>

javascript:

代码语言:javascript
复制
   <script language="javascript" type="text/javascript">

      $(document).ready(function() {
         $('.extraDownloadMenu').hover(
            function() {
               $('.down-list', this).slideDown(100);
            },
            function() {
               $('.down-list', this).slideUp(100);
            });
      });

   </script>

这样菜单就出现了--没问题。问题是表单元格非常小,当显示时,它会增长以容纳额外的内容,这当然看起来很糟糕,也不是我想要的。我想要的是让内容平滑地出现在任何内容的顶部。

什么是CSS的魔力,让这一切发生?

非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-10 19:48:48

将下拉菜单的位置设置为absolute,并添加一个位置为relative的包装容器。像这样:

代码语言:javascript
复制
<style>
    ol, ul {
     list-style: none;
    }
    .down-list {
     position:absolute;
     left:0px;
     top:0px;
     z-index:2;
    }
    .down-list-wrapper {
     position:relative;
    }
</style>

...

<td>
    <div class="extraDownloadMenu"><img src="/AppName/Images/Icons/Download_15.gif" />
     <div class="down-list-wrapper">
         <ul class="down-list" style="display:none;">
            <li>Data file</li>
            <li>Chart</li>
         </ul>
     </div>
    </div>
</td>
票数 1
EN

Stack Overflow用户

发布于 2009-08-10 19:52:14

避免容器增长以适应弹出窗口的最好方法是使用绝对定位而不是相对定位:

代码语言:javascript
复制
.down-list
{
    position:absolute;
    left:0px;
    top:0px;
    z-index:2;
}

现在,这样做的缺点是列表可能不会弹出到您想要的位置。但是没关系,我们可以使用jQuery来帮助我们在每次显示它的时候定位它。类似于(未测试的):

代码语言:javascript
复制
  $(document).ready(function() {
     $('.extraDownloadMenu').hover(
        downloadMenu = $(this);
        function() {
           $('.down-list', this)
               .css({left: downloadMenu.offset().left, top: downloadMenu.offset().top + $(this).height()})
               .slideDown(100);
        },
        function() {
           $('.down-list', this).slideUp(100);
        });
  });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1256806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档