用户调整窗口大小后,有什么方法可以获取浏览器的宽度和高度。例如,如果窗口是 1920 x 1080 并且用户将窗口更改为 500 x 500,有没有办法在 JavaScript 或 jquery 中获取这两个新值?
9 回答
纯 Javascript 答案:
var onresize = function() {
//your code here
//this is just an example
width = document.body.clientWidth;
height = document.body.clientHeight;
}
window.addEventListener("resize", onresize);
这在 chrome 上运行良好。但是,它仅适用于 chrome。一个稍微跨浏览器的示例是使用事件目标属性“outerWidth”和“outerHeight”,因为在这种情况下,事件“目标”就是窗口本身。代码是这样的
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);
这在 Firefox 和 chrome 中运行良好
希望能帮助到你 :)
编辑:在 ie9 中测试,这也有效:)
如果你需要知道这些值来进行布局调整,我敢打赌你打算听这些值。我建议Window.matchmedia()
为此目的使用 API。
它的性能要好得多,基本上相当于 JS 的 CSS 媒体查询。
非常快速的使用示例:
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 */
}
您还可以设置一个侦听器,每次matches
属性状态更改时都会调用该侦听器。
通过监听resize
事件是可能的。
$(window).resize(function() {
var width = $(window).width();
var height = $(window).height();
})
您可以使用 JQuery resize() 函数。还要确保添加相同的调整大小逻辑来重新加载事件。如果用户在大小窗口中重新加载,您的逻辑将不起作用。
$(window).resize(function() {
$windowWidth = $(window).width();
$windowHeight = $(window).height();
});
$(document).ready(function() {
//same logic that you use in the resize...
});
实际上,我使用它,它对我有很大帮助:
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);
}
使用 jQuery resize 方法来监听窗口大小的变化。在回调内部,您可以获得高度和宽度。
$(window).resize(function(){
var width = $(window).width();
var height = $(window).height();
});
您可以使用resize
事件以及height()
和width()
属性
$(window).resize(function(){
var height = $(window).height();
var width = $(window).width();
});
调整窗口大小后获取元素实际宽度和高度的最简单方法如下:
<div id="myContainer">
<!--Some Tages ... -->
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(function () {
$(window).resize(function () {
//The below two lines of codes more Important to clear the previous settings to get the current measure of width and height
$('#myContainer').css('height', 'unset');
$('#myContainer').css('width', 'unset');
var element = $('#myContainer');
var height = element.height();
var width = element.width();
//Below two lines will includes padding but not border
var innerHeight = element.innerHeight();
var innerWidth = element.innerWidth();
//Below two lines will includes padding, border but no margin
var outerHeight = element.outerHeight();
var outerWidth = element.outerWidth();
//Below two lines will includes padding, border and margin
var outerHeight = element.outerHeight(true);
var outerWidth = element.outerWidth(true);
});
});
</script>
您可以使用event
对象来获取高度和宽度,我使用解构赋值和target
指向window
:
const handleGetDim = ({ target }) => ({
width: target.innerWidth,
height: target.innerHeight,
});
window.addEventListener('resize', handleGetDim);