Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.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 Jquery:使菜单在几秒钟后自动滑出到一侧_Javascript_Jquery_Menu_Slide - Fatal编程技术网

Javascript Jquery:使菜单在几秒钟后自动滑出到一侧

Javascript Jquery:使菜单在几秒钟后自动滑出到一侧,javascript,jquery,menu,slide,Javascript,Jquery,Menu,Slide,下面的代码是这样做的:访问者点击菜单,它从左侧水平滑入。访客再次点击菜单,它滑出(关闭) 我想要的是:同样的行为。而且:若菜单是打开的,而访问者并没有点击任何地方,菜单会在5秒钟后滑出(关闭) 谢谢你的帮助 var clicked = 0; function header() { $('#header').click( function(){ if(clicked === 0){ $(this).stop().animate({ p

下面的代码是这样做的:访问者点击菜单,它从左侧水平滑入。访客再次点击菜单,它滑出(关闭)

我想要的是:同样的行为。而且:若菜单是打开的,而访问者并没有点击任何地方,菜单会在5秒钟后滑出(关闭)

谢谢你的帮助

var clicked = 0;
function header() {
$('#header').click(
    function(){
            if(clicked === 0){
                $(this).stop().animate({ paddingLeft: '230px'}, {queue: false, duration: 400 });
                clicked = 1;
            } else if(clicked === 1){
                $(this).stop().animate({ paddingLeft: '0'});  
                clicked = 0;
            }
        }
);
}
使用以下功能:

setTimeout(function() {
    // your animation
}, 2000);
您的整个代码最终应如下所示:

// You use the "clicked" variable to check if the menu is already active or not
var clicked = false;

// You can delete the "function header()" part because it's unnecessary

// Here we add "click" event when the visitor clicks the header
$('#header').click(function(){

    // Check if menu is already active
    if(clicked == false){
        // If not: animate menu and make active (*see below for more info)
        $(this).stop().animate({ paddingLeft: '230px'}, {queue: false, duration: 400 });
        clicked = true;

    } else {
        // If yes: animate menu back to normal and make inactive
        $(this).stop().animate({ paddingLeft: '0'});  
        clicked = false;
    }
});

// Set header to automatically animate to active after 2000 milliseconds
setTimeout(function() {
    $("#header").stop().animate({ paddingLeft: '230px'}, {queue: false, duration: 400 });
    clicked = true;
}, 2000);

我还为您当前的代码添加了解释。有关
.animate()
函数的更多信息,请参见此处:

您为什么要这样做?如果我(一个用户)想慢慢地阅读菜单中的项目,而3秒钟是不够的,我不希望菜单关闭@第二,菜单不是很长。实际上它很短:只有5个项目(链接)。这是我网站导航的手机版。我不知道如何创建或实现具有滑动行为的菜单。所以我只有这个点击行为。一些访问者可能会打开菜单,但随后决定在当前页面上停留更长时间,但不知道他们必须再次单击菜单才能将其滑出。然后菜单将自动关闭。@BossaNova您不能为我选择阅读5个链接需要多长时间。如果我是盲人,我使用的屏幕阅读器耗时太长怎么办?不要强迫用户体验不好,因为你不知道如何实现更好的用户体验。如果你想弄清楚如何打开和关闭按钮,这里有一个很好的例子:@SecondRikudo我想你是对的。我只是没有想到这种可能性。我一定要试试。尽管如此,我还是很想知道如何使菜单自动滑出。谢谢,Dark,但是在上面的代码中我应该将setTimeout函数放在哪里,因为我尝试了很多方法,但都不起作用。只需在当前代码之前或之后添加它即可。不是在另一个函数中。好的,我在当前代码之后添加它,不做任何更改。我只是不清楚到底应该用什么来代替“你的动画”。。。。。使用动画代码,请查看我的更新答案。你应该真正理解你正在使用的代码,而不是在不知道它的功能的情况下从某个地方复制粘贴它。