一. offset系列

1. offset系列的5个属性

1. offsetLeft : 用于获取元素到最近的定位父盒子的左侧距离
* 计算方式: 当前元素的左边框的左侧到定位父盒子的左边框右侧
* 如果父级盒子没有定位, 那么会接着往上找有定位的盒子
* 如果上级元素都没有定位,那么最后距离是与body的left值 2. offsetTop : 用于获取元素到最近定位父盒子的顶部距离
* 计算方式:当前元素的上边框的上侧到定位父盒子的上边框下侧
* 如果父级盒子没有定位,那么会接着往上找有定位的盒子
* 如果上级元素都没有定位,那么最后距离是与body的top值 3. offsetWidth :用于获取元素的真实宽度(除了margin以外的宽度) 4. offsetHeight : 用于获取元素的真实高度(除了margin以外的高度) 5. offsetParent :用于获取该元素中有定位的最近父级元素
* 如果当前元素的父级元素都没有进行定位,那么offsetParent为body

2. 与style.(left/top/width/height)的区别:

1. offset系列的是只读属性,而通过style的方式可以读写
2. offset系列返回的数值类型(结果四舍五入),style返回的是字符串
3. offsetLeft 和 offsetTop 可以返回没有定位的元素的left值和top值,而style不可以

二. scroll系列

1.scroll系列的4个属性

1. scrollHeight :元素中内容的实际高度(没有边框)
* 如果内容不足,就是元素的高度 2. scrollWidth: 元素中内容的实际宽度(没有边框)
* 如果内容不足,就是元素的宽度 3. scrollTop: onscroll事件发生时,元素向上卷曲出去的距离 4. scrollLeft : onscroll事件发生时,元素向左卷曲出去的距离

2. 兼容问题

(1) 兼容问题

* 未声明 DTD: 谷歌,火狐,IE9+支持

  document.body.scrollTop/scrollLeft

* 已经声明DTD:IE8以下支持

 document.documentElement.scrollTop/scrollLeft 

* 火狐/谷歌/ie9+以上支持的

  window.pageYOffest/pageXOffest

(2) 兼容代码

function getScroll() {
return {
left: window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft || 0,
top: window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop || 0
};
} 使用方法:
1. 取得scrollLeft值: getScroll().left
2. 取得scrollTop值: getScroll().top

三. client系列

1.client系列的4个常用属性(clientTop和clientLeft这里不予介绍)

1. clientWidth : 获取网页可视区域的宽度

2. clientHeight: 获取网页可视区域的高度

3. clientX :获取鼠标事件发生时的应用客户端区域的水平坐标

4. clientY :获取鼠标事件发生时的应用客户端区域的垂直坐标

2. 兼容问题

(1) clientWidth 和 clientHeight的兼容问题

    //由浏览器对象不同导致

* 未声明 DTD: 谷歌,火狐,IE9+支持

document.body.clientWidth/clientHeight

* 已经声明DTD:IE8以下支持

document.documentElement.clientWidth/clientHeight

* 火狐/谷歌/ie9+以上支持的

 window.innerWidth/innerHeight

(2) clientWidth 和 clientHeight的兼容代码

function client(){
if(window.innerWidth){
return {
"width":window.innerWidth,
"height":window.innerHeight
};
}else if(document.compatMode === "CSS1Compat"){
return {
"width":document.documentElement.clientWidth,
"height":document.documentElement.clientHeight
};
}else{
return {
"width":document.body.clientWidth,
"height":document.body.clientHeight
};
}
}
使用方法:
1. 取得clientWidth的值: client().width
2. 取得clientHeight的值: client().height

(3)clientX 和 clientY的兼容问题

    //由事件参数对象的兼容性问题导致

1. 谷歌,火狐,IE9+: 事件参数对象随着事件处理函数的参数传入
2. IE8以下: event对象必须作为window对象的一个属性(window.event)

(4)clientX 和 clientY的兼容性代码

//将client和scroll的兼容问题进行对象的封装
var evtTools={
//获取兼容的事件参数对象
getEvt:function (e) {
return window.event?window.event:e;
},
//获取的是可视区域的横坐标
getClientX:function (e) {
return this.getEvt(e).clientX;
},
//获取的是可视区域的纵坐标
getClientY:function (e) {
return this.getEvt(e).clientY;
},
//获取向左卷曲出去的距离的横坐标
getScrollLeft:function () {
return window.pageXOffset||document.body.scrollLeft||document.documentElement.scrollLeft||0;
},
//获取向上卷曲出去的距离的纵坐标
getScrollTop:function () {
return window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop||0;
}
};

四.总结

网页可见区域宽: document.body.clientWidth;
网页可见区域高: document.body.clientHeight;
网页可见区域宽: document.body.offsetWidth (包括边线的宽);
网页可见区域高: document.body.offsetHeight (包括边线的宽);
网页正文全文宽: document.body.scrollWidth;
网页正文全文高: document.body.scrollHeight;
网页被卷去的高: document.body.scrollTop;
网页被卷去的左: document.body.scrollLeft;
网页正文部分上: window.screenTop;
网页正文部分左: window.screenLeft;
屏幕分辨率的高: window.screen.height;
屏幕分辨率的宽: window.screen.width;
屏幕可用工作区高度: window.screen.availHeight;
屏幕可用工作区宽度:window.screen.availWidth;

JS 特效三大系列总结的更多相关文章

  1. JavaScript 特效三大系列总结

    一. offset系列 1. offset系列的5个属性 1. offsetLeft : 用于获取元素到最近的定位父盒子的左侧距离 * 计算方式: 当前元素的左边框的左侧到定位父盒子的左边框右侧 * ...

  2. 滚动变色的文字js特效

    Js实现滚动变色的文字效果,在效果展示页面,可看到文字在交替变色显示,以吸引人的注意,效果真心不错哦,把代码拷贝到你的网站后,修改成想要的文字就OK了. 查看效果:http://keleyi.com/ ...

  3. 150个JS特效脚本

    收集了其它一些不太方便归类的JS特效,共150个,供君查阅. 1. simplyScroll simplyScroll这个jQuery插件能够让任意一组元素产生滚动动画效果,可以是自动.手动滚动,水平 ...

  4. <一>初探js特效魅力之全选不选反选04

    初探js特效魅力04 我们在进入到公司里面工作的时候,做一个同一个项目,经常是大家分工合作,当我们写css时,一般不写在行间,因为这样会被误操作,也就是被乱删了都不知道,这样的后果是很难检查的 ,因为 ...

  5. <一>初探js特效魅力之选项卡05

    初探js特效魅力05 接下来为大家介绍的选项卡的切换 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&quo ...

  6. 带左右箭头切换的自动滚动图片JS特效

    效果图 按钮 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  7. arcgis api 3.x for js 入门开发系列批量叠加 zip 压缩 SHP 图层优化篇(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  8. 转:arcgis api for js入门开发系列四地图查询

    原文地址:arcgis api for js入门开发系列四地图查询 arcgis for js的地图查询方式,一般来说,总共有三种查询方式:FindTask.IdentifyTask.QueryTas ...

  9. 鼠标经过显示二级菜单的js特效

    本文章来给大家推荐一个不错的鼠标经过显示二级菜单js特效效果,有需要了解的朋友可以参考一下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 T ...

随机推荐

  1. java的JDBC的事务学习

    https://www.cnblogs.com/chy18883701161/p/11372089.html

  2. P 1030 完美数列

    转跳点:

  3. Day1-T1

    原题目 Describe:普通前缀和(当然有升级版的题目,范围3000+) code: #include<bits/stdc++.h> #define maxn 1010 #define ...

  4. volatile作用与处理器嗅探的简解

    先贴一下 volatile 的作用定义 如果一个字段被声明成volatile,Java线程内存模型确保所有线程看到这个变量的值是一致的 首先问题就来了,一个共享变量再被volatile修饰过后,怎么被 ...

  5. cf 730J. Bottles

    搞一个背包,233 要求用的瓶数最少,那么就业瓶数为第一关键,当瓶数相当后再以a[i] #include<bits/stdc++.h> #define N 100005 #define L ...

  6. 装WIN7的一点心得

    一.为什么要装WIN7 长久以来个人的习惯,WIN10用不来,总体安装思路是:下官方版,找方法激活 二.安装镜像的来源 这个网上版本五花八门,各种系统网站,但都会有软件捆绑等行为,还有浏览器中强制捆了 ...

  7. 实验吧-密码学-js(Chrome用console.log调试js)

    题目就是js,可能就是一个js的代码,查看源码并复制,在Chrome中打开网页,审查元素. 将复制的代码输入,将eval改成console.log,再回车执行,就得到一段js代码. 代码中有Unico ...

  8. 体验京东云 Serverless+AI 人脸属性识别

    云原生计算基金会CNCF(Cloud Native Computing Foundation, CNCF)Serverless Whitepaper v1.0对无服务器计算作了如下定义: Server ...

  9. git修改已经push的commit message

    git中修改上一次提交的commit的message git commit --amend -m "你的新的注释" git push -f 多个commit https://www ...

  10. linux中redis伪主从搭建

    1.解压redis.tgz到usr/local/redis下 2.在redis/下执行 make 3.在redis/src/下执行 make install PREFIX=/usr/local/red ...