`
newslxw
  • 浏览: 213790 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

html中height,offsetheight等差别

 
阅读更多

clientHeight

大部分浏览器对 clientHeight 都没有什么异议,都认为是内容可视区域的高度,也就是说页面浏览器中可以看到内容的这个区域的高度,即然是指可看到内容的区域,滚动条不算在内。但要注意padding是算在内。其计算方式为clientHeight = topPadding + bottomPadding+ height - scrollbar.height

offsetHeight

在IE6,IE7,IE8以及最新的的FF, Chrome中,在元素上都是offsetHeight = clientHeight + 滚动条 + 边框。 

scrollHeight

 

scrollHeight是元素的padding加元素内容的高度。这个高度与滚动条无关,是内容的实际高度。

计算方式 :scrollHeight = topPadding + bottomPadding + 内容margix box的高度。

在浏览器中的区别在于:

IE6、IE7 认为scrollHeight 是网页内容实际高度,可以小于clientHeight。

FF、Chrome 认为scrollHeight 是网页内容高度,不过最小值是clientHeight。

 

注: 以上都是对于一般元素而方言的,body和documentElement的clientHeight, offsetHeight和scrollHeight在各个浏览器中的计算方式又不同。在所有的浏览器中,如果你想获取整个视窗的高度,你得用documentElement.clientHeight,因为body.clientHeight是由它的内容决定的。 关于body和documentElement的这些属性,则完全是另外一回事:

 

FF19

 

在body上设置overflow:scroll就是设置浏览器的滚动条,导致body.clientHeight永远都等于body.scrollHeight。

body

clientHeight:body.padding+ body.height(css设置或内容撑的);

offsetHeight:clientHeight+ body.border;

scrollHeight== clientHeight。

documentElement

clientHeight= window视窗高度 -scrollbar.width。

offsetHeight= body.offsetHeight  + body.margin。

scrollHeight= 内容的高度(与body的height样式无关),但最小值是documentElement.clientHeight。

元素上

offsetHeight= padding + border + height。

clientHeight= padding + height - scrollbar.width。

scrollHeight>= clientHeight

从结果分析,FF认为scrollHeight的最小高度是clientHeight。

offsetLeft = 元素border左上角到window视窗原点的距离 或 到offsetParent的borderbox顶部的距离。

Chrome

body

clientHeight= body.padding + body.height(css设置或内容撑大);

offsetHeight = body.clientHeight + body.border;

scrollHeight= body.padding + 内容的高度(与height样式无关),但最小值是documentElement.clientHeight。

documentElement

clientHeight= window视窗高度 – 滚动条高度。

offsetHeight  = body.offsetHeight + body.margin;

scrollHeight  = 内容的高度(与body上的height无关),但最小值是documentElement.offsetHeight。

元素上

offsetHeight = padding + border + height。

clientHeight = padding + height - scrollbar.width。

scrollHeight >= clientHeight

Safari 5

body

clientHeight= body.padding + body.height(CSS或内容撑的);

offsetHeight= clientHeight + border;

scrollHeight= body.padding + 内容的高度(与height样式无关),但最小值是documentElement.clientHeight。

documentElement

clientHeight = window窗口大小 – 滚动条大小

offsetHeight = body.offsetHeight + body.margin

scrollHeight= 内容的高度(与body上的height无关),但最小值是documentElement.offsetHeight。

IE8

在IE8下,滚动条的大小是17个像素。

body

clientHeight= body.padding + body.height(css设置或内容撑大)

offsetHeight = clientHeight + body.border

scrollHeight =内容的高度(与body上的height无关),但最小值是clientHeight。

documentElement

clientHeight = 窗口大小(除去滚动条后)

offsetHeight = clientHeight + 滚动条大小 + body.border

scrollHeight=内容的高度(与body上的height无关),但最小值是body.offsetHeight+ margin。

元素上

offsetHeight = padding + border + height。

clientHeight = padding + height - scrollbar.width。

scrollHeight >= clientHeight

从结果分析,FF认为scrollHeight的最小高度是clientHeight。

offsetLeft = 元素border左上角到画布原点的距离 或 到offsetParent的borderbox顶部的距离。

IE7

在IE7中,body上设置的滚动条并不是窗口的滚动条,这个需要注意。

body

clientHeight= body.padding + height(css设置或内容撑大)– body上的滚动条。

offsetHeight= clientHeight + 滚动条的大小+body.border。

scrollHeight=   内容的高度(与body上的height无关)。

documentElement

clientHeight = window视窗大小(与滚动条的有无无关)

offsetHeight = clientHeight。

scrollHeight = body.offsetHeight + border.margin

元素

offsetHeight = padding + border + height。

clientHeight = padding + height - scrollbar.width。

scrollHeight = padding + 内容marginbox的高度

从结果分析,IE7认为scrollHeight可以小于clientHeight。

offsetLeft = 元素border box左上角到父容器(不是offsetParent)的borderbox左上角的距离。

IE6

在IE6中,与IE7类似, body上设置的滚动条并不是窗口的滚动条。

body

clientHeight = body.padding + body.height

offsetHeight = body.clientHeight + body.border + body上滚动条大小。

scrollHeight =内容的高度(与body上的height无关)。

documentElement

在IE6中,与IE7类似,虽然body上设置的滚动条并不是窗口的滚动条,但它的clientHeight和offsetHeight还算与其它浏览器想统一。

clientHeight = 窗口大小(除去窗口滚动条大小后)

offsetHeight =clientHeight + body.border

scrollHeight = body.offsetHeight + body.margin

元素

offsetHeight = padding + border + height。

clientHeight = padding + height - scrollbar.width。

scrollHeight = padding + 内容margin box的高度

从结果分析,IE6认为scrollHeight可以小于clientHeight。

 

分享到:
评论

相关推荐

    详解HTML元素的height、offsetHeight、clientHeight、scrollTop等梳理

    在前端的日常开发中,我们经常无可避免的需要获取或者监听一些页面的属性,那么我们需要经常了解一些属性代表的含义才能更好地使用这些属性。特别是一下这些: 尺寸相关:offsetHeight、clientHeight、scrollHeight...

    火狐在用offsetHeight获取div的高度时为0的解决方法

    在使用火狐浏览器尝试获取使用了浮动(float)布局的div元素的高度时,经常会遇到offsetHeight返回值为...通过以上方法,可以有效解决在火狐浏览器中使用offsetHeight获取使用了浮动布局的div元素高度时返回为0的问题。

    获取iframe子网页的Height

    在网页开发中,`iframe`(Inline Frame)是一种嵌入式框架,用于在单个HTML文档中嵌入另一个HTML文档。它允许开发者将不同的页面或应用整合到同一个页面上,提供了一种灵活的布局和内容分发方式。然而,由于浏览器的...

    网页图片无缝循环滚动html代码

    - **DOM操作**:`document.getElementById`获取元素,`innerHTML`获取或设置HTML内容,`offsetHeight`、`offsetWidth`等属性获取元素尺寸信息。 - **事件处理**:`onmouseover`和`onmouseout`用于响应鼠标悬停和离开...

    解析offsetHeight,clientHeight,scrollHeight之间的区别

    在Web开发中,理解和掌握offsetHeight, clientHeight, scrollHeight这三个属性是非常重要的,它们用于获取HTML元素的高度信息,但各有其特性和应用场景。下面将详细解释这三个属性的区别及其在不同浏览器中的表现。 ...

    html鼠标跟随移动的例子

    接着,我们要利用CSS对这个元素进行样式定义,包括位置、大小、颜色等属性。通常,我们会设置元素的初始位置,以便在JavaScript中对其进行动态调整。例如: ```css #followMouse { position: absolute; width: 50...

    div-bigbox.rar_HTML中bigbox

    在HTML页面设计中,我们经常需要为用户提供更加直观和丰富的用户体验,其中图片放大镜效果就是一个常见且实用的交互设计。标题“div-bigbox.rar_HTML中bigbox”提到了使用`div`标签来实现这一功能,这通常涉及到CSS...

    html2canvas生成清晰的图片实现打印的示例代码

    前言 最近由于公司业务要求,需要完成一个一键生成照片图片打印总图的功能 html2canvas是一个非常强大的截图插件,很多生成图片和打印的场景会用到它 ... height: dom.offsetHeight }).then(function

    html这种通过javaScript事件修改矩形框子的大小,改变div宽高

    在HTML页面中,JavaScript是一种强大的脚本语言,用于增加网页的交互性和动态功能。当我们谈论“html这种通过javaScript事件修改矩形框子的大小,改变div宽高”时,实际上是在讨论如何利用JavaScript来动态调整HTML...

    放大器,html文档

    在实际项目中,可能还需要考虑浏览器兼容性、性能优化等问题,例如使用事件委托、防抖或节流函数来减少不必要的计算。 在“购物”场景中,放大镜功能不仅有助于用户在购买前看清商品细节,避免因图片模糊导致的退货...

    Js将html页面或div生成图片并下载至本地(支持跨域图片,背景图/img标签)

    canvas.height = element.offsetHeight; document.body.appendChild(canvas); ``` 3. **将HTML渲染到Canvas**:使用`HTML2Canvas`库可以将HTML元素渲染到Canvas上。这是一个开源库,它可以解析HTML元素并将其绘制到...

    前端编程技术+html2canvas 使用总结

    height) height = container.offsetHeight; // html2canvas配置项 const ops = { scale, useCORS: true, allowTaint: false, ...options }; return html2canvas(container, ops).then(canvas => { // ...

    JS+HTML图片放大镜效果

    canvas.height = magnifier.offsetHeight * scaleFactor; ctx.drawImage(originalImg, offsetX / scaleFactor, offsetY / scaleFactor, originalImg.offsetWidth / scaleFactor, originalImg.offsetHeight / ...

    html本屏漂浮

    var elementBottom = floatingElement.offsetTop + floatingElement.offsetHeight; if (scrollTop + windowHeight >= elementBottom) { floatingElement.style.position = 'absolute'; // 或者 'relative' ...

    HTML+css+JavaScript实现放大镜效果

    在实际项目中,可能还需要考虑其他因素,如移动设备的适配、性能优化等。例如,使用CSS3的`transform`属性可以提高动画性能,或者通过添加触摸事件支持移动设备的放大功能。 总结起来,HTML、CSS和JavaScript共同...

    HTML DIV下载为图片 JS下载IDV为图片下载例子(亲测有效)

    canvas.height = document.getElementById(divId).offsetHeight; // 获取canvas绘图上下文 var ctx = canvas.getContext('2d'); // 将div内容绘制到canvas ctx.drawImage(document.getElementById(divId), 0,...

    html学习心得,我感觉很好

    本篇文章总结了 HTML 中 table 标签的各种属性和方法,涵盖了 ACCESSKEY、ALIGN、ATOMICSELECTION、BACKGROUND、BEGIN 等多个方面。这些属性和方法可以帮助开发者更好地理解和使用 HTML table 标签,提高开发效率和...

    html评论滚动.rar

    在评论滚动中,CSS可以用来设置评论框的样式,如宽度、高度、颜色、边距等。同时,也可能通过CSS动画来实现平滑的滚动效果。例如: ```css #comment-container { height: 300px; /* 设置评论框高度 */ overflow: ...

    js放大镜 html特效

    实际应用中,可能需要考虑更多细节,比如添加平滑过渡效果、兼容不同的浏览器、优化性能(避免频繁计算和更新DOM),或者为放大镜添加阴影、边框等视觉效果。 综上所述,利用JavaScript和HTML,我们可以创建出具有...

    html下拉刷新

    这种功能在现代Web开发中被广泛运用,尤其是配合Ajax等技术实现无刷新加载,提高用户体验。 在HTML中,下拉刷新并不是一个内置的功能,而是通过CSS、JavaScript(通常是jQuery或者其他JavaScript库)以及可能的Ajax...

Global site tag (gtag.js) - Google Analytics