Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.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
Javascript 实现change fadeIn fadeOut内容菜单Jquery的最佳方法_Javascript_Jquery_Menu_Fade - Fatal编程技术网

Javascript 实现change fadeIn fadeOut内容菜单Jquery的最佳方法

Javascript 实现change fadeIn fadeOut内容菜单Jquery的最佳方法,javascript,jquery,menu,fade,Javascript,Jquery,Menu,Fade,正在寻找用javascript jQuery实现菜单的最佳方法,在这里,我可以使用淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出 意念 有一个菜单,当我点击时想激活按钮和内容,并使用淡出效果和替换我点击的内容。可以添加活动类以更好地使用css 问题 我遇到的主要问题是,它有一段时间可以淡出,淡出内容,然后其他内容消失 寻找解决方案 我正在寻找实现以下目标的最佳方法: 如果href是显示内容的最佳方式

正在寻找用javascript jQuery实现菜单的最佳方法,在这里,我可以使用淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出

意念

有一个菜单,当我点击时想激活按钮和内容,并使用淡出效果和替换我点击的内容。可以添加活动类以更好地使用css

问题

我遇到的主要问题是,它有一段时间可以淡出,淡出内容,然后其他内容消失

寻找解决方案

我正在寻找实现以下目标的最佳方法:

如果href是显示内容的最佳方式,则使用菜单

解决了淡入淡出效果的主要问题。特别是如果你在按钮之间快速点击,它似乎会中断,我在示例中增加了一点时间来更好地检查它

在菜单和库中添加活动的类


开始使用的小示例是fadeIn和fadeOut回调属性。这样,您就可以正确地对它们进行排序,并让它们按照您想要的方式进行操作,如下所示:

$('#button').click(function(){
    $(this).fadeOut('fast', function(){
         $(this).load('yourcontent.php', function(){
              $(this).fadeIn('fast');
              $(this).addClass('active');
         }
    }
}
如果您使用load函数来加载内容,那么上面的代码应该会很有帮助。但是,如果每个按钮使用静态内容,还可以使用.html函数加载按钮中的内容

您可以使用jQuery选择器调用该按钮,就像我在上面的示例中所做的那样,也可以使用onclick属性:

<a onclick="example('one')">Test Button</a>
更新3 我更新了上面的函数,以实现我认为您的意思,并将gallery的id作为参数。这次使用停止功能

$('#menu li').click(function(){
    $('.gallery').queue("fx", []);
    $('.gallery').stop(true, true);
    var which = $('a', this).attr('href'); 
    $('.gallery.active').fadeOut(2000, function(){
        $(this).removeClass('active');
        if($(which).attr('class') != 'active'){
            $(which).fadeIn(2000, function(){
                $(this).addClass('active');
            });
        }
    });
});

您需要使用的是fadeIn和fadeOut回调属性。这样,您就可以正确地对它们进行排序,并让它们按照您想要的方式进行操作,如下所示:

$('#button').click(function(){
    $(this).fadeOut('fast', function(){
         $(this).load('yourcontent.php', function(){
              $(this).fadeIn('fast');
              $(this).addClass('active');
         }
    }
}
如果您使用load函数来加载内容,那么上面的代码应该会很有帮助。但是,如果每个按钮使用静态内容,还可以使用.html函数加载按钮中的内容

您可以使用jQuery选择器调用该按钮,就像我在上面的示例中所做的那样,也可以使用onclick属性:

<a onclick="example('one')">Test Button</a>
更新3 我更新了上面的函数,以实现我认为您的意思,并将gallery的id作为参数。这次使用停止功能

$('#menu li').click(function(){
    $('.gallery').queue("fx", []);
    $('.gallery').stop(true, true);
    var which = $('a', this).attr('href'); 
    $('.gallery.active').fadeOut(2000, function(){
        $(this).removeClass('active');
        if($(which).attr('class') != 'active'){
            $(which).fadeIn(2000, function(){
                $(this).addClass('active');
            });
        }
    });
});

如果我没弄错你的问题的话,你就不想在一个画廊消失而另一个画廊消失时出现这样的延迟。最简单的方法是隐藏当前显示的库,而不是淡出,然后淡入新选择的库。如果您将代码javascript更改为此,您将看到结果更加平滑

  $('#menu li').click(function(event){
      event.preventDefault();
      var $this = $(this);
      var href=  $this.find('a').attr('href');
      $(".gallery").hide();
      $(href).fadeIn(1000);  
  });

如果我没弄错你的问题的话,你就不想在一个画廊消失而另一个画廊消失时出现这样的延迟。最简单的方法是隐藏当前显示的库,而不是淡出,然后淡入新选择的库。如果您将代码javascript更改为此,您将看到结果更加平滑

  $('#menu li').click(function(event){
      event.preventDefault();
      var $this = $(this);
      var href=  $this.find('a').attr('href');
      $(".gallery").hide();
      $(href).fadeIn(1000);  
  });

谢谢,希望两个fadeIn e fadeOut都不使用隐藏或显示,当然可以解决问题。谢谢,希望两个fadeIn e fadeOut都不使用隐藏或显示,当然可以解决问题。嗯..加载,但这是为了替换内容。我只知道内容在HTML中总是可见的,但是显示无或块。没有使用标志就没有办法吗?也许停止?您检查了JSFIDLE示例了吗?我再次更新了上面的代码,并在您的JSFIDLE示例中进行了测试。也应用了.stop函数,可以正常工作,但不确定是否是正确的解决方案…但似乎非常接近。仍然使用fast,try Puting 2000 s似乎并没有停止之前的动画,所以如果我在Gallery 1上单击,然后在Gallery 2上单击,您希望第一个立即停止,第二个开始加载?嗯..加载,但这是为了替换内容。我只知道内容在HTML中总是可见的,但是显示无或块。没有使用标志就没有办法吗?也许停止?您检查了JSFIDLE示例了吗?我再次更新了上面的代码,并在您的JSFIDLE示例中进行了测试。也应用了.stop函数,可以正常工作,但不确定是否是正确的解决方案…但似乎非常接近。仍然使用fast,try Puting 2000 s似乎没有停止之前的动画。因此,如果我在Gallery 1上单击,然后在Gallery 2上单击,您希望第一个立即停止,第二个立即开始加载吗?