好吧,我以为这会很简单,但事实证明并非如此。我想我只是在我的 HTML/CSS 中弄乱了一些东西,但是这里有。
我有一个像这样的基本页面:
HTML
<!DOCTYPE html>
<html>
<head>
<link href='test2.css' rel="stylesheet" type="text/css" />
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="test2.js"></script>
</head>
<body>
<div id="scroll"></div>
</body>
</html>
test2.css
* {
padding: 0;
margin: 0;
}
html, body {
height: 100%;
width: 100%;
}
#scroll {
height: 100%;
width: 100%;
overflow: scroll;
background-color: black;
}
test2.js
$(document).ready(function() {
// my resolution is 1440x900
alert('innerwidth should be 1425');
// all of these return 1440
alert('body innerwidth: ' + $('body').innerWidth());
alert('document width: ' + $(document).width());
alert('window width: ' + $(window).width());
alert('scroll div innerwidth: ' + $('#scroll').innerWidth());
alert('document.documentElement.clientWidth: ' + document.documentElement.clientWidth);
alert('document.documentElement.scrollWidth: ' + document.documentElement.scrollWidth);
});
所以我在页面上有一个元素......一个占据整个屏幕的 div,或者更确切地说,它应该占据整个屏幕减去滚动条。现在,我一直在窥探如何在没有滚动条的情况下获取页面的宽度和高度,但不幸的是,它们都没有返回正确的值......这让我相信我在我的 HTML 中错过了这条船或 CSS。
我查看了以下内容:
所以我需要一种方法来返回我的可视屏幕的值减去相应的滚动条值......所以对于我的宽度,我的值应该是 1425,因为滚动条是 15 像素宽。我以为这就是 innerWidth 的工作,但显然我错了?
任何人都可以提供任何见解吗?(我正在运行 Firefox 24。)
编辑
为了添加一些背景,我有一个空白页。我将在此页面中一一添加元素,并且在计算这些元素的大小时需要使用页面的宽度。最终,这个页面会越来越大,直到出现滚动条,这就是为什么我试图从一开始就强制滚动条出现,但显然,这仍然没有任何作用。
编辑2
这是更有趣的事情......如果我这样做document.getElementById('scroll').clientWidth
,我会得到正确的innerWidth,但如果我这样做$('#scroll').width()
,$('#scroll').innerWidth()
他们都会返回最大分辨率......听起来像一个jQuery错误。