触发不同的功能取决于窗口大小调整大小窗口

时间:2016-10-28 13:49:34

标签: javascript jquery

我创建了两个动画,一个用于移动设备,另一个用于桌面设备。这在页面加载时效果很好,但是当您调整窗口大小时,动画不会改变。

例如,如果您以桌面大小加载页面,则当您将鼠标悬停在相应的部分上时,桌面动画会播放。但是,如果我将浏览器的大小调整为“移动大小”(小于1000px),桌面动画仍会播放。

我已经接近了无数种方式,无法弄清楚为什么它不能按预期工作。

请参阅以下代码:

var isMobile = isMob();

function isMob() {
    if($(window).width() > 1000) {
        return false;
    }
    return true;
}

$(window).resize(function() {
    isMobile = isMob();
});

if(isMobile){
    mobileAnimate(); 
}  
if(!isMobile){  
    deskTopAnimate();
}

function deskTopAnimate() {
    $('.hover-zone').mouseenter(function(){
        desktopAnimateOut.play();
    });

    $('.desktop-close').click(function(){
        desktopAnimateOut.reverse();
    })
}

function mobileAnimate() {
    $('.hover-zone').click(function(){
            animateOut.play();
        }
    });

    $('.mobile-close').click(function(){
        animateOut.reverse();
    })
}

2 个答案:

答案 0 :(得分:1)

这些说明

if(isMobile){
    mobileAnimate(); 
}  
if(!isMobile){  
    deskTopAnimate();
}

仅在开始时进行评估。我认为你必须把它们放入功能调整大小,比如

$(window).resize(function() {
  isMobile = isMob();
  if(isMobile){
      mobileAnimate(); 
  }  
  if(!isMobile){  
      deskTopAnimate();
  }
}

答案 1 :(得分:0)

您应该查看window.matchMedia()函数。

var mm = window.matchMedia("only screen and (max-width: 1000px)");
mm.addListener(l => {
    // Handle changes
    if (l.matches) {
        mobileAnimate();
    } else {
        deskTopAnimate();
    }
});
// Initial value
if (mm.matches)
    mobileAnimate();
else
    deskTopAnimate();