第52天:offset家族、scroll家族和client家族的区别
一、offset家族
1、offsetWidth offsetHeight offsetLeft offsetTop offsetParent共同组成了offset家族,用来获取元素尺寸。
offsetWidth = width + padding + border
offsetHeight = height + padding + border
2、offsetLeft 和 offsetTop:
返回距离上级带有定位的盒子左边的位置,如果父级元素没有定位,则以body为准
offsetLeft从父亲的padding开始算,父亲的border不算。
offsetParent:返回该对象的带有定位的父级,如果当前元素的父级元素没有
进行CSS定位,则offsetParent为body.如果当前元素的父级元素中有定位,则
取最近的父级元素
3、offsetLeft和style.left的区别
1、最大区别在于offsetLeft可以返回没有定位的盒子距离左侧的位置
而style.left不可以。
2、offsetTop返回的是数字,而style.top返回的是字符串(24px),除了数字外,还
带有单位。
3、offsetTop只读,而style.top读写
4、如果没有给HTML元素设置top样式,style.top返回的是空字符串。
二、scroll家族
1、scroll家族主要包括scrollWidth、scrollHeight、scrollLeft、 scrollTop、 onscroll事件
scrollWidth/scrollHeight是指内容的高度
scrollLeft/scrollTop指被卷去的左侧和头部(浏览器无法显示的部分)
一般调用document.body.scrollTop
2、onscroll滚动事件(window.onscroll = func)
屏幕每滚动一次,哪怕只有一个像素也会触发这个事件。这样就可以检测屏幕滚动了
只能有一个写了多个以最后一个为准,同理 window.onload
未声明 DTD(谷歌只认识他)
(IE9+认识他)document.body.scrollTop
已经声明DTD(IE678只认识他)
(IE9+任何时候)
document.documentElement.scrollTop
火狐/谷歌/ie9+以上支持的(不管DTD)
3、window.pageYOffset
滚动到指定位置:window.scrollTo 把内容滚动到指定的坐标
scrollTo(xpos,ypos)
xpos 必需。要在窗口文档显示区左上角显示的文档的 x 坐标。
ypos 必需。要在窗口文档显示区左上角显示的文档的 y 坐标
三、client家族
1、 clientWidth:获取网页可视区域宽度
clientHeight:获取网页可视区域的高度
如果是盒子调用,指的是盒子本身
如果是body/html调用,指的是可视区域的大小
clientX:鼠标距离可视区域左侧距离(event调用)
clientY:鼠标距离可视区域上侧距离(event调用)
clientTop/clientLeft盒子的border宽高
2、client家族之:检浏览器宽/高度(可视区域)
1、ie9及其以上的版本
window.innerWidth/Height
2、标准模式(有DTD)(“CSS1Compat”)
document.documentElement.clientWidth
document.documentElement.clientHeight
3、怪异模式 (没有DTD)
document.body.clientWidth
document.body.clientHeight
四、三个家族的区别:
区别1:(offset/scroll/client宽高)
clientWidth = width + padding
clientHeight = height + padding
offsetWidth = width + padding + border
offsetHeight = height + padding + border
scrollWidth = 内容宽度(不包含border)
scrollHeight = 内容高度(不包含border)
区别2:(offset/scroll/client上下)
offsetTop/offsetLeft :
调用者:任意元素。(盒子为主)
作用:距离父系盒子中带有定位的距离。
scrollTop/scrollLeft:(盒子也可以调用,必须有滚动条)
调用者:document.body.scrollTop/.....(window)
作用:浏览器无法显示的部分(被卷去的部分)。
clientY/clientX:(clientTop/clientLeft 值的是border)
调用者:event.clientX(event)
作用:鼠标距离浏览器可视区域的距离(左、上)。
在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息。所有浏览器都支持event对象,但支持的方式不同。
比如鼠标操作时候,会添加鼠标位置的相关信息到事件对象中。(类似Date)
普通浏览器支持 event(传参)
ie 678 支持 window.event(无参)
clientX/clientY
当前窗口的左上角为基准点
pageX/pageY低版本浏览器(IE67)不支持
以当前文档的左上角为基准点
screenX/screenY
当前屏幕的左上角为基准点
第52天:offset家族、scroll家族和client家族的区别的更多相关文章
- 三大家族(offset、scroll、client)
offset.scroll.client三大家族 offset家族 offsetWidth 与 offsetHeight offset 偏移 用于获取元素自身的位置和大小 offsetWidth和of ...
- client家族属性
在前面总结了offset家族属性和scroll家族属性,今天来总结一下client家族属性,同前面一样,client家族也包宽高和左上,具体的通过代码来区别这三大家族属性的不同. <!DOCTY ...
- javascript中常用坐标属性offset、scroll、client
原文:javascript中常用坐标属性offset.scroll.client 今天在学习js的时候觉得这个问题比较容易搞混,所以自己画了一个简单的图,并且用js控制台里面输出测试了下,便于理解. ...
- 你真的懂offset与scroll吗?
背景 身为一个前端工程师,每次在做关于滚动或者定位之类的交互时,或多或少都会用到offset.scroll之类的元素属性值来计算距离,但是每次都是现用现百度,从来没有真正系统地弄明白其中的原理及用法: ...
- JavaScript-client、offset、scroll、定时器
client offset scroll client.offset.scroll系列 他们的作用主要与计算盒模型,盒子的偏移量和滚动有关 clientTop 内容区域到边框顶部的距离, 说白了, 就 ...
- 前端 ---client、offset、scroll系列
client.offset.scroll系列 1.client系列 代码如下: <!DOCTYPE html> <html> <head> <meta c ...
- python 全栈开发,Day52(关于DOM操作的相关案例,JS中的面向对象,定时器,BOM,client、offset、scroll系列)
昨日作业讲解: 京东购物车 京东购物车效果: 实现原理: 用2个盒子,就可以完整效果. 先让上面的小盒子向下移动1px,此时就出现了压盖效果.小盒子设置z-index压盖大盒子,将小盒子的下边框去掉, ...
- 4.client、offset、scroll系列
client.offset.scroll系列 他们的作用主要与计算盒模型.盒子的偏移量和滚动有关 clientTop 内容区域到边框顶部的距离 ,说白了,就是边框的高度 clientLeft 内容区域 ...
- JS 中的offset、scroll、client总结
经常碰到offset.scroll.client这几个关键字,每次都要各种实验,这里总结一下. 两张图镇楼,随时翻阅 1. offset offset 指偏移,包括这个元素在文档中占用的所有显示宽度, ...
随机推荐
- JavaScript---复选框全选的多种实现
<script language=javascript> //第一种方法 function selectall1() { var a = document.getElementsBy ...
- day 6 敌机
1.显示敌机 #-*- coding:utf-8 -*- import pygame import time from pygame.locals import * class HeroPlane(o ...
- LeetCode:39. Combination Sum(Medium)
1. 原题链接 https://leetcode.com/problems/combination-sum/description/ 2. 题目要求 给定一个整型数组candidates[ ]和目标值 ...
- android学习十三 首选项
1,首选项可用用来持久保存用户设置,游戏最高分等 2,首选项有,列表首选项,复选框首选项,对话框首选项.. 3,通过xml文件和代码创建首选项 addPreferencesFromResou ...
- 读google c++规范笔记
全局变量在main函数之前初始化原则上禁止拷贝构造函数和赋值函数如果只有数据,没有方法,可以用struct析构函数声明为虚函数尽量避免重载操作符 难以定位的bug 误以为简单的操作存取控制 可以放到声 ...
- debian8+lnmp1.2一键安装+WordPress3.9
下载并安装LNMP一键安装包 wget -c http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz && tar zxf lnmp1.2-ful ...
- APP性能测试工具-GT(随身调)
GT(随身调)是APP的随身调测平台,它是直接运行在手机上的“集成调测环境”(IDTE, Integrated Debug Environment).利用GT,仅凭一部手机,无需连接电脑,您即可对AP ...
- Java enum类型笔记
用途: 定义命令行参数,菜单选项,星期,方向(东西南北)等 与普通类的不同 有默认的方法 value() 每个enum类都已默认继承java.lang.Enum,所以enum类不能继承其他类 构造方法 ...
- Android 修改系统默认density
如你所知在Anroid N 中,系统添加了多个级别的密度值供用户选择. 系统的默认的值就是 ro.sf.lcd_density 同时其他级别的默认值的大小基础也是以默认值为基础,然后乘以不同的比例得到 ...
- Spark- 根据IP获取城市(java)
开源 IP 地址定位库 ip2region 1.4 ip2region 是准确率 99.9% 的 IP 地址定位库,0.0x毫秒级查询,数据库文件大小只有 2.7M,提供了 Java.PHP.C.Py ...