js进阶之js三大家族:offset,scroll,client

offset与style的区别
offset可以得到任意样式表中的样式值
offset系列的数值没有单位
offsetWidth包含padding+border+width
offsetwidth等属性是只读属性,只能获取,不能赋值
所以,我们想要获取元素大小的位置,用offset更合适
style
style只能获取到行内样式表
stylewidth获得的是带有单位的字符串
style.width不包括padding和border的值
style.width是可读属性,可以获取也可以赋值

点语法与offset获取元素的区别
点语法特点:1.可以获取行内标准属性(主要)
2.可以获取语法动态添加的属性
3.无法获取行内自定义属性
4.无法获取行内属性
offset获取特点:1.可以获取行内外属性
2.获取属性值为number类型,而且不带单位
3.获取到的是页面显示的元素的真实宽高(width/height+padding+border)

三大家族区别(三大家族总结)
1.2.1 Width和height
clientWidth = width + padding
clientHeight = height + padding
offsetWidth = width + padding + border
offsetHeight = height + padding + border
scrollWidth = 内容宽度(不包含border)width + padding
scrollHeight = 内容高度(不包含border)
1.2.2 top和left
offsetTop/offsetLeft:
调用者:任意元素。(盒子为主)
作用:距离父系盒子中带有定位的距离。
scrollTop/scrollLeft:(盒子也可以调用,必须有滚动条)
调用者:document.body.scrollTop/.....(window)
作用:浏览器无法显示的部分(被卷去的部分)。
clientY/clientX:(clientTop/clientLeft 值的是border)
调用者:event.clientX(event)
作用:鼠标距离浏览器可视区域的距离(左、上)。
// width和height
// offset带border
// scroll不带border,内容的宽高
// client不带border

// top和left
// offset距离父系盒子带有定位的盒子之间的距离
// scroll被卷去的部分的距离
// clientborder的宽高

//clientX和clientY
// event调用,鼠标距离浏览器的可视区域的距离
client家族特殊用法之:检浏览器宽/高度(可视区域)

Onresize事件
只要浏览器的大小改变,哪怕1像素,都会触动这个事件。
事件总结
区分:
1.window.onscroll 屏幕滑动
2.window.onresize 浏览器大小变化
3.window.onload 页面加载完毕
4.div.onmousemove 鼠标在盒子上移动
(注意:不是盒子移动!!!)
5.onmouseup/onmousedown == onclick获得屏幕宽高
window.screen.width
分辨率是屏幕图像的精密度,指显示器所能显示的像素有多少。
我们的电脑一般:横向1280个像素点,纵向960个像素点。
我们看电影的时候是满屏和半屏的,就是这。

offset家族:获取元素真实的宽高和位置
console.log(box.offsetWidth);
console.log(box.offsetHeight);
scroll家族: scrollWidth,scrollHeight,scrollLeft,scrollTop
作用是:scrollWidth,scrollHeight获取元素内容的宽高(IE8)
scrollLeft,scrollTop获取元素内容真实的位置
console.log(box.scrollWidth);
console.log(box.scrollHeight);
console.log(box.scrollLeft);
console.log(box.scrollTop);
滚动条滚动事件:onscroll

原文地址:https://www.cnblogs.com/zycs/p/12655987.html

时间: 2024-08-28 22:26:03

js进阶之js三大家族:offset,scroll,client的相关文章

offset,scroll,client三大系列

offset 偏移 offsetWidth是指div的宽度(包括div的边框) offsetWidth = width + padding + border: offsetHeight是指div的高度(包括div的边框) offsetHeight = Height + padding + border: offsetLeft是指div到整个页面左边框的距离(不包括div的边框) offsetTop是指div到整个页面上边框的距离(不包括div的边框) scroll?????????滚动 scro

js-width/height/top/left/offset/scroll/client

让你彻底弄清offset:http://www.cnblogs.com/jscode/archive/2012/09/03/2669299.htmlJavascript/Jquery获取浏览器和屏幕各种高度宽度:http://www.cnblogs.com/EricaMIN1987_IT/p/3593431.html

JSjs进阶--之JS三大家族:offset家族 Scroll家族 client家族

1.1  三大家族和一个事件对象 三大家族(offset/scroll/client) 事件对象/event   (事件被触动时,鼠标和键盘的状态)(通过属性控制) 1.2  Offset家族简介 offset这个单词本身是--偏移,补偿,位移的意思. js中有一套方便的获取元素尺寸的办法就是offset家族: offsetWidth和offsetHight以及offsetLeft和offsetTop以及offsetParent 共同组成了offset家族. 1.2.1  offsetWidth

js的offset,client,scroll的区别

javascript的offset.client.scroll在使用过程中非常频繁,接下来将对此进行一一介绍,了解其区别和使用方法. offsetTop 指元素距离上方或上层控件的位置,整型,单位像素.  offsetLeft 指元素距离左方或上层控件的位置,整型,单位像素.  offsetWidth 指元素控件自身的宽度,整型,单位像素.  offsetHeight 指元素控件自身的高度,整型,单位像素.  网页可见区域宽:document.body.clientWidth  网页可见区域高:

[JS进阶] HTML5 之文件操作(file)

前言 在 HTML 文档中 <input type="file"> 标签每出现一次,一个 FileUpload 对象就会被创建. 该元素包含一个文本输入字段,用来输入文件名,还有一个按钮,用来打开文件选择对话框以便图形化选择文件. 该元素的 value 属性保存了用户指定的文件的名称,但是当包含一个 file-upload 元素的表单被提交的时候,浏览器会向服务器发送选中的文件的内容而不仅仅是发送文件名. 当用户选择或编辑一个文件名,file-upload 元素触发 onc

【 D3.js 进阶系列 】 进阶总结

进阶系列的文章从去年10月开始写的,晃眼又是4个多月了,想在年前总结一下. 首先恭祝大家新年快乐.今年是羊年吧.前段时间和朋友聊天,聊到十二生肖里为什么没猫,我张口就道:不是因为十二生肖开会的时候猫迟到了吗? 呵呵,不知道这是谁给我灌输的观点.o(>﹏<)o 进阶系列的文章分为两部分,文章前括号里写有: [D3.js 进阶系列] [D3.js 选择集与数据详解] 虽然称之为"进阶",但并不是说一定要看完"入门"才能看.由于本人能力有限,不能很好地整理成由

[JS进阶] JS 之Blob 对象类型

什么是Blob? Blob 是什么? 这里说的是一种Javascript的对象类型. oracle 中也有类似的栏位类型. 在 [JS进阶] HTML5 之文件操作(file) 这一篇中用到了File对象,而实际上 file 对象只是 blob 对象的一个更具体的版本,blob 存储着大量的二进制数据,并且 blob 的 size 和 type 属性,都会被 file 对象所继承. 所以, 在大多数情况下,blob 对象和 file 对象可以用在同一个地方,例如,可以使用 FileReader

【 D3.js 进阶系列 — 1.1 】 其他表格文件的读取

CSV 表格文件是以逗号作为单元分隔符的,其他还有以制表符 Tab 作为单元分隔符的 TSV 文件,还有人为定义的其它分隔符的表格文件.本文将说明在 D3 中如何读取它们. 1. TSV 表格文件是什么 TSV(Tab Separated Values),制表分隔值,它和 CSV 文件仅仅是分隔符不一致.它的格式如下: name age 张三 22 李四 24 2. D3 中读取 TSV 文件 在 D3 中读取 TSV 文件的方法和 CSV 文件是一样的,只要更改一下函数名即可.方法如下: d3

《饿了么大前端 Node.js 进阶教程》—Javascript 基础问题—引用传递

<饿了么大前端 Node.js 进阶教程>地址:https://github.com/ElemeFE/node-interview 1.如何编写一个 json 对象的拷贝函数 function clone(obj){ var result; if (Array.isArray(obj)) { result = []; obj.forEach((item) => { result.push(clone(item)); }); } else if (typeof obj === 'objec