JavaScript 之 offset 、client、scroll
下面这三组是关于元素大小、位置相关的属性
一、offset 偏移量
1、offsetParent
该属性获取距离当前元素最近的定位父元素,如果没有定位父元素此时是 body 元素
2、offsetLeft / offsetTop
该属性获取当前元素距离 offsetParent 的横向偏移和纵向偏移
3、offsetWidth / offsetHeight
该属性获取当前元素的宽高,宽高包括:内容(content)、边框(border)和内填充(padding)

注意:offset 属性 是只读属性
Demo:
// 结构
<div id="box">
<div id="child"> </div>
</div>
// 样式
<style>
body {
margin: 0;
}
#box {
position: relative;
width: 300px;
height: 300px;
background-color: red;
overflow: hidden;
margin: 50px;
}
#child {
width: 100px;
height: 100px;
background-color: blue;
margin: 50px;
border: 10px solid yellow;
padding: 10px;
}
</style>
// js
<script>
// 获取子元素的位置和大小
var child = document.getElementById('child');
console.log(child.offsetParent);
// 获取child的位置 offsetLeft 距离offsetParent的横向偏移
console.log(child.offsetLeft);
console.log(child.offsetTop); // 获取child的大小 包括边框和padding
console.log(child.offsetWidth);
console.log(child.offsetHeight);
</script>
二、client 客户区大小
1、clientLeft / clientTop
该属性是获取当前元素的 border-left、border-right 的宽度。(没有 border-right/border-bottom属性)
2、clientWidth / clientHeight
该属性是获取当前元素的宽高,宽高包括:内容(content)和 内填充 (padding)
Demo:
// 结构
<div id="box"> </div>
// 样式
<style>
body {
margin: 0;
} #box {
width: 100px;
height: 100px;
margin: 50px;
border: 30px solid red;
padding: 10px;
background-color: green;
}
</style>
// js
<script>
var box = document.getElementById('box');
// clientLeft 是border-left 的宽度
// clientTop border-top 的宽度
console.log(box.clientLeft);
console.log(box.clientTop); // 获取大小 包括padding 但是不包括边框
console.log(box.clientWidth);
console.log(box.clientHeight);
</script>
三、scroll 滚动偏移
1、scrollLeft / scrollTop
该属性获取元素内容滚动出去的横向距离 / 纵向距离
2、scrollWidth / scrollHeight
该属性获取元素的大小,指的是:内容(content)+ 内填充(padding)和未显示出来的内容

Demo:
// 结构
<div id="box">
Javascript,一种高级编程语言,通过解释执行,是一门动态类型,面向对象(基于原型)的直译语言。它已经由欧洲电脑制造商协会通过ECMAScript实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器(Chrome、IE、FireFox等)支持。
</div>
// 样式
<style>
body {
margin: 0;
} #box {
width: 100px;
height: 100px;
margin: 50px;
border: 30px solid red;
padding: 10px;
background-color: green;
overflow: auto;
}
</style>
// js
<script>
// scroll
var box = document.getElementById('box');
// 当拖动box中的滚动条的时候触发
box.onscroll = function () {
console.log(box.scrollLeft);
console.log(box.scrollTop); }
// 内容的大小,包括padding 和未显示的内容,不包括滚动条
console.log(box.scrollWidth);
console.log(box.scrollHeight); </script>
JavaScript 之 offset 、client、scroll的更多相关文章
- JavaScript中的 offset, client,scroll
在js 中我们要用到的 offset, client, scroll 在这我把自己理解的给大家分享一下. offset div.offsetTop 指div距离上方或上层控件的距离,单位像素 div. ...
- offset/client/scroll一些总结
offset/client/scroll一些总结 1.offset 首先offset共有五个值 1.offsetParent 2.offsetTop 3.offsetLeft 4.offsetWidt ...
- js中 offset /client /scroll总结
offset家族(只能读取,不能操作): offsetLeft:元素的边框的外边缘距离与已定位的父容器(offsetparent)的左边距离(就是子元素左边框到父元素左边框的距离). offsetTo ...
- js 元素offset,client , scroll 三大系列总结
1,element.offsetWidth : 包括 padding 和 边框 2,element.clientWidth : 包括 padding ,不包含边框 , 内容超出会溢出盒子的时候,就用s ...
- offset client scroll
offsetHeight offsetWidth返回为元素在屏幕上显示大小,不包括外边距 clientHeight clientWidht 和上面两个类似,不同的是,这两个不包括外边距高度. < ...
- bom中的offset,client,scroll
简单明了
- JS 中的offset、scroll、client总结
经常碰到offset.scroll.client这几个关键字,每次都要各种实验,这里总结一下. 两张图镇楼,随时翻阅 1. offset offset 指偏移,包括这个元素在文档中占用的所有显示宽度, ...
- javascript中常用坐标属性offset、scroll、client
原文:javascript中常用坐标属性offset.scroll.client 今天在学习js的时候觉得这个问题比较容易搞混,所以自己画了一个简单的图,并且用js控制台里面输出测试了下,便于理解. ...
- 前端 ---client、offset、scroll系列
client.offset.scroll系列 1.client系列 代码如下: <!DOCTYPE html> <html> <head> <meta c ...
- python 全栈开发,Day52(关于DOM操作的相关案例,JS中的面向对象,定时器,BOM,client、offset、scroll系列)
昨日作业讲解: 京东购物车 京东购物车效果: 实现原理: 用2个盒子,就可以完整效果. 先让上面的小盒子向下移动1px,此时就出现了压盖效果.小盒子设置z-index压盖大盒子,将小盒子的下边框去掉, ...
随机推荐
- 2014-2015 ACM-ICPC, Asia Tokyo Regional Contest
2014-2015 ACM-ICPC, Asia Tokyo Regional Contest A B C D E F G H I J K O O O O O O A - Bit ...
- mysql数据库锁的机制-及事务事件
事务隔离级别,脏读.不可重复读.幻读,乐观锁.悲观锁(共享锁.排它锁) 数据库事务具有四个特征,分别是原子性(Atomicity).一致性(Consistency).隔离性(Isoation).持久性 ...
- redis使用摘要
一.redis使用: 在下载安装好redis后,pycharm内也需要安装redis工具包.cmd窗口运行pip install redis后才可在pycharm 内导入import redis来使用 ...
- redis为何单线程 效率还这么高 为何使用跳表不使用B+树做索引(阿里)
如果想了解 redis 与Memcache的区别参考:Redis和Memcache的区别总结 阿里的面试官问问我为何redis 使用跳表做索引,却不是用B+树做索引 因为B+树的原理是 叶子节点存储数 ...
- 展示时测试Markdown渲染
\begin{equation} %公式 Speedup_{overall} = \frac{1}{{(1-Fraction_{partitioned})} +\frac{Fraction_{part ...
- odoo @api.constrains _sql_constrains
实现机制: @api.constrains('fields') 服务器启动时将模型中的所有约束方法注册到对象池中: 在create.write时会根据创建或修改的fields检查是否有对应的约束方法, ...
- QuantLib 金融计算——收益率曲线之构建曲线(4)
[TOC] 如果未做特别说明,文中的程序都是 C++11 代码. QuantLib 金融计算--收益率曲线之构建曲线(4) 本文代码对应的 QuantLib 版本是 1.15.相关源代码可以在 Qua ...
- BST平衡二叉树的后继结点(最近的大)
public class InorderSuccessorInBST {//平衡二叉树查找后继结点 public TreeNode inorderSuccessor(TreeNode root, Tr ...
- Python3+syslog使用及相关说明
一.说明 1.1 背景说明 syslog这个东西,最早接触是在Z公司做基线安全加固的时候有启用远程日志服务器一项,然后当时还写整理了一篇“rsyslog+loganalyzer远程日志系统搭建教程(C ...
- [转帖]Redis持久化--Redis宕机或者出现意外删库导致数据丢失--解决方案
Redis持久化--Redis宕机或者出现意外删库导致数据丢失--解决方案 https://www.cnblogs.com/xlecho/p/11834011.html echo编辑整理,欢迎转载,转 ...
