【问题标题】:Using slideup , slide down jquery effects for drop down menu使用 slideup ,下拉菜单的滑动 jquery 效果
【发布时间】:2011-11-16 02:11:02
【问题描述】:

我有一个工作正常的下拉菜单,但我想添加一些 jquery 效果,如动画、上滑、下移、

目前我正在使用可见性隐藏和可见来显示 ul,我怎样才能对其使用其他效果,下面是代码:

 <script type="text/javascript">
     $(document).ready(function () {
         $('.ul-links > li').bind('mouseover', openSubMenu);
         $('.ul-links > li').bind('mouseout', closeSubMenu);

         function openSubMenu() {
             $(this).find('ul').css('visibility', 'visible');
         };

         function closeSubMenu() {
             $(this).find('ul').css('visibility', 'hidden');
         };     });
  </script>

我尝试使用 :$('ul', this).slideDown(100); $('ul', this).slideUp(100); 没有成功 css:

.quiklinks .ul-links li ul
 {
position:absolute;
visibility: hidden;

margin: 0px;
padding-top:0px;
z-index: 1000;
top: 42px;
left:0px;
 }

我们将不胜感激任何帮助

【问题讨论】:

    标签: jquery jquery-animate drop-down-menu jquery-slide-effects


    【解决方案1】:

    您可以使用.animate() 函数而不是.css() 函数:

     $(document).ready(function () {
         $('.ul-links > li').bind('mouseover', openSubMenu);
         $('.ul-links > li').bind('mouseout', closeSubMenu);
    
         function openSubMenu() {
             $(this).find('ul').animate({opacity : 1}, 500);
         };
    
         function closeSubMenu() {
             $(this).find('ul').animate({opacity : 0}, 500);
         };
     });
    

    .animate() 的文档可在此处找到:http://api.jquery.com/animate/

    还有一些预制的动画:

    $(this).find('ul').slideToggle(500);//http://api.jquery.com/slidetoggle/
    
    $(this).find('ul').fadeToggle(500);//http://api.jquery.com/fadetoggle/
    

    这是一个使用 .slideToggle() 和 .fadeToggle() 的 jsfiddle:http://jsfiddle.net/jasper/wFrpe/

    【讨论】:

    • 我试过你的例子,但它不起作用我必须为它更改 css
    • 我使用了opacity 而不是visibility,所以如果您的元素默认设置为visibility:hidden,则需要更改为opacity:0;filter:alpha(opacity=0);(注意:filter 用于 I.E. )。
    • wat abt slip up slide down ,并且切换开关不起作用
    • 在问题中添加了css
    • 代替visibility: hidden;,使用opacity:0;(如果你想像我上面的例子那样为不透明度设置动画)或display:none;(如果你想使用切换功能):jsfiddle.net/jasper/wFrpe/1跨度>
    【解决方案2】:

    您可以使用.slideToggle() 或.fadeToggle()。可以通过组合几个these functions来实现高级效果,也可以使用jQuery动画插件来实现附加效果。

    我还使用.hover() 简化了您的事件绑定

     <script type="text/javascript">
         $(document).ready(function () {
             $('.ul-links > li').hover(toggleMenu, toggleMenu);
    
             function toggleMenu() {
                 $(this).find('ul').stop(true, true).slideToggle();
             } 
         });
     </script>
    

    我注意到您还在样式表中使用了visibility:hidden;。你应该删除它,因为它与 jQuery 使用显示样式来修改元素是否可见的方式冲突。

    您可以通过调用 hide() 来代替:

     $('.ul-links > li').hide().hover(toggleMenu, toggleMenu);
    

    额外提示:

    使用动画时,请务必在其前加上.stop(true, true),否则如果用户在上一个动画完成之前与它多次交互,就会产生怪癖。

    【讨论】:

    • 试过你的例子,但 nuthing 作品下拉不显示任何子产品,在问题中添加了 css
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    • 2014-05-22
    • 1970-01-01
    相关资源
    最近更新 更多