一、DOM中各种宽度、高度

二、DOM中的坐标系

JS获取div元素的宽度

offsetWidth=width+padding-left+padding-right+border-left+border-right,
即offsetWidth描述的是元素的宽度,是指元素的宽度+内边距(左右两个)+边框(左右两个),不包括外边距和滚动条部分

offsetHeight=height+padding-top+padding-bottom+border-top+border-bottom,
即offsetHeight描述的是元素的高度,是指元素的高度+内边距(上下两个)+边框(上下两个),不包括外边距和滚动条部分

offsetTop=margin-top+padding-top(parent的)
即offsetTop描述的是元素和父容器的上边距离,是指元素的外边距(上边一个)+已定位的父容器(offsetParent)的内边距(上边一个)(不包括元素的边框和父容器的边框)

offsetLeft=margin-left+padding-left(parent的)
即offsetLeft描述的是元素和父容器的左边距离,是指元素的外边距(左边一个)+已定位的父容器(offsetParent)的内边距(左边一个)(不包括元素的边框和父容器的边框)

clientWidth=width+padding-left+padding-right
即clientWidth描述的是元素的宽度,是指元素的宽度+内边距(左右两个),不包括外边距、滚动条部分、边框

clientHeight=height+padding-top+padding-bottom
即clientHeight描述的是元素的高度,是指元素的高度+内边距(上下两个),不包括外边距、滚动条部分、边框

clientTop=border-top
即clientTop是指当前元素的上边框

clientLeft=border-left
即clientLeft是指当前元素的左边框

scrollWidth=width+padding-left+padding-right
即元素的滚动条宽度,是指宽度+内边距(左右两个),值等价于“clientWidth”的值

scrollHeight=height+padding-top+padding-bottom
即元素的滚动条高度,是指高度+内边距(上下两个),值等价于“clientHeight”的值

scrollTop元素的滚动条的垂直位置

scrollLeft元素的滚动条的水平位置

注:
http://www.cnblogs.com/kongxianghai/p/4192032.html
情况1:
元素内无内容或者内容不超过可视区,滚动不出现或不可用的情况下。

scrollWidth=clientWidth,两者皆为内容可视区的宽度。

offsetWidth为元素的实际宽度。

情况2:

元素的内容超过可视区,滚动条出现和可用的情况下。

scrollWidth>clientWidth。

scrollWidth为实际内容的宽度。

clientWidth是内容可视区的宽度。

offsetWidth是元素的实际宽度。

滚动条属性:
  overflow:auto为自动,yes为有,no为无
  overflow-x:横向滚动条
  overflow-y:纵向滚动条

如果该div被包含在其他对象例如td中,则位置可设为相对:position:relative

特别是元素内容超过可视区,这里的滚动条宽度有点不太清楚

示例:

 <div id="divParent" style="position:relative; background:#36F; padding:5px; border:2px solid #FF0; width:300px; overflow:auto;">
<div id="divChild" style="width:400px; height:100px; border:1px solid #fff; background:#69F; margin:20px; padding:10px;
"></div>
</div> <script type="text/javascript">
var div = document.getElementById("divChild");
var childWidth = div.offsetWidth;
var childHeight = div.offsetHeight;
var childTop = div.offsetTop;
var childLeft = div.offsetLeft; div.innerHTML += "childWidth:" + childWidth + "<br />";
div.innerHTML += "childHeight:" + childHeight + "<br />";
div.innerHTML += "childTop:" + childTop + "<br />";
div.innerHTML += "childLeft:" + childLeft + "<br />"; var childParent = div.offsetParent;
div.innerHTML += "childParent:" + childParent.id + "<br />"; var clientWidth = div.clientWidth;
var clientHeight = div.clientHeight;
var clientTop = div.clientTop;
var clientLeft = div.clientLeft; div.innerHTML += "clientwidth:" + clientWidth + "<br />";
div.innerHTML += "clientHeight:" + clientHeight + "<br />";
div.innerHTML += "clientTop:" + clientTop + "<br />";
div.innerHTML += "clientLeft:" + clientLeft + "<br />"; //div.innerHTML = "";
var divParent = document.getElementById("divParent");
var scrollWidth = divParent.scrollWidth;
var scrollHeight = divParent.scrollHeight;
var scrollTop = divParent.scrollTop;
var scrollLeft = divParent.scrollLeft;
div.innerHTML+= "scrollWidth:" + scrollWidth + "<br />";
div.innerHTML+= "scrollHeigth:" + scrollHeight + "<br />";
div.innerHTML+= "scrollTop:" + scrollTop + "<br />";
div.innerHTML+= "scrollLeft:" + scrollLeft + "<br />";
</script>

js获取元素的页面坐标的更多相关文章

  1. js 获取元素在页面上的偏移量的最佳方式

    使用js制作效果时,我们常常要获取某个元素在页面上的偏移量(例如tip提示框功能).而获取偏移量可以直接获取相对于document的偏移量,也可以获取相对与视口的偏移量(viewpoint)加上页面滚 ...

  2. js 获取元素坐标 和鼠标点击坐标

    js 获取元素的位置 var odiv=document.getElementById('divid'); alert(odiv.getBoundingClientRect().left); aler ...

  3. 【全面总结】js获取元素位置大小

    [js获取元素位置+元素大小]全面总结 目录 1.关于offset offsetParent(只读) offsetTop(只读) offsetLeft(只读) offsetHeight(只读) off ...

  4. js获取元素位置和style的兼容性写法

    今天说一下js获取元素位置和style的方法.当然不只是element.style那么简单.. 主角:getBoundingClientRect,getClientRects,getComputedS ...

  5. js获取元素的外链样式

    一般给元素设置行内样式,如<div id="div1" style="width:500px;"></div>.如要获取它的样式,即可d ...

  6. js点击获取—通过JS获取图片的相对坐标位置

    一.通过JS获取鼠标点击时图片的相对坐标位置 源代码如下所示: <!DOCTYPE html> <html lang="en"> <head> ...

  7. jquery获取元素到页面顶部距离

    jquery获取元素到页面顶部距离的语句为: $(selector).offset().top

  8. js获取元素提示信息

    js获取元素提示信息 var date=$("#date").attr('placeholder'); js修改元素的提示信息 $("#date").attr( ...

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

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

随机推荐

  1. 注册页面Page的内置属性以及函数 路由 模块化

    Page.prototype.route  route字段可以获取到当前页面的路径 Page.prototype.setData() setData函数用于将数据从逻辑层发送到视图层,同时改变对应的t ...

  2. Python批量操作Linux服务器执行命令

    #-*- coding: utf-8 -*- #!/usr/bin/python import paramiko import threading def ssh2(ip,username,passw ...

  3. bzoj2718

    二分图匹配 首先有个定理:最长反链=最小链覆盖 最小链覆盖可以重复经过点 所以我们不能直接建图 那么我们用floyd判断是否相连 然后建图就行了 #include<bits/stdc++.h&g ...

  4. MySQL之避免插入重复数据

    INSERT ignore INTO `$table_name`($field_name) VALUES(),(),(),()"; //若重复数据可以添加,请在对应的数据表字段中添加数据库索 ...

  5. hdoj5875【二分+RMQ】

    全部从我大哥那里学习得来.. 一开始硬着头皮就是根据思路上线段树,明知是T还要写(因为线段树还不是很熟,趁机练一发) 后来果然T了,然后就去学了一发RMQ的ST算法,查询是O(1). ST算法主要: ...

  6. [Xcode 实际操作]九、实用进阶-(23)多个Storyboard故事板中的页面跳转

    目录:[Swift]Xcode实际操作 本文将演示多个Storyboard故事板中的页面跳转. 使用快捷键[Command]+[N]创建一个新的故事板文件. (在项目文件夹[DemoApp]上点击鼠标 ...

  7. 第四章 “我要点爆”微信小程序云开发之疯狂点击与糖果点爆页面制作

    疯狂点击点爆方式页面制作 疯狂点击为用户提供一个60秒的按钮点击时间,同时点击过程中有背景音乐,系统根据用户点击按钮的此时来进行热度值的计算. <view class="the_hea ...

  8. CentOS(6、7)修改主机名(hostname)

    centos6需要修改两处:一处是/etc/sysconfig/network,另一处是/etc/hosts,只修改任一处会导致系统启动异常.首先切换到root用户. /etc/sysconfig/n ...

  9. Centos7安装与配置domain模式wildfly(默认配置)

    (1)安装与配置JDK8 1)使用wget下载JDK8: wget --no-check-certificate --no-cookies --header "Cookie: oraclel ...

  10. 最近工作用到压缩,写一个zip压缩工具类

    package test; import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream ...