专栏首页前端下午茶JS 中的offset、scroll、client总结

JS 中的offset、scroll、client总结

经常碰到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 关键字整理

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SHERlocked93 的 2018 年终总结

    年底了,开始变得浮躁,看书看不下去了,代码也不太想写,刚好简短回顾一下 2018 年的得失收获。

    前端下午茶
  • 我的2017年终总结

    开始两个月3月到5月用C#完结了一个烂尾的wpf小项目,对自己前半年的.net生涯也算是一个句号(虽然不知道最后有没有采用),后面由于项目组转变技术栈,选择了比...

    前端下午茶
  • JS 观察者模式

    观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时...

    前端下午茶
  • Wcf:可配置的服务调用方式

    添加wcf服务引用时,vs.net本来就会帮我们在app.config/web.config里生成各种配置,这没啥好研究的,但本文谈到的配置并不是这个。先看下面...

    菩提树下的杨过
  • Elasticsearch Rack Awareness

    前面的冷热章节中,我们讲到了ES集群的冷热架构,也知道了如何将相关的数据手动分配到指定的节点上,同时结合索引生命周期管理策略更好的去维护集群上的索引,那么今天,...

    南非骆驼漫谈ELK Stack
  • JSON 的简介与使用

    JSON(javascript object notation)全称是 javascript 对象表示法,是一种数据交换的文本格式,用于读取结构化数据,提出目的...

    Leophen
  • .Net Core下 Redis的String Hash List Set和Sorted Set的例子

    1.新建一个.Net Core控制台应用程序,用Nuget导入驱动 打开程序包管理控制台, ? 执行以下代码。 PM> Install-Package Serv...

    码农阿宇
  • 【附代码】如何在私有链上编写、部署与以太坊进行交互的智能合约

    区块链大本营
  • 腾讯和微软谷歌等成立联盟,让客户数据更安全!

    前几天在全国各地如火如荼开展的国家网络安全周,再度掀起了社会大众对数据安全的重视。全球的科技企业最近也围绕数据安全有了大动作,在圣地亚哥举办的一场开源峰会上,宣...

    腾讯安全
  • 为了保障数据全生命周期安全,我们加入了一个组织

    防止数据泄露这件事儿在产业互联网时代有多重要,就不赘述了。今天讲讲数据安全方面一个新的进展。 最近在圣地亚哥举办的一场开源峰会上,一个叫“可信计算联盟(Con...

    腾讯云安全

扫码关注云+社区

领取腾讯云代金券