【问题标题】:How can I define a variable depending on the width of the screen?如何根据屏幕宽度定义变量?
【发布时间】:2019-01-05 07:39:53
【问题描述】:

我正在使用 TweenMax 根据滚动位置制作动画。我想要动画的位置会根据屏幕大小而变化。是否可以根据屏幕宽度进行可变变化?

我是新手,使用了很多复制/粘贴解决方案。 我有两个相邻的矩形 div,它们像卡片一样翻转以在背面显示信息。在移动屏幕上查看时,这些卡片垂直堆叠,而不是彼此并排。然后,这会改变我想要为卡片翻转设置动画的点。

我找到的解决方案是根据媒体查询更改 var sceneStart。这只是解决问题的一个想法。

这是我尝试过的,但没有成功。

var sceneStart2;
if (window.matchMedia("(max-width: 480px)")) {
  sceneStart2 = 3500
} else {
  sceneStart2 = 2000
}

预期结果是在大屏幕上,而 div 并排,card2 在 2000 处翻转,但在移动屏幕上,卡片在 3500 处翻转。

实际结果是它完全破坏了翻转并且不起作用。

【问题讨论】:

  • window.availWidth 获取屏幕宽度。

标签: javascript css media-queries


【解决方案1】:

您需要检查matchMedia返回的MediaQueryListmatches属性:

var sceneStart2;
if (window.matchMedia("(max-width: 480px)").matches) {
  sceneStart2 = 3500
} else {
  sceneStart2 = 2000
}
console.log(sceneStart2);

查看this article on MDN 了解有关matchMedia 的更多信息。

如果您希望在窗口调整大小时更新它,您可以将此逻辑移动到一个函数中,该函数在最初和每个窗口调整大小事件中都会被调用:

var sceneStart2;

calcSceneStart2();
window.addEventListener('resize', calcSceneStart2);

function calcSceneStart2() {
  if (window.matchMedia("(max-width: 480px)").matches) {
    sceneStart2 = 3500
  } else {
    sceneStart2 = 2000
  }
  console.log(sceneStart2);
}

【讨论】:

  • 谢谢!那解决了它。并感谢您的额外阅读。现在的后续问题是,当您调整窗口大小时,我该如何进行这项工作?
  • 您可以将此逻辑移动到一个函数中,并在窗口调整大小时调用该函数。我会将其添加到我的答案中。
  • 当我将它放入完整的脚本时,它不起作用。注释框中没有足够的空间来粘贴完整的代码。我应该编辑原始问题并粘贴完整的脚本吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
相关资源
最近更新 更多