JS宽高理解
1.clentWidth和clientHeight
①加入无padding、无滚动条显示占据位置
clientWidth=style.width
②假如有padding、无滚动
clientWidth=style.width+2*style.padding
③假如有padding、有滚动
clientWidth=style.width+2*style.padding-滚动条宽度
clientHeight同理
2.clientLeft和clientTop
这一对属性用来读取元素的border的宽度和高度
clientLeft = border-left的border-width
clientTop = border-top的border-width
3.offsetWidth和offsetHeight
这一对属性指的是元素的border+padding+content的宽度和高度
①假如无padding、无滚动、无border
offsetWidth=clientWithd=style.width
②假如有padding、无滚动、有border
offsetWidth=style.width+2*style.padding+2*style.border-width=clientWidth+border-width*2
③假如有padding、有滚动,且滚动是显示的,有border
offsetWidth=style.width+2*style.padding+2*style.border-width=clientWidth+滚动轴宽度+border-width*2
4.offsetLeft和offsetTop
依据offsetParent
①如果当前元素的父级元素没有进行CSS定位(position),offsetParent为body
②如果当前元素的父级元素有CSS定位(position),offsetParent取最近的那个父级元素
在IE8/9/10及Chrome中:
offsetLeft=(offsetParent的margin-left)+(offsetParent的border宽度)+(offsetParent的padding-left)+(当前元素的margin-left)
在FireFox中
offsetLeft=(offsetParent的margin-left)+(offsetParent的padding-left)+(当前元素的margin-left)
5.Event对象的五种坐标
①clientX和clientY 相对于浏览器(可视区左上角0,0,不包含浏览器头)的坐标
②screenX和screenY 相对于设备屏幕左上角(0,0)的坐标
③offsetX和offsetY 相对于事件源左上角(0,0)的坐标
④pageX和pageY 相对于整个网页左上角(0,0)的坐标,在无滚动轴的情况下与clientX、clientY相等,有滚动轴的情况下,pageY包含滚动区那些部分的高度
⑤X和Y 本来是IE属性,相对于用CSS动态定位的最内层包容元素
在IE浏览器中,事件源无定位的情况下X、Y等于clientX、clientY,有定位的情况下等于offsetX和offsetY
在chrome中,事件源有无定位,都等于clientX、clientY
JS宽高理解的更多相关文章
- js 和 jquery的宽高
window 和 document : window 对象表示浏览器打开的窗口,可以省略 document对象(浏览器的html文档)是window对象的一部分 document.body等于wind ...
- js/jq宽高的理解与运用
document:1. 与client相关的宽高document.body.clientWidthdocument.body.clientHeightdocument.body.clientLeftd ...
- js中的各种宽高以及位置总结
在javascript中操作dom节点让其运动的时候,常常会涉及到各种宽高以及位置坐标等概念,如果不能很好地理解这些属性所代表的意义,就不能理解js的运动原理,同时,由于这些属性概念较多,加上浏览器之 ...
- js各种宽高(1)
在javascript中操作dom节点让其运动的时候,常常会涉及到各种宽高以及位置坐标等概念,如果不能很好地理解这些属性所代表的意义,就不能理解js的运动原理,同时,由于这些属性概念较多,加上浏览器之 ...
- JS获取元素的宽高以及offsetTop,offsetLeft等的属性值
基本介绍 $(obj).width()与$(obj).height() $(obj).width()与$(obj).height() :jquery方式获取元素的宽高,不包括滚动条与工具条 $(obj ...
- JS基础篇--JS获取元素的宽高以及offsetTop,offsetLeft等的属性值
$(obj).width()与$(obj).height() $(obj).width()与$(obj).height() :jquery方式获取元素的宽高,不包括滚动条与工具条 $(obj).wid ...
- 原生JS获取元素宽高实践详解
开篇的话 任何不是亲身实践中求得的知识,都不是属于你的.任何求得的知识不去时常温习运用,也不是属于你的. 记录由来 在做个上拉广告功能中遇到了一个"理所当然"觉得对的用法,慢慢才排 ...
- js获取隐藏元素宽高的方法
网上有一些js获取隐藏元素宽高的方法,但是可能会存在某些情况获取不了. 例如: <!DOCTYPE html> <html lang="en"> <h ...
- 关于html中的设置body宽高的理解
有时候看到别人的代码中经常出现在body中设置的宽高,不是很理解,于是自己测试了下,瞬间懂了,废话不多说,直接上代码: 首先创建好一个基本的html文件,设body的背景色为red: 相信大家都知道效 ...
随机推荐
- AIROBOT系统 之 网络配置
需求背景 在上一个章节我们讲究了私有云的部署,但是会有一个问题,我如果在外面,如何访问家里电脑上部署的私有云服务?其实这个问题在扩大化说 就是 如何可以在家庭网络以外 可以访问到 家庭网络:公网 访问 ...
- Machine Learning, Homework 9, Neural Nets
Machine Learning, Homework 9, Neural NetsApril 15, 2019ContentsBoston Housing with a Single Layer an ...
- build.xml编译报错Specified VM install not found: type Standard VM, name jdk1.7.0_45
build.xml编译打包时报错: 解决方法: build.xml —— 右键 —— Run As —— External Tools Configuration 在这个页面的顶端就会看到有红叉 ...
- vue 父组件给子组件传值,子组件给父组件传值
父组件如何给子组件传值 使用props 举个例子: 子组件:fromTest.vue,父组件 app.vue fromTest.vue <template> <h2>{{tit ...
- 学习Makefile
1> 编译一个文件2> 编译多个文件3> 编译多个目录下的文件4> inclue makefile5> 使用规则1>target:depend[tab]cmddep ...
- 多线程深入:乐观锁与悲观锁以及乐观锁的一种实现方式-CAS(转)
原文:https://www.cnblogs.com/qjjazry/p/6581568.html 首先介绍一些乐观锁与悲观锁: 悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每 ...
- spring-boot war包
接着上面的spring-boot项目,直接使用jar包方便调试,在开发阶段非常方便,生产上最好打成war形式 要想spring-boot打war包,还是从pom.xml入手 1.1 调整pom.xml ...
- BIO, NIO 和 Epoll (转载)
很好的文章 https://eklitzke.org/blocking-io-nonblocking-io-and-epoll
- python借助ADB工具实现自动化操作手机
核心工具——ADB工具 adb工具用于连接Android手机和PC端,我们借助adb工具,就可以通过命令行对手机进行相应的操作 注意:若要通过adb操作手机,需打开手机的开发者模式,并打开USB调试功 ...
- PostMessage发送WM_CLOSE消息,实现关闭任意程序
#include <Windows.h> #include <tchar.h> int WINAPI _tWinMain(HINSTANCE hInstance, HINSTA ...