关于js的宽高,随便一搜就是一大堆。这个一大堆对我来说可不是什么好事,看的头都大了。所以今天就总结了一些比较会常用的,并说明一下应用场景。

先来扯一下documentElement和body的微妙关系:

documentElement===html  ----->>    documentElement.childNode[2]===body  【很明显,父子关系】

如果<! doctype html>中没声明html,则拿不到documentElement这个值,但此时body==documentElement,这才有了下面的兼容写法.

js的宽高及应用:

可视区尺寸(.clientHeight):

对document:可视区height = 整个浏览器的高 - 工具栏部分height.

兼容写法:document.documentElement.clientHeight||document.documentElement.clientHeight.

对div:可视区height = height + padding.

写法:divObj.clientHeight.

.offsetHeight:

对document:

IE、Opera 认为 offsetHeight = clientHeight + 滚动条 + 边框。 NS、FF 认为 offsetHeight 是网页内容实际高度,可以小于 clientHeight。

对div:

divObj.offsetHeight=height+padding+border.

滚动距离(.scrollTop):

对document:可视区顶部到网页顶部,即网页被卷上去的部分.

获取兼容写法:document.body.scrollTop || document.documentElement.scrollTop.

设置兼容写法:document.body.scrollTop = document.documentElement.scrollTop=...

对div:div被卷上去的部分.

获取写法:divObj.scrollTop.

设置写法:divObj.scrollTop=...

.scrollHeight:

对document: document.body.scrollHeight被视为整个网页的高。【网页内容大于clientHeight时】

获取写法:document.body.scrollHeight.

对div:没有滚动条时,scrollHeight与clientHeight属性结果相等,scrollWidth与clientWidth属性结果相等;

存在滚动条,即存在内容溢出的情况时,scroll属性大于client属性,divObj.scrollHeight包括被隐藏部分。scrollHeight可用于获取div的wholeHeight以实现滚动到底部加载。

【注意】scrollHeight属性存在兼容性问题,chrome和safari浏览器中,scrollHeight包含padding-bottom;而IE和firefox不包含padding-bottom.

安利一个好东西:.getBoundingClientRect().top/right/bottom/left;     //div的各边距可视区的距离.

 
 
可视区加载:
 function showDiv(){
var showId=document.getElementById("showDiv");
var clients=window.innerHeight||document.documentElement.clientHeigh||document.body.clientHeigh;
var divTop=showId.getBoundingClientRect().top;
//判断是否出现在可视区了
if(divTop<=clients){
showId.classList.add('fadeInLeft');//一个带有动画的类
}
}
JQ的宽高及应用:
width() | height():可读写。(length) | function(index,oldWidth){  }
innerWidth() | innerHeight():可读写。(length) | function(index,oldWidth){  }
outerWidth(Boolean) | outerHeight(Boolean):为true时包括margin,false时不包括margin.
 
.scrollTop() | .scrollLeft:被卷走的宽高。
.offset().top/left :相对于document.
.position().top/left :相对于offsetParent.
 
常用的属性:
$(window).height();--可视区高
$(window).scrollTop();--滚上去的部分
$(document).height();--整个文档的高
 
滚动到底部:
$(window).scroll(function(){
var scrollTop = $(this).scrollTop(); //滚动条距离顶部的高度
var scrollHeight = $(document).height(); //当前页面的总高度
var clientHeight = $(this).height(); //当前可视的页面高度 if(scrollTop + clientHeight >= scrollHeight){ //滑动到底部 count++; //每次滑动count加1
 alert("滚动底部了");
}
});

介绍不是很详细,但常用的基本都在这了。若发现不足之处,望及时指正。谢谢

JS/jQ常用宽高及应用的更多相关文章

  1. js实现未知宽高的元素在指定元素中垂直水平居中

    js实现未知宽高的元素在指定元素中垂直水平居中:本章节介绍一下如何实现未知宽高的元素在指定元素下实现垂直水平居中效果,下面就以span元素为例子,介绍一下如何实现span元素在div中实现水平垂直居中 ...

  2. JS获取网页宽高方法集合

    JS获取网页宽高等方法的集合:document.body.clientWidth - 网页可见区域宽document.body.clientHeight - 网页可见区域高 document.body ...

  3. 原生JS获取元素宽高实践详解

    开篇的话 任何不是亲身实践中求得的知识,都不是属于你的.任何求得的知识不去时常温习运用,也不是属于你的. 记录由来 在做个上拉广告功能中遇到了一个"理所当然"觉得对的用法,慢慢才排 ...

  4. js中各种宽高

    各种宽高 Javascript: IE中:document.body.clientWidth ==> BODY对象宽度document.body.clientHeight ==> BODY ...

  5. js获取各种宽高方法

    屏幕的有效宽高: window.screen.availHeightwindow.screen.availWidth 网页可见区域宽:document.body.clientWidth 网页可见区域高 ...

  6. JS实现图片宽高的等比缩放

    关于图片宽高的等比缩放,其实需求就是让图片自适应父容器的宽高,并且是等比缩放图片,使图片不变形. 例如,需要实现如下的效果: 要实现上面的效果,需要知道图片的宽高,父容器的宽高,然后计算缩放后的宽高. ...

  7. JS获取元素宽高的两种情况

    JS获取元素宽高分两种情况, 一.内联样式,也就是直接把width和height写在HTML元素中的style里: 这种情况使用     document.getElementById('xxx'). ...

  8. js常用宽高属性

    document.body.clientWidth //body对象的宽度 document.body.clientHeight //body对象的高度 document.documentElemen ...

  9. JS 、JQ 获取宽高总结 & JS中getBoundingClientRect的作用及兼容方案

    1.getBoundingClientRect的作用 getBoundingClientRect用于获取某个html元素相对于视窗的位置集合.   执行 object.getBoundingClien ...

随机推荐

  1. python基本数据类型——dict

    一.创建字典: d = { "name": "morra", #字典是无序的 "age": 99, "gender": ...

  2. 通过向日葵(或者TeamViewer)创建VPN

    1.向日葵软件的安装比较简单.主要要开启VPN服务. 2.向日葵管理界面,添加机器. 3.组网. 4.作为VPN服务端机器(内网机器)安装传入的连接 5.外网客户端机器 一.登录向日葵客户端 一般使用 ...

  3. PPT制作线条动画

    0.小叙闲言 今天在用PPT做动画的时候小有心得,百度了一下线条动画制作,有一个贴子里面的讨论,也给了我一些灵感,贴子地址:http://www.rapidbbs.cn/thread-24577-1- ...

  4. angularjs 自定义filter

    过滤器(filter)-----过滤器的主要用途就是一个格式化数据的小工具,一般用于服务端存储的数据转换为用户界面可以理解的数据 <!DOCTYPE html> <html> ...

  5. WPF+MVVM学习总结 DataGrid简单案例

    一.WPF概要 WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分.它提供了统一的 ...

  6. vue2.0结合Element实现select动态控制input禁用

    今天有一个盆友问小颖,怎么实现用select动态控制input禁用,也就是说,input默认是可编辑的,但是每当我选一次select,input就会变成禁用,虽然小颖不知道她为什么这样做,因为小颖觉得 ...

  7. Java学习笔记——设计模式之四.代理模式

    To be, or not to be: that is the question. --<哈姆雷特> 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问. 上代码: p ...

  8. 区别client、offset、scroll系列以及event的几个距离属性

    element元素结点属性 一. offset系列 1.offsetWidth 和offsetHeight element.offsetWidth是一个只读属性,它包括了: css width + p ...

  9. 11、借助POI实现Java生成并打印excel报表(2)

    11.POI打印功能 11.1.常用模块形式: HSSFPrintSetup printSetup = sheet.getPrintSetup(); printSetup.setVResolution ...

  10. Nginx教程(三) Nginx日志管理

    Nginx教程(三) Nginx日志管理 1 日志管理 1.1 Nginx日志描述 通过访问日志,你可以得到用户地域来源.跳转来源.使用终端.某个URL访问量等相关信息:通过错误日志,你可以得到系统某 ...