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宽高理解的更多相关文章

  1. js 和 jquery的宽高

    window 和 document : window 对象表示浏览器打开的窗口,可以省略 document对象(浏览器的html文档)是window对象的一部分 document.body等于wind ...

  2. js/jq宽高的理解与运用

    document:1. 与client相关的宽高document.body.clientWidthdocument.body.clientHeightdocument.body.clientLeftd ...

  3. js中的各种宽高以及位置总结

    在javascript中操作dom节点让其运动的时候,常常会涉及到各种宽高以及位置坐标等概念,如果不能很好地理解这些属性所代表的意义,就不能理解js的运动原理,同时,由于这些属性概念较多,加上浏览器之 ...

  4. js各种宽高(1)

    在javascript中操作dom节点让其运动的时候,常常会涉及到各种宽高以及位置坐标等概念,如果不能很好地理解这些属性所代表的意义,就不能理解js的运动原理,同时,由于这些属性概念较多,加上浏览器之 ...

  5. JS获取元素的宽高以及offsetTop,offsetLeft等的属性值

    基本介绍 $(obj).width()与$(obj).height() $(obj).width()与$(obj).height() :jquery方式获取元素的宽高,不包括滚动条与工具条 $(obj ...

  6. JS基础篇--JS获取元素的宽高以及offsetTop,offsetLeft等的属性值

    $(obj).width()与$(obj).height() $(obj).width()与$(obj).height() :jquery方式获取元素的宽高,不包括滚动条与工具条 $(obj).wid ...

  7. 原生JS获取元素宽高实践详解

    开篇的话 任何不是亲身实践中求得的知识,都不是属于你的.任何求得的知识不去时常温习运用,也不是属于你的. 记录由来 在做个上拉广告功能中遇到了一个"理所当然"觉得对的用法,慢慢才排 ...

  8. js获取隐藏元素宽高的方法

    网上有一些js获取隐藏元素宽高的方法,但是可能会存在某些情况获取不了. 例如: <!DOCTYPE html> <html lang="en"> <h ...

  9. 关于html中的设置body宽高的理解

    有时候看到别人的代码中经常出现在body中设置的宽高,不是很理解,于是自己测试了下,瞬间懂了,废话不多说,直接上代码: 首先创建好一个基本的html文件,设body的背景色为red: 相信大家都知道效 ...

随机推荐

  1. RxSwift + Moya + ObjectMapper

    https://www.jianshu.com/p/173915b943af use_frameworks! target 'RXDemo' do pod 'RxSwift' pod 'RxCocoa ...

  2. 一、大体认识jspxcms

    声明:jspxcms的license写明,允许将jspxcms用于商业和非商业用途.此处只是作为研究.分享使用心德,并不涉及商用. 使用版本:jspxcms  9.5.0 一.下载源码,并部署到ecl ...

  3. 二、springboot使用jpa

    花了几天时间,好好看了看springboot的jpa部分,总结了常用的形式. 1.通过STS工具添加jpa的依赖项 要连mysql,测试的时候需要web,顺便添加了lombok不写set和get方法了 ...

  4. js之history

    浏览历史记录window.history,不会刷新页面内容,只会更改历史记录,用location.href 才会刷新 1. history.pushState() & history.repl ...

  5. ELK日志分析解决方案

    概要 ELK(Elasticsearch , Logstash, Kibana的简称)是目前比较流行的日志分析解决方案,核心包括了三个部分 Elasticsearch:日志查询分析引擎 Logstas ...

  6. java支付宝接口开发

    在线支付接入支付宝,首先需要去官网申请开发者账号,具体步骤如下: 一.打开官网 1.直接打开链接https://open.alipay.com/platform/home.htm进入 2.百度搜索蚂蚁 ...

  7. HTML——HTML部分学习笔记

    1.前端工程师是干什么的?           PC页面         移动端页面 Web开发 = 前端开发 + 后台开发--->web应用(网站) 后台:数据 前台:负责数据展示 + 交互效 ...

  8. 接口自动化测试持续集成--Soapui接口功能测试参数化

    按照自动化测试分层实现的原理,每一层的脚本实现都要进行参数化,自动化的目标就是要实现脚本代码与测试数据分离. 当测试数据进行调整的时候不会对脚本的实现带来震荡,从而提高脚本的稳定性与灵活度,降低脚本的 ...

  9. CentOS 7 Squid代理服务器反向代理

    Squid反向代理 将不同的URL请求分发到后台不同的Web服务器上,通过squid反向代理,可以加速网站的访问速度,同时互联网用户只能看到反向代理服务器的地址,加强网站的访问安全 Squid反向代理 ...

  10. 已有的PHP安装gd扩展

    第一步 安装依赖 1.安装xpm yum install libXpm-devel 2.安装zlib wget http://zlib.net/zlib-1.2.8.tar.gz tar -xzvf ...