JavaScript – 获取浏览器高度
我正在寻找一个代码片段来获取浏览器窗口内的可视区域的高度。
我有这个代码,但是它有一些bug,就好像身体没有超过窗口的高度,然后又回来了。
document.body.clientHeight;
我已经尝试过其他一些东西,但是要么返回NaN,要么与上面的高度相同。
有谁知道如何获得浏览窗口的真正高度?
你会想要这样的,从http://www.howtocreate.co.uk/tutorials/javascript/browserwindow
function alertSize() { var myWidth = 0, myHeight = 0; if( typeof( window.innerWidth ) == 'number' ) { //Non-IE myWidth = window.innerWidth; myHeight = window.innerHeight; } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { //IE 6+ in 'standards compliant mode' myWidth = document.documentElement.clientWidth; myHeight = document.documentElement.clientHeight; } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { //IE 4 compatible myWidth = document.body.clientWidth; myHeight = document.body.clientHeight; } window.alert( 'Width = ' + myWidth ); window.alert( 'Height = ' + myHeight ); }
所以这是现代浏览器的innerHeight
,IE的documentElement.clientHeight
,不赞成使用/ quirks的body.clientHeight
。
尝试使用jQuery:
window_size = $(window).height();
你可以使用window.innerHeight
我喜欢这样做的方式就像是一个三元的任务。
var width = isNaN(window.innerWidth) ? window.clientWidth : window.innerWidth; var height = isNaN(window.innerHeight) ? window.clientHeight : window.innerHeight;
我可能会指出,如果在全局上下文中使用window.height和window.width,
IE浏览器和其他浏览器的作品据我所知(我只在IE11上testing过)。
超级干净,如果我没有错,高效。
有一个简单的方法比一大堆if语句。 使用or(||)运算符。
function getBrowserDimensions() { return { width: (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth), height: (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight) }; } var browser_dims = getBrowserDimensions(); alert("Width = " + browser_dims.width + "\nHeight = " + browser_dims.height);
这也应该起作用。 首先创build绝对位置和100%高度的绝对div元素:
<div id="h" style="position:absolute;top:0;bottom:0;"></div>
然后,通过offsetHeight
从该元素获取窗口高度
var winHeight = document.getElementById('h').offsetHeight;
我更喜欢我刚想出来的方式…没有JS … 100%的HTML和CSS:
(无论内容大小如何,它都会在中间完美alignment。
HTML文件
<html><head> <link href="jane.css" rel="stylesheet" /> </head> <body> <table id="container"> <tr> <td id="centerpiece"> 123 </td></tr></table> </body></html>
CSS文件
#container{ border:0; width:100%; height:100%; } #centerpiece{ vertical-align:middle; text-align:center; }
为了在td内保持图像/ div居中,你可以尝试使用margin:auto; 并指定一个div尺寸。 – 尽pipe如此,说'文本alignment'属性将不仅仅是一个简单的文本元素。
JavaScript版本的情况下,如果jQuery不是一个选项。
window.screen.availHeight
var winWidth = window.screen.width; var winHeight = window.screen.height; document.write(winWidth, winHeight);
有了JQuery,你可以试试$(window).innerHeight()
(适用于Chrome,FF和IE)。 使用bootstrap模式,我使用了类似下面的内容;
$('#YourModal').on('show.bs.modal', function () { $('.modal-body').css('height', $(window).innerHeight() * 0.7); });