美文网首页
关于位置

关于位置

作者: 何大必 | 来源:发表于2018-11-25 11:17 被阅读0次

阮一峰

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

一张网页的全部面积,就是他的大小。通常情况下,网页的大小由内容和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()是最好的。

相关文章

  • 关于位置

    阮一峰 网页的大小与浏览器窗口的大小 一张网页的全部面积,就是他的大小。通常情况下,网页的大小由内容和css样式表...

  • 关于位置

    当 一棵树 爬满金黄 便会在下一个构图中 形成一幅美丽景致 被善于发现的人儿 拍下来 向世人展现 别样的美 因此才...

  • 关于位置

    总是会听到这样那样关于上班近的话题,可是不管怎么讲我还是觉得这不是我的终点,我终将也不会被这些困住。 吃得苦中苦,...

  • 关于重音位置

    今天来说说单词、词组和句子的重音。 1. 多音节单词的重音 书中(如上图)的总结清晰明了。以带前缀的单词举例,动词...

  • 关于自己的位置

    分享:关于自己的位置 事一:某领导把我叫到办公室,交待完工作,开始说一堆负面的信息和抱怨的话,我真的很不想听,不耐...

  • 关于位置无关代码

    位置无关代码是怎么产生的? 位置无关代码的基本原理 位置无关代码的相关数据结构 位置无关代码的重定位(程序启动的时...

  • 关于PopuWindow位置问题

    关于PopuWindow位置问题 popuwindow在Android 版本7.0以上,使用showAsDropD...

  • 关于js中的位置

    总是记不住,真是脑壳疼,再写一次加深记忆!张鑫旭的文章戳这里 梳理了一遍,总计下用的最多的几个属性 getBoun...

  • 关于光标求位置偏移

    场景: 设置属性:self.automaticallyAdjustsScrollViewInsets = NO; ...

  • 91、关于牛人与位置

    一个人站在合适的位置是牛人,站在不合适的位置可能就是傻瓜。 所有的禀赋,都是依据场景而产生的,脱离应用场景谈禀赋没...

网友评论

      本文标题:关于位置

      本文链接:https://www.haomeiwen.com/subject/vhpfqqtx.html