Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CSS、z顺序和;jQuery小菜单_Jquery_Css_Z Order - Fatal编程技术网

CSS、z顺序和;jQuery小菜单

CSS、z顺序和;jQuery小菜单,jquery,css,z-order,Jquery,Css,Z Order,我正在尝试实现一个非常简单的小下拉式迷你菜单,当网站用户将鼠标悬停在图像上时,它会出现。图像是下载内容的链接,迷你菜单将为他们提供格式选择(平面文件与图表) 标记: <style> ol, ul { list-style: none; } .down-list { position:relative; left:0px; top:0px;

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

标记:

   <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>

ol,ul
{
列表样式:无;
}
.下拉列表
{
位置:相对位置;
左:0px;
顶部:0px;
z指数:2;
}
...
  • 数据文件
  • 图表
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>

$(文档).ready(函数(){
$('.extraDownloadMenu')。悬停(
函数(){
$('.down list',this).slideDown(100);
},
函数(){
$('.down list',this).slideUp(100);
});
});
于是菜单出现了——没问题。问题是表格单元格非常小,当显示
    时,它会增长以容纳额外的内容,这当然看起来很糟糕,这不是我想要的。我想要的是内容平滑地出现在任何内容的顶部

    CSS的魔力是什么


    非常感谢。

    将下拉列表的位置设置为绝对,并添加一个包装容器,其位置为相对。比如:

    <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>
    
    
    ol,ul{
    列表样式:无;
    }
    .下拉列表{
    位置:绝对位置;
    左:0px;
    顶部:0px;
    z指数:2;
    }
    .下拉列表包装器{
    位置:相对位置;
    }
    ...
    
    • 数据文件
    • 图表

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

    .down-list
    {
        position:absolute;
        left:0px;
        top:0px;
        z-index:2;
    }
    
    现在,不利的一面是列表可能不会在您想要的地方弹出。但没关系,我们可以使用jQuery在每次显示时帮助我们定位它。类似于(未经测试):


    因此,菜单总是保持相同的大小,额外的内容将减少各自的大小?这都要归功于两者。我喜欢Chris的解决方案,因为我不需要用代码定位任何东西。将其包装到另一个div中可以达到相同的效果。
      $(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);
            });
      });