本篇所读源码版本为1.7.2
jQuery中提供了获取设置HTML元素位置的接口方法。如下
.offset()
.position()
.offsetParent()
.scrollTop()
.scrollLeft()
所有位置相关的代码在项目的offset.js中,总共250行代码。里面还有些未公开的方法,如
getOffset()
getWindow()
jQuery.offset.bodyOffset()
jQuery.offset.setOffset()
它们之间的关系如下
从图中可以看到两个重要的函数.offset()和.position()都依赖于私有的getOffset()。
.position()还依赖于.offsetParent()。offsetParent通过while循环获取最近的定位父元素(position为非static值)。
getOffset()函数根据浏览器是否支持getBoundingClientRect得来。如果支持则使用getBoundingClientRect,否则使用while循环不断计算得出位置值。
getBoundingClientRect最早是IE中实现的,后主流浏览器都实现了它。因此后面的else判断基本上用不上,jQuery可考虑去掉该段代码。
需要注意下.offset()和.position()的区别
.offset() 相对于document(视口)计算的
.position() 相对于其最近的 定位父元素
此外,.offset()传入一个对象或函数时可以设置元素的位置(setter),而.position()则仅是获取位置(getter)。
.offset()作为getter时,获取dispaly:none的元素top,left都将是零。
.offset()作为setter时,如果没有元素的position(此时值为static),那么.offset()方法会将其设置为“relative”以相对于视口进行重新定位。如下
// set position first, in-case top/left are set even on static elem
if ( position === "static" ) {
elem.style.position = "relative";
}
相关:
http://www.w3.org/TR/cssom-view/#the-getclientrects
https://developer.mozilla.org/en/DOM/element.getBoundingClientRect
http://msdn.microsoft.com/en-us/library/ms536433%28VS.85%29.aspx
- 大小: 31.8 KB
分享到:
相关推荐
jQuery的`.animate()`方法是实现动画的核心,它可以改变元素的各种属性,如位置、大小、透明度等。例如,可以使用以下代码让元素在进入视口时淡入: ```javascript $('.animate-element').each(function() { var ...
标题《读jQuery之五(取DOM元素)》指出本文的主题是关于在使用jQuery时如何获取DOM元素。描述部分通过与Prototype.js中的$(xx)调用比较,引出了jQuery中的$()函数使用get方法和toArray方法来获取DOM元素。这些方法...
5. **定位**:包含了实用的定位算法,如`.position()`和`.offset()`,用于精确控制元素的位置。 **文件内容概览** - **licence_gpl.txt, license_commercial.txt**:这两个文件可能分别包含了GPL(GNU General ...
3. **动画效果**:jQuery的`.animate()`方法可以创建复杂的动画效果,包括改变元素的样式属性如透明度、宽度、高度等,以及移动元素位置。同时,还有`.fadeIn()`、`.slideUp()`等预定义的动画效果。 4. **Ajax交互*...
此外,jQuery还提供了链式操作,使得代码更加简洁易读。 在这个名为"h5test"的压缩包中,可能包含以下内容: 1. HTML文件:定义了页面结构和canvas元素。 2. CSS文件:用于样式设置,可能包括拖动元素的外观和页面...
4. **动画效果**:jQuery的`.animate()`方法可以创建平滑的动画效果,如改变元素的位置、大小、透明度等。例如,`$("#myDiv").animate({left: "50px"}, 1000)`将在1秒内将元素移动到左边50像素。 5. **Ajax操作**:...
4. **动画效果(Animation)**:`fadeIn()`、`fadeOut()`、`slideToggle()`等方法为元素添加平滑的动画效果,`animate()`可以自定义动画过程,控制元素的各种属性如位置、大小、透明度等。 5. **Ajax交互(Ajax)**...
在这里,你可以看到关于扑克牌大小、颜色、位置等样式的定义。CSS3的新特性,如动画(@keyframes)和过渡(transition),也可能被用来增强视觉效果。jQuery与CSS的结合,如使用$.css()方法,可以让动态效果更为流畅...
同时,`.animate()`方法允许自定义动画效果,如改变元素的位置、大小、透明度等。 对于Ajax操作,jQuery的`.ajax()`函数是核心。它封装了XMLHttpRequest对象,使得异步数据交互变得直观。例如,`$.ajax({url: "data...
此外,$.animate()函数允许开发者自定义复杂的动画效果,包括改变元素的大小、位置、透明度等属性。 六、Ajax请求 jQuery 1.4.2的$.ajax()函数是进行异步数据请求的主要方式,支持GET、POST等多种HTTP方法。$.get...
这些方法可以用于改变元素的可见性、大小、位置等属性,使得网页更具动态性和吸引力。 Ajax是异步JavaScript和XML的缩写,jQuery简化了与服务器端进行数据交换的过程。使用$.ajax()函数,开发者可以轻松地发起Ajax...
2. **Interactions(交互)**: 包括拖放(Draggable)、可排序(Sortable)、可连接(Droppable)等功能,使得用户可以通过鼠标操作来改变元素的位置或进行其他交互。 3. **Widgets(组件)**: 提供了诸如对话框(Dialog)...
它是实现Lightbox效果的基础,通过使用jQuery,开发者可以编写更简洁、更易读的代码来控制DOM元素。 2. **CSS和HTML结构**:创建Lightbox效果首先需要在HTML中设置必要的结构,通常包括隐藏的大图容器、导航按钮和...
4. **动画效果**:jQuery的`.animate()`方法可以创建复杂的动画效果,如改变元素的位置、大小、透明度等,同时还有`.fadeIn()`, `.slideUp()`等预定义的动画效果。 5. **Ajax交互**:jQuery的`.ajax()`方法简化了...
5. **动画效果**:jQuery的`.animate()`函数可以创建平滑的动画效果,包括改变元素的大小、位置、颜色等属性。另外,还有`.fadeIn()`, `.fadeOut()`, `.slideToggle()`等预定义的动画方法。 6. **Ajax交互**:...
jQuery通过一种简化的语法,使JavaScript代码更易读、更简洁。例如,`$(selector).action()`是jQuery的基本结构,其中`selector`是选择器,用于定位HTML元素,`action`是执行的操作。 在"JQuery 随意拖动的层"中,...
jQuery是由John Resig创建的一个轻量级库,它的语法设计目的是使JavaScript代码更加简洁、易读。例如,通过使用"$"符号,我们可以快速选择DOM元素,执行各种操作。例如,`$("selector").function()`,其中"selector...
点击任意 `<li>` 元素时,会计算该元素之前的所有同级元素的数量,从而得到该元素在列表中的位置(索引号)。 #### 十一、如何把函数绑定到事件上 **知识点:** - **`.bind()` 方法:** 绑定事件处理程序。 **示例...