一、offset、client、scroll

clientWidth,clientHeight,clientLeft,clientTop;
offsetWidth,offsetHeight,offsetLeft,offsetTop,offsetParent;
scrollWidth,scrollHeight,scrollLeft,scrollTop。

二、clientWidth、offsetWidth、scrollWidth的区别

// 网页总高度
document.documentElement.offsetHeight
document.documentElement.scrollHeight
document.body.offsetHeight
document.body.scrollHeight
// 视口高度
window.innerHeight // 包括滚动条
document.documentElement.clientHeight // 不包括滚动条

1、元素内容的可视区的宽度,不包含滚动条边线和border,只包含width、padding,会随元素显示大小的变化而改变。

clientWidth = padding + width; 

2、元素整体的实际宽度,包含滚动条边线,border、width、padding,会随元素显示大小的变化而改变。

offsetWidth = padding + width + border; 

3、元素的实际内容的宽度,不包含滚动条边线,包含width、padding及溢出内容,会随元素中内容超过可视区后而变大。

scrollWidth = padding + 包含内容的完全宽度; 

4、元素内容不超过可视区时,无滚动条。

clientWidth = scrollWidth

5、元素内容超过可视区时,有滚动条。

clientWidth < scrollWidth
element.scrollHeight - element.scrollTop === element.clientHeight
//滚动到内容底部时,上面等式为true;
//没有滚动到内容底部时,上面等式为false;
//判断用户是否滚动到了区块的底部。

三、clientTop、offsetTop、scrollTop的区别

元素的边框厚度,距离父元素的高度,滚动的高度。

//整个网页滚动的垂直距离
document.documentElement.scrollTop

获取元素到顶部的距离用offsetTop,有时并不准确,可以用getBoundingClientRect(),用法如下:

function getRect(oDiv){
var rect = oDiv.getBoundingClientRect();
var top = document.documentElement.clientTop;
var left = document.documentElement.clientLeft;
//兼容IE
return{
top: rect.top - top,
bottom: rect.bottom - top,
left: rect.left-left,
right: rect.right - left
}
}
var obj = GetRect(oDiv);
console.log(obj.top); //元素上边到视图顶部的距离
console.log(obj.left); //元素左边到视图左部的距离
console.log(obj.bottom); //元素下边到视图顶部的距离
console.log(obj.right); //元素右边到视图左部的距离

四、elem.offsetTop和elem.style.top的区别
elem.offsetTop和elem.style.top都可以获得HTML元素距离上方或外层元素的位置。
1、返回值不同

elem.offsetTop返回的是数字,而elem.style.top返回的是字符串,数字+px。

2、读写可行性

elem.offsetTop只读,而elem.style.top可读写。

element对象的更多相关文章

  1. JavaScript基础20——element对象

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. javascript高级程序设计---Element对象

    Element对象对应网页的HTML标签元素.每一个HTML标签元素,在DOM树上都会转化成一个Element节点对象(以下简称元素节点).元素节点的nodeType属性都是1,但是不同HTML标签生 ...

  3. DOM - Element 对象

    http://www.runoob.com/dom/dom-element.html Element 对象 Element 对象代表 XML 文档中的一个元素.元素可以包含属性.其他元素或文本.如果一 ...

  4. JavaScript -- 时光流逝(十二):DOM -- Element 对象

    JavaScript -- 知识点回顾篇(十二):DOM -- Element 对象 (1) element.accessKey: 设置或返回accesskey一个元素,使用 Alt + 指定快捷键 ...

  5. THML DOM / Element 对象操作

    随着Vue等MVVM框架流行,操作DOM已经不想之前那么频繁,因此很多DOM的操作已经陌生,特此回顾HTML中DOM操作 获取Element节点 熟悉的有 通过ID获取,返回element对象    ...

  6. DOM基础知识(Node对象、Element对象)

    5.Node对象 u  遍历节点 u 父节点 .parentNode - 获取父节点—> 元素节点或文档节点 .parentElement - 获取父元素节点—> 元素节点 u    子节 ...

  7. 浏览器端-W3School-JavaScript-HTML DOM:HTML DOM Element 对象

    ylbtech-浏览器端-W3School-JavaScript-HTML DOM:HTML DOM Element 对象 1.返回顶部 1. HTML DOM Element 对象 HTML DOM ...

  8. 关于onclick中的event对象和element对象

    event.srcElement:引发事件的目标对象,常用于onclick事件. event.fromElement:引发事件的对象源,常用于onmouseout和onmouseover事件. eve ...

  9. Element对象 常用属性与常用方法

    常用属性 .children 子元素列表 .childElementCount 子元素数量 .firstElementChild 第一个子元素 .lastElementChild 最后一个子元素 .c ...

随机推荐

  1. 基于theano的降噪自动编码器(Denoising Autoencoders--DA)

    1.自动编码器 自动编码器首先通过下面的映射,把输入 $x\in[0,1]^{d}$映射到一个隐层 $y\in[0,1]^{d^{'}}$(编码器): $y=s(Wx+b)$ 其中 $s$ 是非线性的 ...

  2. MySQL— pymysql and SQLAlchemy

    目录 一.pymysql 二.SQLAlchemy 一.pymysql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 1. 下载安装 #在终端直接运行 pip ...

  3. python 历险记(二)— python 的面向对象

    目录 前言 类和对象 如何定义和实例化类? 如何定义和使用属性? 什么是方法? 静态方法和普通方法 构造函数该怎么写? str 方法怎么写? 多态是什么? 继承性和 java 是一样的吗? 父类和子类 ...

  4. FarBox--另类有趣的网站服务【转】

    FarBox--另类有趣的网站服务 转自:http://mosir.org/html/y2012/the-interesting-web-service-serve-by-FarBox.html 作者 ...

  5. JS禁止鼠标右键、禁止全选、复制、粘贴的方法(所谓的防盗功能)

    简述:一个防君子不防小人的鸡肋的功能,针对小白还行. 代码如下: <script> //都能支持 document.oncontextmenu = function (e) { retur ...

  6. redis学习笔记(面试题)

    1. 什么是redis Redis是一个数据库,他和我们传统的oracle数据库差别是它是基于内存的数据库:因为是基于内存,所以效率就高,在某些场景下就可以对我们传统的关系型数据库做一个补充 2. r ...

  7. spring+activemq配置文件内容及实现原理

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  8. openwrt 中route配置

    route配置项默认保存在文件 /etc/config/network 中. 配置route的接口“interface” 使用的协议需要为dhcp才可. config interface 'wan' ...

  9. 笔记 oracle 创建联合主键

    笔记 alter table tablename add constraint unionkeyname primary key (column1,column2); 上面语句中: tablename ...

  10. JDBC辅助类封装 及应用

    一:代码图解: 二:配置文件: driverClassName=com.mysql.jdbc.Driver url=jdbc\:mysql\://127.0.0.1\:3306/xlzj_sh_new ...