不同浏览器下高度的区别
一、 Html 页面代码
<!DOCTYPE html> <HTML> <HEAD> <TITLE>A Simple Clock</TITLE> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <BODY> <DIV ID=oDiv STYLE="overflow:auto; width:200px;height:100px;word-wrap:break-word;word-break:break-all;border:1px red solid;font-size:14px;font-family:' 宋体 ';line-height:25px; "> 我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容我是内容 </DIV> <BUTTON οnclick="alert(document.getElementById('oDiv').clientHeight)">client Heighth</BUTTON> <BUTTON οnclick="alert(document.getElementById('oDiv').offsetHeight)">offset Height</BUTTON> <BUTTON οnclick="alert(document.getElementById('oDiv').scrollHeight)">scroll Height</BUTTON> <BUTTON οnclick="alert(document.getElementById('oDiv').scrollTop)">scroll Top</BUTTON> </BODY> </HTML> |
二、 未加字体行高测试结果
去掉上面html 代码中字体和行高(也就是红色区域)的测试结果:
浏览器 | clientHeight | offsetHeight | scrollHeight | scrollTop |
IE8 | 100 | 102 | 228 | 128 |
FireFox 3.6.15 | 100 | 102 | 252 | 150 |
Opera 10.70 | 100 | 102 | 192 | 92 |
Safari5.0.3 | 100 | 102 | 239 | 139 |
结论:此四个浏览器的scrollHeight 和scrollTop 结果差别比较大,基本上scrollHeight = clientHeight + scrollTop
三、 加上字体行高后结果
在html 代码中加上字体和行高(也就是步骤一中的红色区域)的代码测试结果:
浏览器 | clientHeight | offsetHeight | scrollHeight | scrollTop |
IE8 | 100 | 102 | 250 | 150 |
FireFox 3.6.15 | 100 | 102 | 250 | 150 |
Opera 10.70 | 100 | 102 | 250 | 150 |
Safari5.0.3 | 100 | 102 | 244 | 144 |
结论:只有Safari 浏览器下的scrollHeight 高度有点偏差,与其他浏览器相比,差了6 个像素,这6 个像素可能是safari 计算scrollTop 的时候的差别。完全满足scrollHeight = clientHeight + scrollTop
四、 最终结论:
(1) 要支持多浏览器,编写html 代码的时候一定要指定字体大小、字体和行高
(2) 对html 代码加上字体大小、字体和行高后,满足下面的公式:scrollHeight = clientHeight + scrollTop
(3) clientHeight :指对象的可见区域
offsetHeight :指对象的可见区域加上边框的高度
scrollHeight :由clientHeight+scrollTop 的高度决定
scrollTop :对象的滚动条距对象top 的距离,也就是竖直方向滚动的距离