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边界。

在元素定位中通常使用这个属性来获取定位元素的top和left样式值。

參考资料:

前端攻城狮学习笔记九:让你彻底弄清offset

HTMLElement.offsetParent

二. client系列

1.clientHeight和clientWidth

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

CSS height+padding

不包含边框、滚动栏、不可见部分、margin。

clientWidth相似。仅仅只是是水平方向。

比如document.documentElement.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 + p ...

  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. JS中client/offset/scroll等的宽高解析

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

  6. client offset scroll 之间的区别

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

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

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

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

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

随机推荐

  1. 你真的了解 console 吗

    对于前端开发者来说,在开发过程中需要监控某些表达式或变量的值的时候,用 debugger 会显得过于笨重,取而代之则是会将值输出到控制台上方便调试.最常用的语句就是console.log(expres ...

  2. 手机端input,select屏蔽浏览器默认事件

    文本框input:当文本框focus时会弹出软键盘,有时我们需要click事件而又不想触发focus事件(不要弹出软键盘) 给input添加 disabled="disabled" ...

  3. apache的500错误是写到哪个文件里面

    apache的500错误是写到哪个文件里面

  4. ASP.NET中的MD5加密

    新人冒泡,打今起在园子里算是开博了,先来写点关于基础性的东西 为以后的写其他的文章做准备. 今天就先来说说MD5加密与在ASP.NET中如何实现MD5加密. MD5加密简单的说就是把一段明文 通过某种 ...

  5. WebStorm修改默认快捷键

    打开 "File" -> "Setting" -> "keymap",即可修改.

  6. C程序第二章节:算法

    1.主要讲了:算法,3种基本结构化的算法(顺序,选择,循环结构),N-S流程图表示算法,伪代码表示算法. 2.输入10个数,输出其中最大的一个数. #include <stdio.h>in ...

  7. Redis同步(主从复制)

    目录1.Replication的工作原理2.如何配置Redis主从复制3.应用示例 1.Replication的工作原理在Slave启动并连接到Master之后,它将主动发送一条SYNC命令.此后Ma ...

  8. svn用法

    SVN安装与启动服务 1.下载相应匹配版本的TortoiseSVN(客户端)和Subversion(客户端),安装完毕之后. 2.配置相关文件. 选择TortoiseSVN-->create r ...

  9. 初始化JQuery方法与(function(){})(para)匿名方法介绍

    一.初始化JQuery对象 DOM加载完成时运行代码 1.$(document).ready(function(){ 全写 // 在这里写你的代码... }); 2.jQuery(function() ...

  10. Destoon后台修改公司会员资料信息的必填项限制修改

    /template/default/member/edit.htm module\member\admin\template\member_edit.tpl.php module\member\adm ...