Js获取宽高度的归纳总结
首先,先吓唬一下我们的小白们!在js中的描述宽高的可以细分有22种。
- window.innerWidth //除去菜单栏的窗口宽度
- window.innerHeight//除去菜单栏的窗口高度
- window.outerWidth//包括菜单栏的窗口宽度
- window.outerHeight//包括菜单栏的窗口宽度
- window.screen.height//电脑屏幕的高度
- window.screen.width//电脑屏幕的宽度
- window.screen.availHeight//电脑屏幕的可利用高度
- window.screen.availWidth//电脑屏幕的可利用宽度
- window.screenTop//浏览器距离屏幕的高度
- window.screenLeft//浏览器距离屏幕的宽度
- document.body.clientWidth//指元素的自身宽度(包括padding)
- document.body.clientHeight//指元素的自身的高度(包括padding)
- document.body.clientLeft//子级div内容位置到父级内容区域的宽度距离(即border值)
- document.body.clientTop//子级div内容位置到父级内容区域的高度距离(即border值)
- document.body.offsetWidth//指定元素的宽度(包括padding,border和内容)
- document.body.offsetHeight//指定元素的高度(包括padding,border和内容)
- document.body.offsetTop//距离父级元素的高度
- document.body.offsetLeft//距离父级元素的宽度
- document.body.scrollWidth//获取的是文档的宽度(当指定的宽度小于浏览器窗口的时候,为浏览器的宽度)
- document.body.scrollHeight//获取的是文档的高度(当指定的高度小于浏览器窗口的时候,为浏览器的高度)
- document.body.scrollTop//文档被滚动上去的时候(即滚动条往上滚动的距离)
- document.body.scrollLeft//文档被滚动右去的时候(即滚动条往右滚动的距离)
看起来有点怕怕,但我们细分可以很清晰的分清楚他们
- width和height的都是值元素或窗口等的宽高,top和left表示的是到相对元素的距离
- client,offset,scrollh和screen都分别有width,height,top和left
- 最后就是区别窗口和屏幕的宽高和元素的宽高
我们先从上往下去分析每一个的作用
innerHeight/Width
outerHeight/Width
Screen屏幕宽高
首先我们先分清楚widnow和document的区别
window 整个窗口
document 除了顶头的菜单栏
document对象是window对象的一部分
话不多说,直接上图
offset
document.body.offsetWidth
document.body.offsetHeight
指定元素的border+padding+内容的宽度和高度
如果没有padding和border
offsetWidth = clientWidth
兼容性问题
IE6/7中(微软已经不提供支持)
offsetLeft = (offsetParent的padding-left)+(当前元素的margin-left)
IE8以上
offsetLeft = (offsetParent的margin-left)+(当前元素的margin-left)
火狐中
offsetLeft = (offsetParent的margin-left)+(当前元素的margin-left)+(offsetParent的padding-left)
client
指定元素的宽度和高度 即内容+padding
如果没有滚动条,即元素本身设定的宽度
如果出现滚动条,滚动条会遮盖元素宽高,那么,该属性就是其本来宽高减去滚动条的宽度
console.log( document.body.clientHeight);
console.log(document.body.clientWidth);
读取元素border的宽度和高度(子级内容区域到父级内容区域的距离)
document.body.clientLeft
document.body.clientTop
scroll
谷歌浏览器下
- 当指定的宽高小于浏览器窗口的时候
- scrollWidth为浏览器的宽度
- scrollHeight为浏览器的高度
- 当给的宽高大于浏览器窗口,且内容小于给定的宽高时
- scrollWidth给定的宽度+padding、margin和border
- scrollHeight给定的宽度+padding、margin和border
- 当给定的宽高大于浏览器窗口,且内容大于给定的宽高
- scrollWidth内容宽度+所有的padding,margin和border
- scrollHeight内容高度+所有的padding,margin和border
属性时可读写的
指当元素其中的内容超出其宽高的时候,元素被卷起的高度和宽度
懒加载思路
在还没有这个技术的出现时,页面的所有内容和图片,都会在访问时一次性的加载出来,对于浏览器和服务器都是一种负担,如果想百度图片这样的图库,用手机来看,多少流量都是浪费。这样的用户体验不仅差,还给服务器增加负担。所以懒加载技术才酝酿出来。
懒加载技术的要点是通过滚动事件触发判断
元素到顶部的距离小于 <= 可视区域 client(满足条件后触发加载后台内容)
底部加载技术
scrollTop+可视区域 == 网页高度 scrollHeight(满足条件后触发加载后台内容)
一天多写一点点,一天多积累一点点!
(完!)
Js获取宽高度的归纳总结的更多相关文章
- Js获取宽高度的归纳集锦总结
首先,先吓唬一下我们的小白们!在js中的描述宽高的可以细分有22种.属性根据不同的兼容性也分为五种 window.innerWidth //除去菜单栏的窗口宽度,与浏览器相关 window.inner ...
- js获取浏览器高度和宽度值,尽量的考虑了多浏览器。
js获取浏览器高度和宽度值,尽量的考虑了多浏览器. IE中: document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ...
- jquery、js获取页面高度宽度等
jquery获取页面高度宽度 //获取浏览器显示区域(可视区域)的高度 : $(window).height(); //获取浏览器显示区域(可视区域)的宽度 : $(window).width(); ...
- 【转】js 获取浏览器高度和宽度值(多浏览器
原文地址:http://www.jb51.net/article/19844.htm js获取浏览器高度和宽度值,尽量的考虑了多浏览器. IE中: document.body.clientWidth ...
- JS获取div高度的方法
有时在写页面时,需要获取一个div的高度.怎么才能获取呢?哈哈,先上结论.有两种方法. offsetHeight .clientHeight getComputedStyle offsetHeight ...
- js获取浏览器高度
常用: JS 获取浏览器窗口大小 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 // 获取窗口宽度 if (window.innerWidth) winWidth = ...
- JS获取浏览器高度 并赋值给类
在给网站做轮播焦点图的时候,如果需要全屏的话,可以用下面的jQuery来获取浏览器高度,然后赋值给类. $(window).load(function () { var maxHeight = 0; ...
- 原生js获取宽高与jquery获取宽高的方法的关系
说明:1.因为获取高度的情况跟获取宽度的情况一样,所以以下只说获取宽度的情况. 2.以下所说的所有方法与属性所返回的值都是不带单位的. 3.为了方便说明,以下情况采用缩写表示: obj -> ...
- js 获取浏览器高度和宽度值(多浏览器)(转)
IE中: document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.d ...
随机推荐
- 关于while和do while 的个人理解
先上代码 int x=425; System.out.println("循环开始,我的初始值为:x="+x); //425 do { System.out.println(&quo ...
- CentOS6.6-MySQL报Curses library not found
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.40 \> -DMYSQL_DATADIR=/application/mysql-5. ...
- ASP.NET Core中的配置
配置 参考文件点击跳转 配置来源 命令行参数 自定义提供程序 目录文件 环境变量 内存中的.NET 对象 文件 默认配置 CreateDefaultBuilder方法提供有默认配置,在这个方法中会接收 ...
- IOT设备的7大安全问题
IOT设备的7大安全问题 串口安全 IOT设备一般包含各类串口,并且这些串口缺乏认证机制.一旦暴露给了hacker,hacker可以很容易的查找敏感信息和dump固件,从而导致各类安全问题.建议厂家在 ...
- lamda和匿名内部类
匿名内部类 匿名内部类在日常编程中还是经常会使用的.比如 ArrayList<String> list=new ArrayList<>(); list.add(new Stri ...
- 《编写可维护的JavaScript》 笔记
<编写可维护的JavaScript> 笔记 我的github iSAM2016 概述 本书的一开始介绍了大量的编码规范,并且给出了最佳和错误的范例,大部分在网上的编码规范看过,就不在赘述 ...
- 设计模式(二)Adapter模式
Adapter模式也被成为Wrapper模式.适配器模式用于填补“现有的程序”和“所需的程序”之间差异的设计模式. Adapter模式有两种,即使用继承的适配器和使用委托的适配器. 1.使用继承的适配 ...
- SpringBoot的Banner
一 官方文档介绍 1 自定义横幅 通过在 classpath 中添加banner.txt文件或将banner.location设置为此类文件的位置,可以更改启动时打印的横幅.如果文件具有异常编码,则可 ...
- Flask:Flask中使用会话技术
1.会话技术cookie和session (1)cookie 在网站中,HTTP请求是无状态的.也就是说,即使第一次用户访问服务器并登录成功后,第二次请求服务器依然不知道当前发起请求的是哪个用户.co ...
- 题解 【洛谷】AT654
题解 AT654 [役人[错题已隐藏]] 此题题面没搬过来, 会日语的dalao可以自行去ATCoder查看. 给出此题的JavaAC代码: public class Main { public st ...