javascript - 确定最大可能的 DIV 高度

标签 javascript css dom browser cross-browser

是否有推荐的方法来确定 DIV 可以设置的最大高度并在每个浏览器中保持可见?这似乎没有在任何地方记录,并且是高度特定于实现的。

例如,看下面的测试脚本:

http://jsfiddle.net/NP5Pa/2/

这是一个简单的测试,用于在元素的相应 clientHeight 变为 0 之前找到您可以设置 DIV 样式高度属性的最大值。您可以通过单击“查找最大值”然后递增来确认这一点将找到的高度加 1,然后单击“设置高度”。

一些例子(Win7/64):

Chrome (14.0) :    134,217,726 px
Safari (5.1)  :    134,217,726 px
IE (9.0)      :     10,737,418 px
FF (7.0.1)    :     17,895,697 px

我猜 WebKit 产生相同的结果并不奇怪 - 更令人惊讶的是 IE 和 FF 如此不同。

有没有更好的方法?你在 32 位系统中得到不同的结果吗?

--编辑:更新 fiddle 以停止 Opera 的 10,000,000,000(并更快到达那里)。这是很多像素。

最佳答案

这是您的代码,已修改为使用二进制搜索(因此速度更快)。

http://jsfiddle.net/thai/zkuGv/4/

它从 1 像素开始,然后将其大小加倍,直到达到最大值(我使用 253,这是可以在 JavaScript 中存储而不会丢失精度的最大整数,并且会使二进制搜索 buggy ),或者 div 折叠为零像素。

假设我们将 div 设置为 h 大小,然后它消失了,那么最大大小必须在 h/2 和 h 之间。我们从那里二进制搜索高度 h ,当设置为高度 h 时不会使 div 消失,但当设置为 h+ 时会消失1.

那么对于Opera我们可以得出一个结论:2147483583像素。

关于javascript - 确定最大可能的 DIV 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7719273/

相关文章:

html - 如何使用 CSS 制作 CSS 下拉菜单?

javascript - 将一张图片放在另一张图片之上,不透明度

css - 网格媒体功能的网格输出设备和位图输出设备是什么?

javascript - 推特 Bootstrap : Performance comparison between Data Attribute and Programmatic APIs?

javascript - 获取 jQuery 和/或 DOM 对象的 HTML 字符串

javascript - jquery和ajax打开链接和div

javascript - 我怎样才能让一个数字在 React 中变成可编辑的 onClick?

javascript - 从数组中查找国家坐标

javascript - jQuery 触发按键不起作用

JavaScript:textarea 滚动了多少?