【问题标题】:Javascript Resize on First RunJavascript 在首次运行时调整大小
【发布时间】:2016-05-24 18:04:56
【问题描述】:

我有一个 javascript 调整大小功能,当我调整浏览器大小时可以使用,但是如果我也以特定大小启动浏览器窗口,如何让它调整我的内容?您可以在代码笔http://codepen.io/celli/pen/pyMMWe 中看到这一点,当我们调整浏览器窗口时,我的内容将调整大小——但是,如果您使用较小尺寸(小于 840 像素)开始的浏览器刷新代码笔,则内容不会“预先”调整大小.如何添加代码来实现这一点?

var maxWidth  = $('#outer').width();
var maxHeight = $('#outer').height();

var windowWidth = $(window).width();
var windowHeight = $(window).height();

// media query
var mediaQuery = window.matchMedia("(max-width: 828px)");
mediaQuery.addListener(setAnimation);

// First run
setAnimation(mediaQuery);

function setAnimation(mediaQuery) {
  if (mediaQuery.matches) {
    // resize func below
    var maxWidth  = $('#outer').width();
    var maxHeight = $('#outer').height();

    var windowWidth = $(window).width();
    var windowHeight = $(window).height();

    $(window).resize(function(evt) {
      var $window = $(window);
      var width = $window.width();
      var height = $window.height();
      var scale;

      // early exit
      if(width >= windowWidth && height >= windowHeight) {
        $('#outer').css({'-webkit-transform': ''});
        $('#wrappie').css({ width: '', height: '' });
        return;
      }

      scale = Math.min(width/windowWidth);

      $('#outer').css({'-webkit-transform': 'scale(' + scale + ')'});
      $('#wrappie').css({ width: maxWidth * scale, height: maxHeight * scale });
    });
  } else {
  }
}

【问题讨论】:

    标签: javascript jquery gsap


    【解决方案1】:

    最好的办法,把它转换成一个函数。替换:

    $(window).resize(function(evt) {
      var $window = $(window);
      var width = $window.width();
      var height = $window.height();
      var scale;
    
      // early exit
      if(width >= windowWidth && height >= windowHeight) {
        $('#outer').css({'-webkit-transform': ''});
        $('#wrappie').css({ width: '', height: '' });
        return;
      }
    
      scale = Math.min(width/windowWidth);
    
      $('#outer').css({'-webkit-transform': 'scale(' + scale + ')'});
      $('#wrappie').css({ width: maxWidth * scale, height: maxHeight * scale });
    });
    

    与:

    function reszEvt(evt) {
      var $window = $(window);
      var width = $window.width();
      var height = $window.height();
      var scale;
    
      // early exit
      if(width >= windowWidth && height >= windowHeight) {
        $('#outer').css({'-webkit-transform': ''});
        $('#wrappie').css({ width: '', height: '' });
        return;
      }
    
      scale = Math.min(width/windowWidth);
    
      $('#outer').css({'-webkit-transform': 'scale(' + scale + ')'});
      $('#wrappie').css({ width: maxWidth * scale, height: maxHeight * scale });
    }
    

    并给出这两个:

    $(window).resize(reszEvt);
    $(reszEvt); // Or the below:
    $(document).ready(reszEvt);
    

    CodePen:http://codepen.io/anon/pen/yOmmjo

    【讨论】:

    • 嗯,我认为这行不通。我调整了我的 codePen,但是当我以小窗口大小(低于 840 像素)刷新浏览器时我没有看到结果......我希望它调整到窗口宽度,即使我没有主动调整我的大小浏览器窗口...你能分叉我的 CodePen,如果你看到它工作,请告诉我?
    • 我可以看到它工作...这就是为什么我将其发布为答案。 :) 可能您需要将事件处理程序带到外面?您正在执行setAnimation() 对吗?
    • 当我像以前一样调整窗口大小时它可以工作,但是如果我以较小的浏览器窗口大小重新加载页面(在 Chrome 中),比如假设 500 像素......你会得到水平滚动条,并且你可以看到它没有调整到我的浏览器窗口的宽度。我在这个 codePen codepen.io/celli/pen/pyMMWe 中有更新的代码
    • 感谢 Praveen,如果我的窗口宽度小于 840 像素,当我第一次加载页面时,如果你看到了一种方法,请告诉我——当我调整窗口大小时它会调整大小,但它不会如果窗口宽度小于 840 像素,则在我第一次加载页面时确认窗口大小。
    • 嗨,Praveen,我还尝试将整个函数包装在这样的函数中:$(window).on("load resize",function(e){ 但我仍然无法做到当我第一次加载页面时调整大小/缩放到窗口,如果页面宽度小于 840 像素......我必须有一个简单的方法......你能帮忙吗?
    猜你喜欢
    • 2021-11-02
    • 2011-03-29
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 2017-03-08
    相关资源
    最近更新 更多