2013-04-05 40 views

Trả lời

2

Có thể bằng cách nghe sự kiện resize.

$(window).resize(function() { 
    var width = $(window).width(); 
    var height = $(window).height(); 
}) 
1

Sử dụng phương pháp thay đổi kích thước của jQuery để nghe thay đổi kích thước cửa sổ. bên trong gọi lại bạn có thể nhận được chiều cao và chiều rộng.

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

}); 
+0

Tôi đã thử cách này nhưng tôi vẫn nhận được kích thước gốc – Gregwest85

+0

bạn có thể chia sẻ mã của mình không? – Anoop

1

Bạn có thể sử dụng các sự kiện resize, cùng với height()width() tính

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

See some more examples here

4

Bạn có thể sử dụng JQuery thay đổi kích thước) chức năng (. Ngoài ra, hãy đảm bảo bạn thêm cùng một logic thay đổi kích thước để tải lại sự kiện. Nếu người dùng tải lại trong cửa sổ có kích thước, logic của bạn sẽ không hoạt động.

$(window).resize(function() { 
         $windowWidth = $(window).width(); 
          $windowHeight = $(window).height(); 
         }); 

$(document).ready(function() { 
     //same logic that you use in the resize... 
    }); 
+0

Jay. cảm ơn. Có thể tránh trùng lặp mã không? Tôi sử dụng mega-menu cho trang web của tôi và cần tự động thay đổi kích thước cửa sổ trên thay đổi kích thước cửa sổ và sau khi tải lại. Tại thời điểm này, tôi sử dụng cùng một mã trên các sự kiện 'resize()' và 'ready()'. – Andry

+0

@Andry Bạn có thể chia sẻ mã không? –

13

tinh khiết Javascript câu trả lời:

var onresize = function() { 
    //your code here 
    //this is just an example 
    width = document.body.clientWidth; 
    height = document.body.clientHeight; 
} 
window.addEventListener("resize", onresize); 

này hoạt động tốt trên chrome. Tuy nhiên, nó chỉ hoạt động trên chrome. Một ví dụ trên nhiều trình duyệt hơn là sử dụng các thuộc tính đích của sự kiện "outerWidth" và "outerHeight", vì trong trường hợp này, sự kiện "target" là chính cửa sổ. Mã này sẽ là như thế này

var onresize = function(e) { 
    //note i need to pass the event as an argument to the function 
    width = e.target.outerWidth; 
    height = e.target.outerHeight; 
} 
window.addEventListener("resize", onresize); 

này hoạt động tốt trong firefox và chrome

Hy vọng nó sẽ giúp :)

Edit: Tested trong ie9 và điều này đã làm việc quá :)

+0

Chỉnh sửa: document.width và document.height không nên được sử dụng nữa và không hoạt động đối với tôi trên Chrome. Thay vào đó, bạn nên sử dụng document.body.clientWidth và document.body.clientHeight. Xem http://www.howtocreate.co.uk/tutorials/javascript/browserwindow –

3

Thực tế, Tôi sử dụng điều này và nó giúp tôi rất nhiều:

var TO = false; 
    var resizeEvent = 'onorientationchange' in window ? 'orientationchange' : 'resize'; 
    $(window).bind(resizeEvent, function() { 
     TO && clearTimeout(TO); 
     TO = setTimeout(resizeBody, 200); 
    }); 
    function resizeBody(){ 
     var height = window.innerHeight || $(window).height(); 
     var width = window.innerWidth || $(window).width(); 
     alert(height); 
     alert(width); 
    } 
0

Nếu bạn cần biết những giá trị này để làm layou t điều chỉnh, tôi đặt cược bạn có kế hoạch lắng nghe những giá trị đó. Tôi khuyên bạn nên sử dụng API Window.matchmedia() cho mục đích đó thay thế.

Đây là much more performant và về cơ bản là tương đương với các truy vấn phương tiện CSS.

dụ Rất nhanh chóng sử dụng:

if (window.matchMedia("(max-width: 500px)").matches) { 
    /* the viewport is less than or exactly 500 pixels wide */ 
} else { 
    /* the viewport is more than 500 pixels wide */ 
} 

Bạn cũng có thể thiết lập một người biết lắng nghe mà sẽ được gọi mỗi khi trạng thái của matches thay đổi tài sản.

Xem MDN cho descriptionexample of using a listener.

Các vấn đề liên quan