html 中各种宽高的理解 client offset width height

本文详细解析了JS中的offsetWidth、offsetLeft等属性的含义,以及如何获取网页可见区域、滚动高度等关键信息。同时,文章还对比了不同浏览器下计算方式的差异,并提供了通用方法来获取客户端高度。

JS:offsetWidth\offsetleft 等图文解释   (2010-11-01 10:50:41)转载▼

标签: it分类: 工作日志

 

图片见附件.

 

document.documentElement.clientHeight 与 document.body.clientHeight  区别  

当html有<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

得到客户端高度方法为:document.documentElement.clientHeight  否则用 document.body.clientHeight 

通用方法:var height = document.documentElement.clientHeight ||  document.body.clientHeight  

 

 

网页可见区域宽: document.body.clientWidth;

网页可见区域高: document.body.clientHeight;

网页可见区域宽: document.body.offsetWidth (包括边线的宽);

网页可见区域高: document.body.offsetHeight (包括边线的宽);

网页正文全文宽: document.body.scrollWidth;

网页正文全文高: document.body.scrollHeight;

网页被卷去的高: document.body.scrollTop;

网页被卷去的左: document.body.scrollLeft;

网页正文部分上: window.screenTop;

网页正文部分左: window.screenLeft;

屏幕分辨率的高: window.screen.height;

屏幕分辨率的宽: window.screen.width;

屏幕可用工作区高度: window.screen.availHeight;

屏幕可用工作区宽度:window.screen.availWidth;

 

 

 

scrollHeight: 获取对象的滚动高度。

scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离

scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离

scrollWidth:获取对象的滚动宽度

offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度

offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置

offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置

event.clientX 相对文档的水平座标

event.clientY 相对文档的垂直座标

event.offsetX 相对容器的水平坐标

event.offsetY 相对容器的垂直坐标

document.documentElement.scrollTop 垂直方向滚动的值

event.clientX+document.documentElement.scrollTop 相对文档的水平座标+垂直方向滚动的量

  以上主要指IE之中,FireFox差异如下:

IE6.0、FF1.06+:

clientWidth = width + padding

clientHeight = height + padding

offsetWidth = width + padding + border

offsetHeight = height + padding + border

IE5.0/5.5:

clientWidth = width - border

clientHeight = height - border

offsetWidth = width

offsetHeight = height

 

HTML控件offsetTop、scrollTop等属性

假设 obj 为某个 HTML 控件。

 

obj.offsetTop 指 obj 距离上方或上层控件的位置,整型,单位像素。

 

obj.offsetLeft 指 obj 距离左方或上层控件的位置,整型,单位像素。

 

obj.offsetWidth 指 obj 控件自身的宽度,整型,单位像素。

 

obj.offsetHeight 指 obj 控件自身的高度,整型,单位像素。

 

转载:http://blog.sina.com.cn/s/blog_63426ff90100m8c3.html

当`width`和`height`属性在某些情况下无法使用时,这可能有以下几个原因: 1. **DOM元素未加载完成**:如果你尝试获取元素尺寸之前,页面上的元素还没有完全加载,`clientWidth`和`clientHeight`可能会为0。确保在操作这些属性之前,先检查元素是否已经存在并已加载。 ```javascript window.addEventListener('DOMContentLoaded', function() { const element = document.getElementById('yourElement'); if (element) { console.log(element.offsetWidth, element.offsetHeight); } else { console.log('Element not loaded yet.'); } }); ``` 2. **CSS影响**:如果元素的度或度被CSS样式(如`display: none;`, `visibility: hidden;`)或定位设置(如`position: absolute;`)影响,它们的实际大小可能不会反映在`width`和`height`上。你需要考虑这部分计算。 3. **跨浏览器兼容性**:不同浏览器对于元素尺寸的处理可能存在细微差异。确保你了解浏览器的特性和可能的兼容问题,特别是针对IE等较旧版本。 4. **`offset*` vs `client*`**:`offsetWidth`和`offsetHeight`是包括边距和滚动条在内的总尺寸,而`clientWidth`和`clientHeight`不包括边距。确认你正确地选择了要获取哪一种类型的数据。 5. **元素不存在或错误的选择器**:检查你的元素选择器是否准确无误,如果没有找到对应的元素,这些属性自然是无法访问的。 6. **权限限制**:有时出于安全策略,脚本可能没有足够的权限读取用户的屏幕尺寸信息。 排查问题后,根据具体情况调整你的代码,比如添加适当的延迟执行、处理异常或使用其他合适的测量方法。如果你能提供具体的代码片段或上下文,我可以更具体地帮助你。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值