四:DOM基本操作:

查看元素的尺寸:

dom.offsetWidth,dom.offsetHeight(视觉上的宽高,不可能包含margin)

查看元素的位置:

dom.offsetLeft,dom.offsetTop

对于无定位父级的元素,返回相对文档的坐标;

对于有定位父级的元素,返回相对最近的有定位的父级的坐标。

dom.offsetParent

返回最近的有定位的父级,如无,返回body,body.offsetParent返回null

查看元素的尺寸:

dom.offsetWidth,dom.offsetHeight(视觉上的宽高,不可能包含margin)

现在我给div加个padding:100px;

说明这个div.offsetWidth返回的是元素看起来的宽高吧!!你在看,这个div.offsetWidth和div.getBoundingClientRect()返回的结果是一样的吧,所以这个div.offsetWidth就把div.getBoundingClientRect()给取代了。

那,我就是想求div内容区的宽高是多少,怎么办?

查看元素的位置:

dom.offsetLeft,dom.offsetTop

但是这两个方法,没有咱们想想的这么理想。

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>abraham</title><style>.div1{width: 300px;height: 300px;border: 2px solid black;position: relative;top: 100px;left: 100px;}.div2{width: 100px;height: 100px;position: absolute;top: 100px;left: 100px;background-color: red;}</style></head><body><div class="div1"><div class="div2"></div></div><script type="text/javascript">var div = document.getElementsByTagName("div")[0];</script></body>
</html>

为什么里面的div会在外面div的中间?

基于有定位的父级定位吧!!

那如果里面的那个div不是通过改变left和top实现的,是通过改变margin实现的呢?

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>abraham</title><style>.div1{width: 300px;height: 300px;border: 2px solid black;position: relative;top: 100px;left: 100px;}.div2{width: 100px;height: 100px;position: absolute;margin-top: 100px;margin-left: 100px;background-color: red;}</style></head><body><div class="div1"><div class="div2"></div></div><script type="text/javascript">var div = document.getElementsByClassName("div2")[0];</script></body>
</html>

红色的方块还是在原来的位置,并且这个 还是100px,

说明div.offsetLeft的含义:忽略自身是否为定位元素,他求的只是这个元素距离他有定位的父级的距离(不管这个距离是怎样生成的)。

下面试试,把他外面的父级也变成不定位的,

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>abraham</title><style>.div1{width: 300px;height: 300px;border: 2px solid black;position: static;/* static是position的默认是,静态的意思 */margin-top: 100px;margin-left: 100px;}.div2{width: 100px;height: 100px;position: absolute;margin-top: 100px;margin-left: 100px;background-color: red;}</style></head><body><div class="div1"><div class="div2"></div></div><script type="text/javascript">var div = document.getElementsByClassName("div2")[0];</script></body>
</html>

这次你猜猜div.offsetLeft是什么了?

他的父级没有定位,返回的是文档的坐标吧!

那200px知道是怎么回事,还有一个边框2px,200+2=202,为什么是210px呢?那8px是哪里来的?

咱们是不是说过body里面有个margin 8px!!!

为什么div.offsetTop是202px呢?

是不是纵向的margin塌陷了!

练习41:求相对文档的坐标getElementPosition

视频:https://ke.qq.com/course/231577?taid=3983676656552089

DOM初探(17)——查看元素的尺寸与位置相关推荐

  1. JavaScript DOM 9 - 元素的尺寸与位置

    1: 获得页面上某个元素在视口坐标系的位置和元素的尺寸: element.getBoundingClientRect():{ left:8top:104right:1432bottom: 158wid ...

  2. jQuery:设置获取属性、遍历添加删除元素、尺寸、位置

    目录 一.设置或获取元素属性值 1.设置或获取元素固有属性值 2.设置或获取元素自定义属性值attr() 3.数据缓存data() 二.获取元素内容 三.jQuery对元素操作 1.遍历元素 2.创建 ...

  3. javascript获得元素的尺寸和位置一 : offsetTop/Left、offsetWidth/Height、offsetParent

    在学习offset的相关属性前,必须明确指出offsetHeight/Width.offsetTop/offsetLeft等返回的都是只读的并且以数字的形式返回像素值(例如,返回12,而不是'12px ...

  4. DOM初探(16)——查看元素的集合尺寸

    三:DOM基本操作: 查看元素的集合尺寸 domEle.getBoundingClientRect(); 兼容性很好 改方法返回一个对象,对象里面有left,top,right,bottom等属性.l ...

  5. DOM初探(15)——查看视口的尺寸

    视频:https://ke.qq.com/course/231577?taid=3983676656552089 二:DOM基本操作: 查看视口的尺寸 window.innerWidth/innerH ...

  6. 前端屏幕尺寸和分辨率_web前端开发中常用的尺寸和位置

    我们在日常web前端开发过程中,会经常用到各种尺寸和位置.通常是js做动画的时候.轮播图,滚屏动画,粒子,碰撞检测,拖拽,滚动加载等等.这里我将常用的尺寸和位置的获取进行总结,不包括canvas,SV ...

  7. DOM初探(14)——查看滚动条的滚动距离

    一:DOM基本操作: 查看滚动条的滚动距离 window.pageXOffset/pageYOffset IE8及以下不兼容(只有IE9以上的浏览器能用) document.body/document ...

  8. Web APIs-事件流、事件委托、其他事件、元素尺寸与位置

    目录 事件流 事件捕获 事件冒泡 阻止冒泡 解绑事件 事件委托 其他事件 1.页面加载事件 2. 页面滚动事件 3.页面尺寸事件 元素尺寸与位置 今日单词 综合案例 事件流 事件完整执行过程中的流动路 ...

  9. JS 查看标签下某元素所有信息(查看元素,查询元素,遍历元素、HTMLCollection对象、NodeList对象)

    NodeList 对象是一个从文档中获取的节点列表 (集合) . NodeList 对象类似 HTMLCollection 对象. 一些旧版本浏览器中的方法(如:getElementsByClassN ...

最新文章

  1. vs2013缺少Mvc 怎么办?
  2. Fiddler之Autoresponder替换(Web)
  3. 一步步开发自己的博客 .NET版(5、Lucenne.Net 和 必应站内搜索)
  4. Android 系统(270)---开机广播的简单守护以及总结
  5. Ajax请求成功后页面跳转
  6. mysql mssql 性能对比_MySQL最新版8.0与5.7之性能对比,看看它是如何改进的
  7. 关于std::set的一些补充
  8. 96KB存储器的怎么算地址范围_每天都在敲代码,但是一个程序在计算机中是怎么运行的?...
  9. 网络学习(一)网络版块主题介绍
  10. Visual Studio 2008 Service Pack 1 - BETA发布
  11. GoFrame v1.6.0 发布,Go 应用开发框架
  12. ASP.Net Web 点击链接直接下载 不在浏览器打开
  13. 如何使用Java开发QQ机器人 方法二
  14. R语言aov函数进行重复测量方差分析(Repeated measures ANOVA、其中一个组内因素和一个组间因素)、分别使用interaction.plot函数和boxplot对交互作用进行可视化
  15. elasticsearch-head离线安装
  16. 论文笔记7 --(ReID)Video-based Person Re-identification via Self Paced Weighting
  17. HDU 5055 Bob and math problem(构造)
  18. JavaWeb阶段JSP详情介绍(上)
  19. EA001-186-2220-蓝豪杰
  20. 关于python小游戏的毕业论文_使用Python写一个小游戏

热门文章

  1. 淘宝佣金冻结-JS解决方案
  2. 推荐使用rpx替代upx的公告
  3. vue 路由嵌套(二级路由)
  4. [转]gcc -ffunction-sections -fdata-sections -Wl,–gc-sections 参数详解
  5. Unity2D—骨骼绑定、IK系统、动画(一)
  6. GOOGLE HACKS巧妙使用网络搜索的技巧和工具(第二版)已经出版(上)--IT man
  7. windows中truffle unbox react失败总结
  8. 梦幻西游 手游下载连接
  9. OpenCV颜色空间——Lab颜色空间
  10. LFM雷达实现及USRP验证【章节2:LFM雷达测距】