使用slideup、向下滑动下拉菜单的jquery效果

发布于 2024-12-16 15:57:35 字数 855 浏览 1 评论 0原文

我有一个下拉菜单,工作正常,但我想添加一些 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;
 }

任何帮助将不胜感激

I have got a drop down menu which works fine but i want to add some jquery effects like animation , slideup, down ,

currently i m using visiblity hidden & visible to show the ul , how can i use other effect on it , below is the code :

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

I tried using :$('ul', this).slideDown(100); $('ul', this).slideUp(100); with no success
css:

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

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

Any help will be highly appreciated

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

白昼 2024-12-23 15:57:35

您可以使用 .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/

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

You can use the .animate() function rather than the .css() function:

 $(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);
     };
 });

Documentation for .animate() can be found here: http://api.jquery.com/animate/

There are some pre-made animations as well:

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

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

Here is a jsfiddle for using .slideToggle() and .fadeToggle(): http://jsfiddle.net/jasper/wFrpe/

孤千羽 2024-12-23 15:57:35

您可以使用 .slideToggle().fadeToggle()。可以通过组合多个这些函数来实现高级效果,也可以使用 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) 在它们之前,否则如果用户在上一个动画完成之前与其交互多次,您将会出现怪癖。

You can use .slideToggle() or .fadeToggle(). Advanced effects can be achieved by combining several of these functions, or you can use a jQuery animation plugin for additional effects.

I also simplified your event binding by using .hover()

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

         function toggleMenu() {
             $(this).find('ul').stop(true, true).slideToggle();
         } 
     });
 </script>

I noticed you are also using visibility:hidden; in your stylesheet. You should remove this, as it conflicts with the way jQuery uses the display style to modify whether an element can be seen.

You can do it by calling a hide() instead:

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

BONUS TIP:

When using animations, always include .stop(true, true) before them, otherwise you will have quirks if the user interact with it many times before the previous animation has completed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文