element元素结点属性

一. offset系列

1.offsetWidth 和offsetHeight

element.offsetWidth是一个只读属性,它包括了:

css width + padding+border+垂直滚动条宽度

这里的滚动条就是单纯滚动条的意思,不包括不可见的部分哦。 
而element.offsetHeight与之类似,只是改为垂直方向而已。

2.offsetParent

element.offsetParent是一个只读属性,返回一个对象的引用,这个引用指向了element(调用offsetParent)的最近一个使用了定位(absolute、relative)的父元素,如果没有定位了的父元素,则指向根元素(标准模式下为 html;quirks 模式下为 body)。 
兼容性:

在 Webkit 中,如果元素为隐藏的(该元素或其祖先元素的 style.display 为 “none”),或者该元素的 style.position 被设为 “fixed”,则该属性返回 null。 
在 IE 9 中,如果该元素的 style.position 被设置为 “fixed”,则该属性返回 null。(display:none 无影响。)

3.offsetTop和offsetLeft

element.offsetTop 和 element.offsetLeft 都是相对于offsetParent的内边距(外)边界的。 
也就是返回对象元素边界的左上角顶点相对于offsetParent的左上角顶点的水平偏移量。这里,元素对象左上角顶点是要从border开始算(如果有的话,即border边界距离offsetParent padding边界的距离,不是从从元素的margin开始算),offsetParent的左上角是指其padding边界。

参考资料: 
前端攻城狮学习笔记九:让你彻底弄清offset 
HTMLElement.offsetParent

二. client系列

1.clientHeight和clientWidth

element.clientHeight表示元素可视区域的高度,包括可视区域中元素的

CSS height+padding

不包括边框、滚动条、不可见部分、margin。 
clientWidth类似,只不过是水平方向。

2.clientLeft和clientTop

是元素 
padding外边界与父元素的padding边界的距离-元素的offsetLeft值,就等于元素的左边框宽度。???不知道理解对没 
clientTop与之类似。

三. scroll系列

1.scrollHeight和scrollWidth

element.scrollHeight属性是只读的,它包括:

可见CSS高度+padding+border+由于overflow设置为隐藏或者scroll而不可见的内容高度。

可看出和offsetHeight的区别就是多了个不可见内容区高度。scrollWidth与之类似。

2.scrollTop和scrollLeft

即是被scroll了的内容区域的高度和宽度,隐藏不可见的内容区域。

注意: 
元素设置了overflow: scroll,滚动条是占据了元素原来CSS宽度的一部分,即加了滚动条后,元素CSS中定义的属性width=滚动条宽度+content 宽度。边框是加在滚动条外面的,而padding则是加在滚动条内部,内容区之外的。

一个盒子设置了margin-top,是和别的盒子间的垂直距离,这个别的盒子不包括父盒子,也就是说,内部盒子顶部和父盒子边界的距离不变,而是整个父盒子顶部都和更外部的环境相距了margin-top值的距离。

参考资料: 
Mozilla文档上的图示描述得很明白 
https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollHeight

event事件对象属性

下面几个是event事件对象的属性,可获取鼠标的位置:

1.clientX,clientY 
表示鼠标位置距离可视窗口边缘的距离。它们是事件对象的属性。这2个属性不是标准属性,但得到了广泛支持。IE事件中没有这2个属性。

2. pageX,pageY 
表示鼠标位置距离整个文档页面边缘(左和上边缘)的距离

3.screenX,screenY 
表示鼠标位置距离屏幕边缘的距离

4.offsetX,offsetY: 
鼠标相对于事件源元素(srcElement)的X,Y坐标,只有IE事件有这2个属性,标准事件没有对应的属性。

来看个小例子,跟随鼠标的提示框:

//css
#info {position:absolute;} //html
<div id="info"></div> //js
document.onmousemove=function(ev){
var oEvent=ev||event;
var info=document.getElementById('info');
//获取不可见内容高度
var scrollTop=document.documentElement.scrollTop||
document.body.scrollTop//???混杂模式和标准模式下都能工作? info.style.left=oEvent.clientX+'px';
info.style.top=oEvent.clientY+scrollTop+'px'; //可视区高度+scrolled的高度
}

document.documentElement指向document对象的根元素,在html文档中就是html元素。

经验:只要在用到clientX和clientY的地方都最好加上scroll值。

区别client、offset、scroll系列以及event的几个距离属性的更多相关文章

  1. 差别client、offset、scroll系列以及event的几个距离属性

    element元素结点属性 一. offset系列 1.offsetWidth 和offsetHeight element.offsetWidth是一个仅仅读属性,它包含了: css width + ...

  2. client , offset , scroll 系列 及百度导航栏案例

    1. client 系列 示例 : <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...

  3. client,offset,scroll系列

    client(客户端),offset(偏移),scroll(滚动)1.client系列 clientTop 内容区域到边框顶部的距离 ,说白了,就是边框的高度 clientLeft 内容区域到边框左部 ...

  4. DOM盒模型和位置 client offset scroll 和滚动的关系

    DOM盒模型和位置 client offset scroll 和滚动的关系 概览 在dom里面有几个描述盒子位置信息的值, pading border margin width height clie ...

  5. client offset scroll 之间的区别

    一.client 属性 值 clientWidth 元素被设置的宽度 + padding左右内间距 clientHeight 元素被设置的高度 + padding上下内间距 clientLeft 左 ...

  6. JS-特效 ~ 04. client对象、网页可视区域的宽高、client / offset / scroll 三大家族的区别、冒泡事件、事件委托、获取内嵌式和外链式属性getStyle(ele,attr) ;、缓动动画封装

    知识点: 模拟滚动条的解除事件问题 : event内置对象,包含 了大量事件: page兼容性: pageX || clientX + scool().top  : if (true === a)tr ...

  7. JavaScript概念之screen/client/offset/scroll/inner/avail的width/left 分类: JavaScript HTML+CSS 2015-05-27 16:42 635人阅读 评论(0) 收藏

    原文地址:http://caibaojian.com/js-name.html JS中获取各种宽度和距离,常常让我们混淆,各种浏览器的不兼容让我们很头疼,现在就在说说js中有哪些宽度和距离. 1.名词 ...

  8. JS中client/offset/scroll等的宽高解析

    原文地址:→传送门 window相关宽高属性 1. window.outerHeight (窗口的外层的高度) / window.outerWidth (窗口的外层的宽度) window.outerH ...

  9. JavaScript位置:window&client&offset&scroll&MouseEvent&getBoundingClientRect&计算任意元素滚动条宽度

    Window: window.innerWidth:浏览器viewport视口宽,包括垂直滚动条 window.innerHeight:浏览器视口高,包括水平滚动条 window.outerWidth ...

随机推荐

  1. 【干货分享】sketch 前端开发常用技巧总结

    sketch横空出世,移动端的应用越来越多的采用sketch来做,前端开发也需要掌握更多sketch技巧. (1) sketch导出图片时,如何快速选择多个图层? 1. 在画布上任一点单击并拖拽出一个 ...

  2. JavaScript运算符优先级

    图片引用自:http://www.cnblogs.com/xxcanghai/p/5189353.html

  3. SpringCloud网关ZUUL集成consul

    最近一直在搞基于springcloud的微服务开发,为了不限定微服务开发语言,服务发现决定采用consul不多说上代码 pom文件 <project xmlns="http://mav ...

  4. 转账示例(四):service层面实现(线程管理Connection,AOP思想,动态代理)(本例采用QueryRunner来执行sql语句,数据源为C3P0)

    用了AOP(面向切面编程),实现动态代理,service层面隐藏了开启事务.1.自行创建C3P0Uti,account数据库,导入Jar包 2.Dao层面 接口: package com.learni ...

  5. 人生第一次hash

    人生的第一次hash交给了模板题. 讲道理,还没有别人快排要快,就比暴力快那么一点... 难道我写的hash就那么菜么? 我想了想,光是处理字符串就O(n*len).. 这是hash的正确写法吗?我都 ...

  6. USACO Section 1.1-2 Greedy Gift Givers

    Greedy Gift Givers 贪婪的送礼者 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少. 在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那 ...

  7. vue2.0+elementUI构建单页面后台管理平台

    git:https://github.com/reg21st/vue2-management-platform 访问:https://reg21st.github.io/vue2-management ...

  8. 第二章 Oracle数据库应用

    第二章   Oracle数据库应用2.1 表空间和用户权限下管理    2.1.1 表空间        2.1.1.1 分类:            永久性表空间            临时性表空间 ...

  9. css系列:input的placeholder在safari下设置行高失效

    在项目中遇到input的placeholder在safari下设置行高失效的问题,问度娘后未得治原因,倒是有解决办法: 方法一:使用padding使提示文字居中,如果font-size:14px,UI ...

  10. 主机ping通虚拟机,虚拟机ping通主机解决方法(NAT模式)

    有时候需要用虚拟机和宿主机模拟做数据交互,ping不通是件很烦人的事,本文以net模式解决这一问题. 宿主机系统:window7 虚拟机系统:CentOs7 连接方式:NAT模式 主机ping通虚拟机 ...