经常碰到offset、scroll、client这几个关键字,每次都要各种实验,这里总结一下。

两张图镇楼,随时翻阅

1. offset

offset偏移,包括这个元素在文档中占用的所有显示宽度,包括滚动条、paddingborder,不包括overflow隐藏的部分

  1. offsetParent属性返回一个对象的引用,这个对象是距离调用offsetParent的父级元素中最近的(在包含层次中最靠近的),并且是已进行过CSS定位的容器元素。 如果这个容器元素未进行CSS定位, 则offsetParent属性的取值为根元素的引用。

    • 如果当前元素的父级元素中没有进行CSS定位(position为absolute/relative),offsetParent为body
    • 如果当前元素的父级元素中有CSS定位(position为absolute/relative),offsetParent取父级中最近的元素
  2. obj.offsetWidth 指 obj 控件自身的绝对宽度,不包括因 overflow 而未显示的部分,也就是其实际占据的宽度,整型,单位:像素。
    offsetWidth = border-width*2+padding-left+width+padding-right
  3. obj.offsetHeight 指 obj 控件自身的绝对高度,不包括因 overflow 而未显示的部分,也就是其实际占据的高度,整型,单位:像素。
    offsetHeight = border-width*2+padding-top+height+padding-bottom
  4. obj.offsetTop 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算上侧位置,整型,单位:像素。
    offsetTop= offsetParent的padding-top + 中间元素的offsetHeight + 当前元素的margin-top
  5. obj.offsetLeft 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置,整型,单位:像素。
    offsetLeft= offsetParent的padding-left + 中间元素的offsetWidth + 当前元素的margin-left

2. scroll

scroll滚动,包括这个元素没显示出来的实际宽度,包括padding,不包括滚动条、border

  1. scrollHeight 获取对象的滚动高度,对象的实际高度;
  2. scrollLeft 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
  3. scrollTop 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
  4. scrollWidth 获取对象的滚动宽度

3. client

client指元素本身的可视内容,不包括overflow被折叠起来的部分,不包括滚动条、border,包括padding

  1. clientWidth 对象可见的宽度,不包括滚动条等边线,会随窗口的显示大小改变
  2. clientHeight 对象可见的高度
  3. clientTopclientLeft 这两个返回的是元素周围边框的厚度,一般它的值就是0。因为滚动条不会出现在顶部或者左侧

网上的帖子大多深浅不一,甚至有些前后矛盾,在下的文章都是学习过程中的总结,如果发现错误,欢迎留言指出~

参考:

  1. javascript的offset、client、scroll的总结笔记
  2. 轻松弄清JavaScript中的offset、scroll、client
  3. offset client scroll screen 关键字整理

最新文章

  1. Web 应用程序中的安全向量 – ASP.NET MVC 4 系列
  2. XAF Spreadsheet property Editor
  3. centos7 gradle
  4. JS基础语法
  5. iOS - UITextField
  6. rails4.2.6配置发送邮件
  7. Linux平台Makefile文件的编写基础篇(转)
  8. USACO 3.4 Raucous Rockers
  9. Appium简介及工作原理
  10. concrrent类下ReentrantReadWriteLock类的原理以及使用
  11. Linux学习3-yum安装java和Tomcat环境
  12. 解决ios下的微信页面背景音乐无法自动播放问题
  13. FTP服务器原理(转)
  14. FastText算法原理解析
  15. css小贴士备忘录
  16. Visual GC(监控垃圾回收器)
  17. [转]我花了一个五一终于搞懂了OpenLDAP
  18. ios Https问题
  19. 获取properties配置
  20. H3C交换机配置镜像端口

热门文章

  1. 【Unity 系统知识】 Time类
  2. poj2431Expedition
  3. Buy Tickets 【POJ - 2828】【线段树】
  4. SEC7 - MySQL 查询语句--------------进阶3:排序查询
  5. html+css+js实现简单登陆注册页面
  6. Hibernate入门1
  7. 《JAVA设计模式》之策略模式(Strategy)
  8. PHP开发环境搭建及开发工具
  9. Struts2+Ajax实现数据交互
  10. python学习第八天二进制和字符编码有关联