获取滚动条在javascript中出现的高度
Get height at which scroll bars will appear in javascript
有几种方法可以问这个问题:
-
我怎么能得到的高度(以像素为单位),在页面将开始有滚动条?换句话说,我如何获得滚动条将出现的窗口高度?
-
我怎么能得到页面上所有元素的最大高度,没有相对高度(例如高度:100%)?
这个问题是相关的,但在相对高度的情况下,答案并不是我想要的:查找可以具有绝对定位元素的页面/文档内容的完整高度
我做了一个我正在谈论的js小提琴:http://tinyurl.com/kgf8dae。不幸的是,jsfiddle似乎打破了div e的相对高度-在普通浏览器中将其作为html页面运行,以查看实际行为
在jQuery中,check可能是这样的
if( $(document).height() > $(window).height() ){ /* There will be a scrollbar */ }
您可以在DOM更改和窗口大小调整事件中执行此检查,以确定是否出现了滚动条。预先确定一个事件是否会导致滚动条的出现可能会很棘手,并且可能需要对页面和潜在事件有一定的了解才能有效地处理。
这是通过jQuery标记的所以我将使用jQuery;即使在问题体中没有提到。
a)这听起来像你想要得到视窗(窗口)的高度;可以像这样检索:
var height = $(window).height();
如果文档(页面)的高度超过了窗口的高度,并且没有CSS属性阻止滚动条的显示,那么滚动条确实是可见的。
if( $(document).height() > $(window).height() )
b)这将是一个有点棘手,在某种意义上,唯一的方法离开我的头是查询每个DOM元素。这不是一个优雅的解决方案;和事实上,我要求你重新考虑你的方法,如果你真的必须这样做。也就是说. .好奇心…
如果你正在寻找最大的高度,在最大元素的意义上-那么这将工作:
// Get height of largest element.
var max_height = 0;
$('*').each( function(){
// skip <html> and <body>
if( ( $(this).get(0) == $('body').get(0) ) || ( $(this).get(0) == $('html').get(0) ) )
return;
var current_height = $(this).height();
if( current_height > max_height )
max_height = current_height;
});
例如,在这个页面上运行…
> console.log( max_height );
570
然而,我不确定你是否想要所有组合元素的最大高度…在这种情况下,我们显然需要将所有元素加起来,但有一个明显的问题:元素是嵌套的!
如果这是你想要的,那么通过使用.children()
,我们可以迭代元素/body的直接子元素的长度。
// Get height of all combined elements
var combined_height = 0;
$('body').each( function(){ // replace with containing element?
combined_height = combined_height + jQuery(this).height();
});
例如,在这个页面上运行:
> console.log(combined_height);
2176
使用您通过(jsfiddle.net/RMe3n/1)提供的示例中的HTML/CSS。答案永远都是242。
但是,我假设您正在寻找一种更动态的方法。在DOM就绪后运行以下命令也将生成242:
var answer = 0;
$('#absolutes > div').each(function(){
var h = $(this).outerHeight(true);
if(answer < h) answer = h;
})
alert(answer);
虽然上面的方法可以解决您提供的特定HTML/CSS,但它对页面的HTML结构和CSS做了很多假设。
是否有可能,你正试图解决的问题与JS可以解决在一个"更干净"的方式通过调整你的页面的HTML/CSS ?
如果你正在寻找一种防傻瓜的JS方法来解释现在存在的所有独特的布局/样式,并且可能存在更多的CSS3显示类型在未来被采用,我相信你不走运。没有值得推荐的、一致的、有效的方法来做到这一点。
注意:如果这不仅仅是一个理论讨论,考虑更具体地说明你所面临的确切场景,因为可能有一个截然不同的方法可以解决这个问题。
- 当canvas's的高度超过屏幕's的高度(当滚动条出现时)
- 在没有滚动条的情况下,使整个页面滚动到顶部某个高度以下
- 如何“;“修复”;显示滚动条时的容器元素高度
- 获取占x滚动条高度的窗口内部高度
- 我想比较滚动条的高度和文档的高度
- 无限滚动,滚动条高度恒定
- CSS:为什么我有一个100%高度的滚动条
- JQuery:手风琴高度样式:填充导致垂直滚动条
- jQuery 获取文档宽度和高度,不包括水平/垂直滚动条
- 将画布元素的高度和宽度设置为 window.innerHeight/innerWidth 导致滚动条
- jQuery TextExt:最大高度和滚动条
- 使用图像作为webkit滚动条 - -webkit-scrollbar-track-piece的最小高度
- 高度 100% 自定义滚动条
- jQuery scrollTop 不适用于具有高度和滚动条的 HTML 元素
- javascript计算滚动条高度
- Tablesorter滚动条's的高度在触发更新后保持不变
- D3使用滚动条进行缩放,滚动条宽度和高度可根据缩放比例进行调整
- 如何更改滚动条's在此网站上的高度
- 如何使Bootstrap jQuery数据表响应和增加/减少滚动条高度根据页面的大小
- 获取滚动条在javascript中出现的高度