javascript - 将两个 window.matchMedia 包含到脚本中

标签 javascript jquery media-queries gsap

我正在尝试添加这个:

var mql = window.matchMedia("(max-width: 480px)"), window.matchMedia("(max-height: 479px)");

现在进入我现有的脚本,其中只有:

var mql = window.matchMedia("(max-width: 480px)");

当我添加上面提到的第二个 .matchMedia 时,脚本根本不会触发。

我尝试添加两个变量:

var mqls = [ 
  window.matchMedia("(max-width: 480px)"),
  window.matchMedia("(max-height: 479px)")
];

function mediaqueryresponse(mql){
  document.getElementById("match1").innerHTML = mqls[0].matches // width: 480px media match?
  document.getElementById("match2").innerHTML = mqls[1].matches // width: 479px media match?
}

这是添加 max-height 之前运行的脚本: jsFiddle 。请注意,该脚本位于 js 面板的底部。顶部脚本用于 TweenMax 对线条进行动画处理。

这是添加了变量的脚本: jsFiddle

最佳答案

如果您希望 smallBlock() 动画在 min-width479px min-height480px 那么我认为在查询之间添加逗号 , 应该可以解决问题。

看看this jsFiddle 并测试它是否产生您正在寻找的结果。

JavaScript:

var mql = window.matchMedia('(min-width: 479px), (max-height: 480px)');
function smallBlock() {
    setTimeout(function () {
        TweenLite.defaultEase = Linear.easeNone;
        TweenLite.set('.square', { visibility: 'visible' });
        var tl = new TimelineLite();
        tl.fromTo('.l1', 2, { height: 0 }, { height: 27 });
        tl.fromTo('.l2', 3, { width: 0, }, { width: 45 });
        tl.fromTo('.l3', 2, { height: 0 }, { height: 27 });
        tl.fromTo('.l4', 3, { width: 0 }, { width: 45 });
        tl.timeScale(4);
    }, 600);
};
function largeBlock() {
    setTimeout(function () {
        TweenLite.defaultEase = Linear.easeNone;
        TweenLite.set('.square', { visibility: 'visible' });
        var tl = new TimelineLite();
        tl.fromTo('.l1', 2, { height: 0 }, { height: 227 });
        tl.fromTo('.l2', 3, { width: 0, }, { width: 445 });
        tl.fromTo('.l3', 2, { height: 0 }, { height: 227 });
        tl.fromTo('.l4', 3, { width: 0 }, { width: 445 });
        tl.timeScale(4);
    }, 600);
}
function handleScreen(mql) {
    mql.matches ? smallBlock() : largeBlock();
}
mql.addListener(handleScreen);
handleScreen(mql);

希望这有帮助。有关 CSS 媒体查询的文档可以在 here 找到。

关于javascript - 将两个 window.matchMedia 包含到脚本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32012498/

相关文章:

javascript - 我可以在我的 Electron 应用程序中使用两个 ioHook 事件吗?

javascript - 将 JS 值插入 HTML 表

javascript - Socket io Nodejs-在用户打开多个选项卡时进行管理

html - 基于屏幕尺寸的多个动态背景图片 url

html - Mailchimp 忽略媒体查询

javascript - 不能在 AppFog Node App 上包含脚本/css

c# - MVC 下拉列表的动态内容变化

javascript - 数据表仅选择过滤的内容

javascript - 从 HTML 创建对象数组不起作用

iOS Safari 在应用纵向之前首先应用横向 CSS - 如何阻止它?