关于位置

阮一峰

网页的大小与浏览器窗口的大小

一张网页的全部面积,就是他的大小。通常情况下,网页的大小由内容和css样式表决定。
浏览器窗口的大小,指的是在浏览器窗口中看到的那部分网页面积,又叫做‘视口’(viewport)。
在网页内容不出现滚动条的情况下,网页大小与视口是相等的。

获取网页的大小
  • 方法1
    网页上的每个元素,都有clientWidth和clientHeight属性。这两个属性指元素的内容部分加上padding所占据的视觉面积,不包括border和滚动条占用的空间。
    因此,document元素的clientWidth和clientHeight属性就代表了网页的大小。
    注意:clientWidth和clientHeight都是只读属性,不能对它们赋值。
//获取网页大小
document.body.clientWidth;
document.body.clientHeight;
  • 方法2
    网页上的每个元素还有scrollHeight和scrollWidth属性,指包含滚动条在内的该元素的视觉面积。
    document对象的scrollHeight和scrollWidth属性就是网页的大小,意思就是滚动条滚过的所有长度和宽度。
获取网页元素的绝对位置

网页元素的绝对位置,指该元素的左上角相对于整张网页左上角的坐标。这个绝对位置要通过计算才能得到。
每个元素都有offsetTop和offsetLeft属性,表示该元素的左上角与父容器(offsetParent对象)左上角的距离。所以,只需要将这两个值进行累加,就可以得到该元素的绝对坐标。

获取网页元素的相对位置

网页元素的相对位置,指该元素左上角相对于浏览器窗口左上角的坐标。

有了绝对位置以后,获得相对位置就很容易了,只要将绝对坐标减去页面的滚动条滚动的距离就可以了。滚动条滚动的垂直距离,是document对象的scrollTop属性;滚动条滚动的水平距离是document对象的scrollLeft属性。

element.scrollIntoView()此方法可以将元素滚动到视口中,类似与锚点定位。

获取元素位置的快速

getBoundingClientRect()方法。它返回一个对象,其中包含了left、right、top、bottom四个属性,分别对应了该元素的左上角和右下角相对于浏览器窗口(viewport)左上角的距离。
网页元素的相对位置就是

  var X= this.getBoundingClientRect().left;
  var Y =this.getBoundingClientRect().top;

再加上滚动距离,就可以得到绝对位置

var X= this.getBoundingClientRect().left+document.documentElement.scrollLeft;
var Y =this.getBoundingClientRect().top+document.documentElement.scrollTop;
JQuery中的position() 和offset()

jquery中有position() 和offset()两种方法获取元素的位置。

  • position()
    获取匹配元素相对父元素的偏移。
    返回的对象包含两个整形属性:top 和 left。为精确计算结果,请在补白、边框和填充属性上使用像素单位。
    此方法只对可见元素有效。
  • offset()
    获取匹配元素在当前视口的相对偏移。
    返回的对象包含两个整形属性:top 和 left。
    此方法只对可见元素有效。
    offset()方法可以让我们重新设置元素的位置。这个元素的位置是相对于document对象的。如果对象原先的position样式属性是 static的话,会被改成relative来实现重定位。

注意
1)、使用position()方法时事实上是把该元素当绝对定位来处理,获取的是该元素相当于最近的一个拥有绝对或者相对定位的父元素的偏移位置。
2)使用position()方法时如果其所有的父元素都为默认定位(static)方式,则其处理方式和offset()一样,是当前窗口的相对偏移
3)使用offset()方法不管该元素如何定位,也不管其父元素如何定位,都是获取的该元素相对于当前视口的偏移
例如:要显示的元素存放在DOM的最顶端或者最底端(即其父元素就是body),这时用offset()是最好的。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,703评论 1 92
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,435评论 1 45
  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 10,160评论 0 0
  • 学会使用CSS选择器熟记CSS样式和外观属性熟练掌握CSS各种选择器熟练掌握CSS各种选择器熟练掌握CSS三种显示...
    七彩小鹿阅读 11,449评论 2 66
  • “嘿,月,等会儿我!我跟你说两句话!”我一边小跑着,一边着急却又有点心虚的喊了一声。 今天是高考后最近一次回学校,...
    不约也不同阅读 2,325评论 0 0

友情链接更多精彩内容