关于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. Hibernate考试试题(部分题库)含答案

    Hibernate考试试题 (题库) 1.  在Hibernate中,下列说法正确的有( ABC ).[选三项] A.Hibernate是一个开放源代码的对象关系映射框架 B.Hibernate对JD ...

  2. waiting for spring......

    世间哪得双全法,不负如来不负卿....<仓央嘉措>

  3. 分布式文件系统:HDFS

    学习Hadoop,两个东西肯定是绕不过,MapReduce和HDFS,上一篇博客介绍了MapReduce的处理流程,这一篇博客就来学习一下HDFS. HDFS是一个分布式的文件系统,就是将多台机器的存 ...

  4. linux 下 启动oracle

    [root@csyang ~]# su - oracle #首先su到oracle用户 [oracle@csyang ~]$ sqlplus sys/passwd as sysdba #使用sys用户 ...

  5. 线段树区间更新操作及Lazy思想(详解)

    此题题意很好懂:  给你N个数,Q个操作,操作有两种,‘Q a b ’是询问a~b这段数的和,‘C a b c’是把a~b这段数都加上c. 需要用到线段树的,update:成段增减,query:区间求 ...

  6. Angular简易分页设计(二):封装成指令

    (首先声明本文来自博客园本人原创,转载请说明出处.欢迎关注:http://www.cnblogs.com/mazhaokeng/) 之前我们讲过,Angular分页代码确实不难实现,但是由于在多个路由 ...

  7. hadoop+hive+spark搭建(三)

    一.spark安装   因为之前安装过hadoop,所以,在“Choose a package type”后面需要选择“Pre-build with user-provided Hadoop [can ...

  8. Nginx 反向代理&负载均衡

    1.反向代理 当我们请求一个网站时,nginx会决定由哪台服务器提供服务,就是反向代理. nginx只做请求的转发,后台有多个tomcat服务器提供服务,nginx的功能就是把请求转发给后面的服务器, ...

  9. lightOJ 1258 Making Huge Palindromes(KMP)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1258 就是求逆串和原串的匹配长度 答案就是原串长度的2倍减去匹配长度即可 第一次我将原 ...

  10. HDU4686——Arc of Dream矩阵快速幂

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4686 题目大意: 已知a0=A0, ai=Ax*ai-1+Ay; b0=B0, bi=Bx*bi-1 ...