2016-05-24 74 views
0

我有一個javascript resize函數,當我調整瀏覽器的大小時,但如何啓動我的瀏覽器窗口以及一定的大小時如何獲取它來調整我的內容?您可以在代碼筆http://codepen.io/celli/pen/pyMMWe中看到此內容,當我們調整瀏覽器窗口時,我的內容將調整大小 - 但是,如果您使用瀏覽器以較小尺寸(小於840px)開始刷新codePen,則內容不會「預先」調整大小。我如何添加代碼來實現這一點?Javascript在第一次運行時調整

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 { 
    } 
} 

回答

2

最好的辦法,將其轉換成一個函數。替換:

$(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

+0

姆,我沒有看到工作。我調整了我的codePen,但是當我以小窗口大小(小於840px)刷新瀏覽器時,我沒有看到結果...我希望它調整到窗口寬度,即使我沒有主動調整我的大小瀏覽器窗口...你能分叉我的CodePen,並讓我知道如果你看到它的工作? – celli

+0

我可以看到它的工作......這就是爲什麼我發佈它作爲答案。 ':''也許你需要把事件處理程序帶到外面?你正在執行'setAnimation()'嗎? –

+0

它可以像我以前一樣調整窗口的大小,但如果我在小瀏覽器窗口大小(比如說Chrome瀏覽器)中重新加載頁面,比如說500px ...你會看到水平滾動條,而且你可以看到它沒有調整到我的瀏覽器窗口的寬度。我在這個codePen http://codepen.io/celli/pen/pyMMWe – celli

相關問題