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. Django基础,Day9 - 静态文件目录与路径设置说明(eg. images, JavaScript, CSS)

    静态文件路径设置官方说明 1. Make sure that django.contrib.staticfiles is included in your INSTALLED_APPS. 2. In ...

  2. 在linux命令行下执行php 程序

    如何在linux命令行下,执行php程序. 例子 打印当前时间 php -r "echo time()" 随机输出一个数字 php -r "echo rand(1,20) ...

  3. CSS透明代码

    透明往往能产生不错的网页视觉效果,先奉上兼容主流浏览器的CSS透明代码: .transparent_class { filter:alpha(opacity=50); -moz-opacity:0.5 ...

  4. Eclipse快捷键与使用技巧总结

    快捷键 功能 Ctrl + / 双斜杠注释 Ctrl + Shilft + / 块注释 Alt + / 代码提示 Ctrl + I (或 Ctrl + Shift + F) 格式化代码 Ctrl + ...

  5. JavaScript闭包之“词法作用域”

    大家应该写过下面类似的代码吧,其实这里我想要表达的是有时候一个方法定义的地方和使用的地方会相隔十万八千里,那方法执行时,它能访问哪些变量,不能访问哪些变量,这个怎么判断呢?这个就是我们这次需要分析的问 ...

  6. Spring面试题

    69道Spring面试题和答案 原文地址    译者:深海(1422207401@qq.com)  校对:方腾飞 目录 Spring 概述 依赖注入 Spring beans Spring注解 Spr ...

  7. js的继承

    js要实现继承有很多方法,个人总结大致分为三种: function people(){ this.specials = "人类"; } function p1(name){ thi ...

  8. 【Android学习】《Android开发视频教程》第一季笔记

    视频地址: http://study.163.com/course/courseMain.htm?courseId=207001 课时5    Activity基础概念 1.Android开发技术结构 ...

  9. Effective C++ 33 避免遮掩继承而来的名称

    首先介绍一个原则LSP(Liskov Substitution Principle),如果Class D以Public方式继承Class B,则所有B对象可以派上用场的任何地方,D对象一样可以派上用场 ...

  10. centos 安装redis(一台机器可以安装多个redis)

    我在运行时redis版本是2.8 操作前设置以管理员身份: 打开终端输入 su - 安装redis需要确保系统已经安装了(gcc gcc-c++)# yum -y install gcc gcc-c+ ...