一、滚动距离、高度 scrollTop scrollLeft scrollHeight scrollWidth

  二、相对位置、距离 offsetTop offsetLeft offsetHeight offsetWidth

  三、可视距离、宽高 clientTop clientLeft clientHeight clientWidth

  四、坐标

   event.clientX event.clientY event.pageX event.pageY

  event.offsetX event.offsetY event.layerX event.layerY

  screenLeft screenTop screenX screenY

  e.pageX e.pageY e.clientX e.clientY

  e.offsetX e.offsetY

  五、例子

一.滚动距离、高度

1.对象滚动条上面和左边折卷的距离(即浏览器滚动条滚动后顶部和左部被隐藏的页面内容像素)

javascript

    document.documentElement.scrollTop//firefox

    document.documentElement.scrollLeft//firefox

    document.body.scrollTop//IE

    document.body.scrollLeft//IE

jquery

    $(window).scrollTop()

    $(window).scrollLeft()

2.滚动对象元素的实际内容宽高,不含边框,包括被卷去看不见的部分。

javascript

    document.body.scrollWidth //IE

    document.body.scrollHeight //IE

    document.documentElement.scrollWidth //firefox

    document.documentElement.scrollHeight //firefox

jquery

    无相关写法,但可获取同等高度

二.相对位置、距离

1.元素相对  最近有定位属性的父级元素  顶端和左边的偏移值 如果没有定位属性,默认为window

javascript

    DOM元素对象.offsetTop //IE firefox

    DOM元素对象.offsetLeft //IE firefox

jquery

    jq对象.offset().top;

    jq对象.offset().left;

2.元素本身的高度

javascript

   obj.offsetWidth //obj元素的宽度  offsetWidth = width + padding + border

    obj.offsetHeight //obj元素的高度  offsetHeight = width + padding + border

jquery

    $(obj).outerHeight()  //参数设为true 包括margin

    $(obj).outerWidth() //参数设为true 包括margin

    补充:$(obj).height() //不包括padding,border,margin

       $(obj).innerHeight() //包括padding,不包括border,margin

三.可视距离、宽高

1.网页工作区域的高度和宽度(可见区域的宽度和高度)

javascript

    document.documentElement.clientHeight; //IE firefox  clientHeight = height + padding

    document.documentElement.clientWidth; //IE firefox  clientWidth = width + padding

jquery

    $(window).innerHeight();

    $(window).innerWidth();

2.元素周围边框的厚度

    clientLeft //左边框的宽度

    clientTop //右边框的宽度

四.坐标位置

1.相对文档

    IE  event.clientX event.clientY

    firefix    event.pageX  event.pageY

2.相对容器

    IE  event.offsetX  event.offsetY

    firefox  event.layerX  event.layerY

3.获取浏览器在电脑屏幕中的位置

    x=window.screenLeft || screenX;

    y=window.screenTop || screenY;

4.获取鼠标在浏览器中的位置

    $(obj).mousemove(function(e){
      var x=e.pageX;  //  这就是鼠标的x坐标  e.clientX也可以
      var y=e.pageY; //   这就是鼠标的y坐标

    })
5.获取鼠标在容器中的坐标

    document.getElementById('box').onclick=function(e){
      var x=e.offsetX || layerX;  这就是鼠标的x坐标
      var y=e.offsetY || layerY;  这就是鼠标的y坐标

    }

五.例子

1.css

  1. .outer{
  2. overflow:auto;
  3. border:1px solid #;
  4. height:300px;
  5. width:300px;
  6. padding:50px;
  7. margin:0px;
  8. }
  9. .inner{
  10. height:800px;
  11. width:600px;
  12. border:5px solid #;
  13. }

2.dom

  1. <div id="testDiv" class="outer">
  2. <div class="inner"></div>
  3. </div>
    <div id="result" style="top:420px;left:20px;position:fixed;">

3.js

  1. $(function(){
  2. var element = document.getElementById("testDiv");
  3. $(element).scroll(function(){
  4. var str = "<div><span>滚动到最底端时:scrollTop+clientHeight=scrollHeight___</span>scrollTop:"+element.scrollTop
  5. +"</div><div><span>滚动到最右端时:scrollLeft+clientWidth=scrollWidth___</span>scrollLeft:"+element.scrollLeft
  6. +"</div><div><span>content(内部元素的实际高度)+padding-top___</span>scrollHeight:"+element.scrollHeight
  7. +"</div><div><span>content(内部元素的实际宽度)+padding-left___</span>scrollWidth:"+element.scrollWidth
  8. +"<br/><br/><div><span>相对最近有定位属性的父级元素 顶端的偏移___</span>offsetTop:"+element.offsetTop
  9. +"</div><div><span>相对最近有定位属性的父级元素 左边的偏移___</span>offsetLeft:"+element.offsetLeft
  10. +"</div><div><span>border+padding+content___</span>offsetHeight:"+element.offsetHeight
  11. +"</div><div><span>border+padding+content___</span>offsetWidth:"+element.offsetWidth
  12. +"<br/><br/><div><span>border-top___</span>clientTop:"+element.clientTop
  13. +"</div><div><span>border-left___</span>clientLeft:"+element.clientLeft
  14. +"</div><div><span>content+padding-滚动条的宽度___</span>clientHeight:"+element.clientHeight
  15. +"</div><div><span>content+padding-滚动条的宽度___</span>clientWidth:"+element.clientWidth
  16. +"</div>";
  17.  
  18. $("#result").html(str);
  19. });
  20. });

4.结果

  结果说明:

    滚动过程中,scrollTop和scrollLeft的值会变化。

    //实际内容占的实际高度

    scrollHeight = 810(inner 的 height+border)+50(outer 的 padding-top)。

    offsetTop和offsetLeft为8px是浏览器的默认像素,此处指outer元素相对window的偏移。

      //实际所占位置大小 包括border 不包括 margin

    offsetHeight outer元素实际占位置的height  outer 的 content+padding+border

    clientTop outer的上边框

    clientLeft outer的左边框

       //实际可见区域

    clientHeight outer的 content height+padding - 滚动条的宽度

    clientWidth outer的 content width+padding - 滚动条的宽度

  

  (本文供学习交流,欢迎大家共同讨论)

scrollTop,scrollHeight,clientTop,clientHeight,offsetTop,offsetHeight实际意义 及 计算方式 附实例说明的更多相关文章

  1. scrollHeight、clientHeight、offsetHeight、scrollTop等的定义以及图解

    开发中经常遇到使用scrollHeight.scrollTop.clientHeight.offsetHeight等的情况,网上有众多关于这些属性的解释,但是并不全面和直观,现在将这些属性结合图例整理 ...

  2. 关于offsetTop offsetHeight clientHeight scrollHeight scrollTop的区别研究

    我是以chrome浏览器做的研究. 先看一段代码: <script> window.addEventListener('DOMContentLoaded',function(){ var ...

  3. jquery 对象的 height、innerHeight、outerHeight 的区别以及DOM 元素的 clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop

    前言:jquery 对象的 height.innerHeight.outerHeight,还有 DOM 元素的 clientHeight.offsetHeight.scrollHeight.offse ...

  4. offsetTop/offsetHeight scrollTop/scrollHeight 的区别

    offsetTop/offsetHeight   scrollTop/scrollHeight  这几个属性困扰了我N久,这次一定要搞定. 假设 obj 为某个 HTML 控件. obj.offset ...

  5. clientTop、offsetTop和scrollTop的区分

    页可见区域宽: document.body.clientWidth; 网页可见区域高: document.body.clientHeight; 网页可见区域宽: document.body.offse ...

  6. 各种位置和高度计算:.position()、.offset()、.outerHeight()、.scrollTop、.scrollHeight、.clientHeight

    1..position()和.offset() jquery的.position()获取相对于最近的position为relative或absolute的父元素的偏移,返回.position().le ...

  7. 四种浏览器对 clientHeight、offsetHeight、scrollHeight、clientWidth、offsetWidth 和 scrollWidth 的解释差异

    网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWid ...

  8. 详解clientHeight、offsetHeight、scrollHeight

    关于clientHeight.offsetHeight.scrollHeight   window.screen.availWidth 返回当前屏幕宽度(空白空间)  window.screen.av ...

  9. height、clientHeight、offsetHeight、scrollHeight、height()、 innerHeight()、outerHeight()等的区别

    1.height height是css属性,这个属性定义元素内容区的高度,在内容区外面可以增加内边距.边框和外边距. 当  box-sizing: content-box 时,高度应用到元素的内容框. ...

随机推荐

  1. vm装xp安装成功后进入不了系统

    1.如果是用虚拟光驱,你肯定步骤是先新建的虚拟机,再安装的虚拟光驱,所以会出现这样的问题.(请先安装虚拟光驱,再新建虚拟机,再用虚拟光驱加载镜像文件,问题解决)2.如果是直接使用的镜像,那么在GHOS ...

  2. CSS3 background-origin 属性

    CSS3 background-origin 属性 padding-box 背景图像相对于内边距框来定位. border-box 背景图像相对于边框盒来定位. content-box 背景图像相对于内 ...

  3. 【技术累积】【点】【java】【26】@Value默认值

    @Value 该注解可以把配置文件中的值赋给属性 @Value("${shit.config}") private String shit; 要在xml文件中设置扫描包+place ...

  4. 【sqli-labs】 less53 GET -Blind based -Order By Clause -String -Stacked injection(GET型基于盲注的字符型Order By从句堆叠注入)

    http://192.168.136.128/sqli-labs-master/Less-53/?sort=1';insert into users(id,username,password) val ...

  5. Object.keys() https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

    Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用for...in 循环遍历该对象时返回的顺序一致 (两者的主要区别是 一个 for-in ...

  6. Java-Class-Miniprogram:com.ylbtech.common.utils.miniprogram.TemplateMessage

    ylbtech-Java-Class-Miniprogram:com.ylbtech.common.utils.miniprogram.TemplateMessage 1.返回顶部 1.1. pack ...

  7. Python random模块&string模块 day3

    一.random模块的使用: Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. 1.常用函数: (1)random.random() 用于生成一个0到1 ...

  8. P1002 过河卒 【递推、简单动规】

    题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒 ...

  9. (C/C++学习)13.C语言字符串处理函数(一)

    说明:字符串处理的函数很多,本文将例举经常遇到的一些函数加以说明. 一.字符串的输入输出 头文件:<stdio.h> 1.利用标准输出函数 printf() 来输出,将格式设置为 s% . ...

  10. 爬虫文件存储:txt文档,json文件,csv文件

    5.1 文件存储 文件存储形式可以是多种多样的,比如可以保存成 TXT 纯文本形式,也可以保存为 Json 格式.CSV 格式等,本节我们来了解下文本文件的存储方式. 5.1.1 TXT文本存储 将数 ...