HTML:

  <div id="parent">
    <div id="box">
      测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测      试测试测试
    </div>
  </div>

CSS:

  #parent{
    position:absolute;
    width: 400px;
    height: 400px;
    background-color: blue;

    margin: 10px;
  }
  #box{
    width: 200px;
    height: 200px;
    overflow: scroll;/**/
    background-color: pink;

    /*margin: 10px;*/
    position: absolute; /*此时的offsetTop,offsetLeft,获取的值是相对于父元素的*/
    top: 50px;
    left: 50px;

    border:10px solid red;

    padding: 10px;
    margin: 10px;/**/

  }


var box = document.getElementById("box");

1.scollTop,scollLeft获取/设置滚动条被隐藏的内容的高度/宽度  

    box.scrollTop = 100;
    // alert(box.scrollTop);
    // alert(box.scrollHeight);

  将滚动条设置为0:

    scorllStar(box);
    function scorllStar (elemnet) {
      if (box.scrollTop!=0) {
        box.scrollTop = 0;
      };
    }

2.offsetLeft 和 offsetTop 获取当前元素相对于父元素的位置

  alert(box.offsetTop);

  alert(box.offsetLeft);

  alert(box.offsetParent); // 如果没有给父元素设置position非ie浏览器会返回body对象,ie会返回object,所以要想得到具体的元素需要给              父元素设置position的值。

求子元素距离body的值:
     alert(box.offsetTop + box.offsetParent.offsetTop); // 60 子元素+父元素

如果要求多个嵌套层中的任意一个元素距离父html/body的值时,可以这样:

    alert(newOffsetTop(box));

    function newOffsetTop (elemnet) {
      var top = elemnet.offsetTop;
      var parent = elemnet.offsetParent;
      while(parent!=null){
        top += parent.offsetTop;
        parent = parent.offsetParent;
      }
    return top;
    }

    function newOffsetLeft (elemnet) {
      var left = elemnet.offsetLeft
      var parent = elemnet.offsetParent;
      while(parent!=null){
        left += parent.offsetLeft;
        parent = parent.offsetParent;
      }
    return left;
    }

3.scrollWidth, scollHeight 获取滚动内容的元素大小

  alert(box.scrollWidth); //包含padding值,但不包含margin值,如果有滚动条,会减去滚动条的宽高值

alert(box.scrollHeight); //ie7显示的高度是内容高度不是元素的本身的高度

4.clientWidth,clientHeight获取元素可视区域的大小 包含padding值,减去边框,不包含margin值

alert(box.clientWidth);
alert(box.clientHeight);

5.clientLeft,clientTop  返回元素的左边框,上边框

  alert(box.clientLeft);

  alert(box.clientTop);

http://blog.csdn.net/xuantian868/article/details/3116442

http://blog.sina.com.cn/s/blog_48e6792c0100z7ge.html

DOM元素的大小和位置的更多相关文章

  1. C1:DOM 元素的尺寸和位置

    DOM元素的尺寸和位置 DOM 元素的尺寸 DOM.offsetWidth/offsetHeight: 包括内容区宽/高,padding,border,不包括margin.如果元素的box-sizei ...

  2. JavaScript获取DOM元素位置和尺寸大小

      在一些复杂的页面中经常会用JavaScript处理一些DOM元素的动态效果,这种时候我们经常会用到一些元素位置和尺寸的计算,浏览器兼容性问题也是不可忽略的一部分,要想写出预想效果的JavaScri ...

  3. 获取DOM元素位置和尺寸大小

    JavaScript获取DOM元素位置和尺寸大小 在一些复杂的页面中经常会用JavaScript处理一些DOM元素的动态效果,这种时候我们经常会用到一些元素位置和尺寸的计算,浏览器兼容性问题也是不可忽 ...

  4. 使用html元素的getBoundingClientRect来获取dom元素的时时位置和大小

    使用: var section = $('.section'):这是jquery包装的dom元素,其他前端框架返回的可能也是一个包装元素, 我们需要获得的是里面的html的dom元素 然后:secti ...

  5. 第一百一十七节,JavaScript,DOM元素尺寸和位置

    学习要点: 1.获取元素CSS大小 2.获取元素实际大小 3.获取元素周边大小 本章,我们主要讨论一下页面中的某一个元素它的各种大小和各种位置的计算方式,以便更好的理解. 一.获取元素CSS大小 1. ...

  6. DOM元素尺寸和位置

    一.获取元素 CSS大小 1.通过style 内联获取元素的大小 var box = document.getElementById('box'); //获取元素 box.style.width; / ...

  7. JavaScript(第二十一天)【DOM元素尺寸和位置】

    学习要点: 1.获取元素CSS大小 2.获取元素实际大小 3.获取元素周边大小 本章,我们主要讨论一下页面中的某一个元素它的各种大小和各种位置的计算方式,以便更好的理解.   一.获取元素CSS大小 ...

  8. DOM元素的位置、尺寸及更多的信息

    一.基本概念 document.documentElement是整个DOM树的根节点,对应的元素就是html.下面将其称作根元素或根节点. document.body,对应的元素是body 二.浏览器 ...

  9. vue 组件传递值以及获取DOM元素的位置信息

    1.父组件 select_li.vue 1.1 父组件模板 <template> <div id='selectLi' ref="selectLi"> &l ...

随机推荐

  1. Trie tree实践

    1.Trie树 Trie树即字典树或前缀树, 2.实践 代码实践如下: package cn.edu.buaa.trie; import java.util.HashSet; /** * @autho ...

  2. WeakReference

    https://msdn.microsoft.com/en-us/library/ms404247(v=vs.110).aspx http://stackoverflow.com/questions/ ...

  3. ImageView的常用属性

    ImageView的一些常用属性,并且这些属性都有与之对应的getter.setter方法: android:adjustViewBounds:设置ImageView是否调整自己的边界来保持所显示图片 ...

  4. 给网页 title添加图片。

    在网页的title中添加 <link rel="shortcut icon" href="logo.png" /> 即可. 可以看下百度搜索的代码, ...

  5. Android联系人数据库

    转载自http://www.2cto.com/kf/201406/309356.html 通信录是一个3层的数据存储模型,这三个数据模型就是ContactsContact.Data,ContactsC ...

  6. C#模拟鼠标键盘控制其他窗口(一)

    编写程序模拟鼠标和键盘操作可以方便的实现你需要的功能,而不需要对方程序为你开放接口.比如,操作飞信定时发送短信等.我之前开发过飞信耗子,用的是对飞信协议进行抓包,然后分析协议,进而模拟协议的执行,开发 ...

  7. 如何查看oracle 的package源码

    select text from dba_source t where t.TYPE = 'PACKAGE BODY' and name ='EMR_RECORD_INPUT' order by li ...

  8. JQuery Mobile 页面参数传递

    在单页模版中使用基于HTTP的方式通过POST和GET请求传递参数,而在多页模版中不需要与服务器进行通信,通常在多页模版中有以下三种方法来实现页面间的参数传递. 1.GET方式:在前一个页面生成参数并 ...

  9. request response

    request 和 response 这两个对象是出现在service方法中.service方法是用来接收请求处理请求,完成响应的.     接受请求指的就是request对象     完成响应指的就 ...

  10. asp.net中membership使用oracle数据库(二)

    需要安装的东西都准备好了,继续生成后台表.过程.函数.触发器等.ps/sql中 @@E:\oracle\product\11.2.0\client_1\ASP.NET\SQL\InstallAllOr ...