jQuery方法position()与offset()区别

参考别人写得比较明白的,红色部分为重点吧:

使用jQuery获取元素位置时,我们会使用position()或offset()方法,两个方法都返回一个包含两个属性的对象-左边距和上边距,它们两个的不同点在于位置的相对点不同。

可以看看下边的图:

从图中我们可以大体看出两者的区别。

position()获取相对于它最近的具有相对位置(position:relative)的父级元素的距离,如果找不到这样的元素,则返回相对于浏览器的距离。

offset()始终返回相对于浏览器文档的距离,它会忽略外层元素

下边看个简单的例子,这里外层的div元素(position:relative)仅一个:

<divid="outer"style="width:200px;position:relative;left:100px;"><divid="inner"style="position:absolute;left:50px;top:60px;"></div></div>
//获取相对于最近的父级(position:relative)的位置var vposition = $("#inner").position();
alert(vposition.left);//输出:50
alert(vposition.top);//输出:60var voffset = $("#inner").offset();
alert(voffset.left);//输出:$("#outer").offset().left+50
alert(voffset.top);//输出:$("#outer").offset().top+60

在不同浏览器中,offset()得到的相对于浏览器的位置不同,相信你看了上边相应的注释,已经掌握了position()同offset()方法的区别。

原文:http://www.jquery001.com/position()-offset().html

 

event.clientX 相对文档的水平座标

event.clientY 相对文档的垂直座标(若在iframe中会有下拉框,相当于可见部分的垂直坐标)

event.offsetX 相对点击容器的水平坐标

event.offsetY 相对点击容器的垂直坐标

event.screenY 相对整个屏幕的垂直坐标

$(document).scrollTop(); //垂直滚动距离

$(XX).outerWidth() 对象宽度,包括padding

$(XX).outerHeight() 对象高度,包括padding

$(XX).offset().top; // 元素相对于document的上位移

时间: 2024-10-30 11:16:16

jQuery方法position()与offset()区别的相关文章

jQuery中position()方法用法实例_jquery

本文实例讲述了jQuery中position()方法用法.分享给大家供大家参考.具体分析如下: 此方法获取匹配元素相对某些元素的偏移量. 返回的对象包含两个整型属性(top和left)的对象. 此方法只对可见元素有效.语法结构: 复制代码 代码如下: $(selector).position() 在教程的开头之所以说是获取匹配元素相对于某些元素的偏移量.很多教程都说方法返回的偏移量是相对于父元素,其实并非完全如此,此方法会将匹配元素以绝对定位方式处理,当然并不是说真的将匹配元素设置为绝对定位.方

浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法_jquery

1.JQuery this和$(this)的区别 相信很多刚接触JQuery的人,很多都会对$(this)和this的区别模糊不清,那么这两者有什么区别呢? 首先来看看JQuery中的  $()  这个符号,实际上这个符号在JQuery中相当于JQuery(),即$(this)=jquery();也就是说,这样可以返回一个jquery对象.那么,当你在网页中alert($('#id'));时,会弹出一个[object Object ],这个object对象,也就是jquery对象了. 那么,我们

jQuery中position()方法的小问题

问题描述 jQuery中position()方法的小问题 如下代码求P元素的偏移量: $(document).ready(function(){ $("button").click(function(){ x=$("p").position(); alert("Left position: " + x.left + " Top position: " + x.top); }); }); body{ border:1px sol

jquery绝对定位元素用offset设置偏移,显示位置不对

问题描述 jquery绝对定位元素用offset设置偏移,显示位置不对 在做搜索框,根据输入内容去后台匹配数据显示到输入框下的div里, 一个没定位的input,一个绝对定位的div,获取input的offset直接赋值给div, 结果div在input下面,两个元素的内外边距都用内联方式设置为0了 (这个页面是嵌在父页面dialog的iframe里的, 看起来就好像div的top多加了dialog标题栏的高而input没有, 因为我用top减了标题栏的高之后两个元素基本重叠了,而且单独打开这个

jQuery之DOM对象和jQuery对象的转换与区别分析_jquery

本文实例分析了DOM对象和jQuery对象的转换与区别.分享给大家供大家参考.具体分析如下: jQuery Hello World程序: <script type="text/javascript" src="xxx//jquery-x.y.z.js"> 引入jQuery.存在两个版本,jquery-x.y.z.min.js是精简压缩版,不带min的是开发版,代码中的注释和缩进等都被保留了. 注意路径中的"/"需要转义,即用"

jquery方法+js一般方法+js面向对象方法实现拖拽效果_javascript技巧

复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&qu

DOM对象和jQuery对象的转换与区别

jQuery介绍 DOM对象和jQuery对象的转换与区别 jQuery Hello World程序 <script type="text/javascript" src="xxx//jquery-x.y.z.js"> 引入jQuery.存在两个版本,jquery-x.y.z.min.js是精简压缩版,不带min的是开发版,代码中的注释和缩进等都被保留了.  注意路径中的"/"需要转义,即用"//". $()符号将

jQuery()方法的第二个参数详解

  这篇文章主要介绍了jQuery()方法的第二个参数的使用方法,十分的简单,有需要的小伙伴可以参考下. 关于jQuery()方法的第二个参数,有下面这几种用法: 1.jQuery(selector, [context]) 这种用法,相当于 $(context).find(selector) 或者 context.find(selector) 2.jQuery(html, [ownerDocument]) 文档对ownerDocument的解释是:"创建DOM元素所在的文档" 也就是说

使用简洁的jQuery方法实现隔行换色功能

 本篇文章主要介绍了使用简洁的jQuery方法实现隔行换色功能.需要的朋友可以过来参考下,希望对大家有所帮助 今天用一种简洁的方法toggleClass()实现了隔行换色:代码如下:   代码如下: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8">  <title>隔行换色</title>     <script src="js/jquery-