博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文档坐标及元素坐标等
阅读量:5114 次
发布时间:2019-06-13

本文共 1918 字,大约阅读时间需要 6 分钟。

 

基本


 

 

1、元素位置以像素度量,向右代表X坐标增加,向下代表Y坐标增加,X坐标和Y坐标可以相对于文档的左上角或者相对于其中显示文档的视口的左上角

2、如果没有出现滚动条时(即文档比视口小时),文档和视口坐标系统是同一个,如果出现滚动条时两种坐标系间的转换需要加上或者减去滚动的偏移量(scroll offset)

3、文档坐标在用户滚动时不会发生变化

4、getBoundingClientRect()返回的坐标包含元素的边框和内边距,不包括元素的外边距

 

三组坐标


 

 

每个html元素都有下面三组属性:

offsetWidthoffsetHeightoffsetLeftoffsetTopoffsetParent——所相对的父元素

 

clientWidthclientHeightclientLeftclientTop

 

scrollWidthscrollHeightscrollLeftscrollTop

 

基本关系如下图:

 

 

注意:1、对于内联元素clientLeft、clientTop、clientWidth、clientHeight 总是为0

   2、scrollWidth和scrollHeight是元素的内容区域加上它的内边距再加上任何溢出内容的尺寸。当内容与内容区域匹配没有溢出时,scrollWidth、scolHeight和clientWidth、clientHeight是相等的,当溢出时scrollWidth、scolHeight大于clientWidth、clientHeight

 

例子


 

 

eg1:查询窗口滚动条位置

function getScrollOffsets(w){    w = w || window;    if(w.pageXOffset != null){ //IE8前版本不能使用        return {            x: w.pageXOffset,             y: w.pageYOffset        };    }    var d = w.document; //对于标准模式下IE或者其他浏览器    if(document.compatmode == "CSS1Compat"){        return {            x: d.documentElement.scrolLeft,             y: d.documentElement.scrollTop        };    }    //对于怪异模式下浏览器    return {        x: d.body.scrollLeft,        y: d.body.scrollTop    };}

 

 

eg2:查询窗口视口尺寸

function getViewportSize(w){    w = w || window;    if(w.innerWidth != null){        return {            w: w.innerWidth,            h: w.innerHeight        };    }    var d = w.document;    if(document.compatMode == "CSS1Compat"){        return {            w: d.documentElement.clientWidth,            h: d.documentElement.clientHeight        }    }    return {        w: d.body.clientWidth,        h: d.body.clientHeight    }}

 

eg3:计算元素尺寸

var box = e.getBoundingClientRect();var offsets = getScrollOffsets();var x = box.left + offsets.x;var y = box.top + offsets.y;var w = box.width || (box.right - box.left); //原始的IE中getBoundingsClientRect中没有width和height属性var h = box.height || (box.bottom - box.top);

 

  

 

 

 

 

转载于:https://www.cnblogs.com/wishyouhappy/p/3781428.html

你可能感兴趣的文章
Dirichlet分布深入理解
查看>>
(转)Android之发送短信的两种方式
查看>>
字符串处理
查看>>
HtmlUnitDriver 网页内容动态抓取
查看>>
ad logon hour
查看>>
获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName...
查看>>
证件照(1寸2寸)拍摄处理知识汇总
查看>>
罗马数字与阿拉伯数字转换
查看>>
Eclipse 反编译之 JadClipse
查看>>
Python入门-函数
查看>>
[HDU5727]Necklace(二分图最大匹配,枚举)
查看>>
距离公式汇总以及Python实现
查看>>
设计模式之装饰者模式
查看>>
一道不知道哪里来的容斥题
查看>>
Blender Python UV 学习
查看>>
window添加右键菜单
查看>>
入手腾龙SP AF90mm MACRO
查看>>
Window7上搭建symfony开发环境(PEAR)
查看>>
Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3
查看>>
第23月第24天 git命令 .git-credentials git rm --cached git stash clear
查看>>