【问题标题】:Remove function on browser width删除浏览器宽度的功能
【发布时间】:2018-08-08 01:54:01
【问题描述】:

我对 javascript 还是很陌生,我在构建的同时也在学习。这可能是一个简单的修复,但是我如何在较小的宽度上禁用视差图像上的功能(或通常禁用特定的 js 功能)?

到目前为止,这是我所拥有的,但效果不太好,但显示“未定义”。几天来我一直在寻找解决方案,但没有运气。任何帮助将不胜感激。

  var paraLlaxS = document.querySelector("#firstImgc2");
  var paraLlaxS = document.querySelector("#secondImgc2");
  var paraLlaxS = document.querySelector("#backbox1");

  function setTranslate(xPos, yPos, el) {
      el.style.transform = "translate3d(" + xPos + ", " + yPos + "px, 0)";
  }

  window.addEventListener("DOMContentLoaded", scrollLoop, false);

  var xScrollPosition;
  var yScrollPosition;

  function scrollLoop() {

      xScrollPosition = window.scrollX;
      yScrollPosition = window.scrollY;

      setTranslate(0, yScrollPosition * -0.2, firstImgc2);
      setTranslate(0, yScrollPosition * 0.15, secondImgc2);
      setTranslate(0, yScrollPosition * -0.6, backbox1);

      requestAnimationFrame(scrollLoop); 


      if(window.innerWidth < 900) {
        document.querySelector('#firstImgc2').innerHTML = window.removeEventListener("DOMContentLoaded", scrollLoop, false);
        return;
      } else {

      }
}

【问题讨论】:

标签: javascript responsive


【解决方案1】:

您可以在函数的开头添加条件return。但是,如果宽度再次增加,您将需要监听以再次开始循环。

function scrollLoop() {
   if(window.innerWidth < 900)return;
   ...

【讨论】:

  • 感谢您的快速回复。条件在 900 下确实可以正常工作,但是,是的,我想重新启用超过 900 像素的功能。我一直在尝试多种组合,但我仍然无法让它发挥作用。我显然做错了什么。
  • 添加一个 onresize 监听器,检查您的条件以及何时满足调用scrollLoop()
  • 我仍然很困惑,但我设法让它工作,当我调整到 900 以下时效果停止,然后我回到更大的宽度,效果继续按我的意愿进行,级长。在此处查看更新的 js 代码:jsfiddle.net/dvkds/njLaw94q 现在唯一的问题是当我在测试时,这意味着从大宽度到小宽度来回调整大小。当我手动调整到小宽度时,视差效果会在图像之间产生巨大的空间。从技术上讲,这种效果对于不从任一宽度调整大小的观众来说效果很好,但我觉得这可以改进。
  • 您可以在停止效果时重置所有视差
【解决方案2】:

我从另一个帖子中借用了一个解决方案。 Listen for browser width for responsive web design?

此代码与更多种类的浏览器兼容,因为获取的屏幕大小可能因浏览器而异。

var width = 0;
function getWindowSize() {
    if (document.body && document.body.offsetWidth) {
      width = document.body.offsetWidth;
    }
    if (document.compatMode=='CSS1Compat' &&
        document.documentElement &&
        document.documentElement.offsetWidth ) {
       width = document.documentElement.offsetWidth;
    }
    if (window.innerWidth) {
       width = window.innerWidth;
    }
    return(width);
}

【讨论】:

  • 这如何回答当浏览器处于一定宽度时如何禁用功能的问题?我的意思是,复制和粘贴代码是一项很棒的工作,并且可能对 OP 有帮助,但这不是答案。您可能应该刚刚添加了一条带有该答案链接的评论...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-17
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 2011-10-22
相关资源
最近更新 更多