javascript - 当到达视口(viewport)点时,然后转动我的侧边栏

标签 javascript jquery viewport

我需要能够调整我的侧边栏。 这可行,但我还需要在达到视口(viewport) > 740px 时隐藏侧边栏。 troggle 也需要工作。我已经走了很长一段路,但我认为我必须将这两者结合起来才能让它正常工作。

有人知道如何做到这一点吗?

CHECK OUT MY FIDDLE PLEASE >

我的脚本:

$('.troggler').toggle(
    function() {
        $('.right').animate({"right": "-400px"}, "slow");
        $('.troggler').animate({"background-position": "-25px"}, "fast");
    }, function() {
        $('.right').animate({"right": "0"}, "slow");
        $('.troggler').animate({"background-position": "0"}, "fast");
})

$(window).resize(function() {
    if ($(window).width() < 740) {
        $(".right").animate({"right": "-400px"}, "slow");
        $('.troggler').animate({"background-position": "-25px"}, "fast");
    }
    else {
        $('.right').animate({"right": "0"}, "slow");
        $('.troggler').animate({"background-position": "0"}, "fast");
    }
});

最佳答案

我猜当您调整窗口大小时,$(window).resize() 会触发多个事件。 要解决此问题,您可以等待调整大小(拖动)完成。

// Basic Concept is ...
$(window).resize(function () {

    if( ... event not fired ...  ){
       setTimeout(function(){
            // toggle your navi
       },500);
    }
    ....
});

演示:http://jsfiddle.net/VseLR/13/

你的代码可以像这样:

function showNavi(){
    $('.right').animate({"right": "0"}, "slow");
    $('.troggler').animate({"background-position": "0"}, "fast");
}
function hideNavi(){
    $('.right').animate({"right": "-400px"}, "slow");
    $('.troggler').animate({"background-position": "-25px"}, "fast");
}

$('.troggler').toggle(function() {
        showNavi();},
    function() {
        hideNavi();
    });

function applyLayout() {
    if ($(window).width() < 740) {
       hideNavi();
    }else {
       showNavi();
    }
}
var timer = 0;
var delayToCall = (function () {
    return function (callback, ms) {
        if (timer > 0) {
            clearTimeout (timer);
        }
        timer = setTimeout(callback, ms);
    };
})();
$(window).resize(function () {
   delayToCall(function(){
     applyLayout();
    }, 500);
});

您可能想检查这个问题:
JavaScript/JQuery: $(window).resize how to fire AFTER the resize is completed?

希望这有帮助。

关于javascript - 当到达视口(viewport)点时,然后转动我的侧边栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23954183/

相关文章:

javascript - DOM 元素返回未定义

javascript - jQuery:检查元素是否已分配给 var

javascript - 从url获取脚本

mobile - Google Maps API 中的 'meta viewport user-scalable=no' 有什么意义

javascript - 如何从 ASP.NET MVC 中的另一个 View 修改共享layout.cshtml中的image.OnClick?

javascript - 通过 event.target,我怎么知道它是复选框还是单选框?

javascript - 将类按顺序添加到一系列元素

javascript - 为什么我不能在我的对象字面量中访问 this.property?

java - LibGdx 了解视口(viewport)并将其与 Scene2D 关联

google-chrome - 为什么 Chrome Emulation 不缩放但 iPhone Chrome 可以缩放?