在开发jquery时候经常需要用到定位,有相对父元素定位和相对文档定位,本文为此总结下,有需要的朋友可以参考下

在开发jquery时候经常需要用到定位,这里概括两种定位:

1、相对父元素定位: $("#ele").position(),进而得到 left = $("#ele").postion().left right = $("#ele").postion().right
2、相对文档定位:$("#ele").offset(), 进而得到 left = $("#ele").offset().left right = $("#ele").offset().right

jquery 元素相对定位代码

align:左右对齐;vlign:垂直对齐;xleft:水平补给值;xleft:垂直补给值;adjust:是否相对窗口自动调整;rwindow:定位相对于窗口(align&vlign为center时垂直或水平居中)

  1. /**
  2. *jQuery rposition
  3. *fix:要定位的元素
  4. *rel:相对定位的元素
  5. *options:{},align:左右对齐;vlign:垂直对齐;xleft:水平补给值;xleft:垂直补给值;adjust:是否相对窗口自动调整;rwindow:定位相对于窗口(align&vlign为center时垂直或水平居中);
  6. 来源:www.jbxue.com
  7. */
  8. (function(win,$){
  9. win.rposition=function(fix,rel,options){
  10. var rectLeft,rectTop,rectH=fix.outerHeight(),rectW=fix.outerWidth(),wh=$(window).height(),ww=$(window).width(),
  11. sT=$(document).scrollTop(),sL=$(document).scrollLeft(),
  12. defaults={
  13. align:"left",
  14. vlign:"top",
  15. xleft:0,
  16. xtop:0,
  17. adjust:true,
  18. rwindow:false
  19. },
  20. options = $.extend(defaults, options);
  21. var rectRel={
  22. l:$(rel).offset().left,
  23. t:$(rel).offset().top,
  24. w:$(rel).outerWidth(),
  25. h:$(rel).outerHeight()
  26. };
  27. switch(options.align){
  28. case "left":
  29. rectLeft=rectRel.l;break;
  30. case "right":
  31. rectLeft=rectRel.l+rectRel.w;break;
  32. case "center":
  33. rectLeft=rectRel.l+rectRel.w/2;break;
  34. case "rleft":
  35. rectLeft=rectRel.l-rectW;break;
  36. default:
  37. rectLeft=rectRel.l;
  38. };
  39. switch(options.vlign){
  40. case "top":
  41. rectTop=rectRel.t;break;
  42. case "center":
  43. rectTop=rectRel.t+rectRel.h/2;break;
  44. case "vbottom":
  45. rectTop=rectRel.t-rectH; break;
  46. case "bottom":
  47. default:
  48. rectTop=rectRel.t+rectRel.h;
  49. };
  50. if(options.rwindow){
  51. if(options.align=="center")rectLeft=(ww-rectW)/2+sL;
  52. if(options.vlign=="center")rectTop=(wh-rectH)/2+sT;
  53. };
  54. if(options.adjust){
  55. if(rectLeft+rectW>ww+sL){rectLeft-=(rectLeft+rectW)-(ww+sL)}
  56. if(rectTop+rectH>wh+sT){rectTop=rectRel.t-rectH;}
  57. };
  58. $(fix).css({"left":rectLeft+options.xleft,"top":rectTop+options.xtop});
  59. }
  60. })(window,jQuery)

jquery的相对父元素和相对文档定位示例代码的更多相关文章

  1. JQuery中查找父元素,子元素,追加元素,插入元素和删除元素 及其他常用方法

    Jquery之所以强大,和其在获取对象时使用与css选择器兼容的语法有很大关系.而且它还兼容了CSS3的选择器,而且多出了不少. 所以jQuery的选择器也就变得很多很强大.就最基本的有以下四个: $ ...

  2. jQuery 源码分析和使用心得 - 文档遍历 ( traversing.js )

    jQuery之所以这么好用, 首先一点就是$()方法和它强大的选择器. 其中选择器使用的是sizzle引擎, sizzle是jQuery的子项目, 提供高效的选择器查询. 有个好消息告诉大家, 就是s ...

  3. HTML+CSS基础 块级元素div分析 文档流 脱离文档流的方法

    块级元素div分析 1.外边距  margin 2.内边距 padding 3.边框  border Div的真实宽度=width+margin-left+margin-right+border*2+ ...

  4. day049--jQuery文档操作示例

    DOM操作(CRUD增改查删) 创建元素 $('span') // 创建一个span标签 后置插入操作   append(), appendTo() <!DOCTYPE html> < ...

  5. 《从零开始学Swift》学习笔记(Day 57)——Swift编码规范之注释规范:文件注释、文档注释、代码注释、使用地标注释

    原创文章,欢迎转载.转载请注明:关东升的博客 前面说到Swift注释的语法有两种:单行注释(//)和多行注释(/*...*/).这里来介绍一下他们的使用规范. 1.文件注释 文件注释就在每一个文件开头 ...

  6. 《从零開始学Swift》学习笔记(Day 57)——Swift编码规范之凝视规范:文件凝视、文档凝视、代码凝视、使用地标凝视

    原创文章.欢迎转载.转载请注明:关东升的博客 前面说到Swift凝视的语法有两种:单行凝视(//)和多行凝视(/*...*/).这里来介绍一下他们的使用规范. 1.文件凝视 文件凝视就在每个文件开头加 ...

  7. 操作jQuery集合搜索父元素

    搜索父元素 1.1parents()方法 parents()方法用于获取u当前匹配元素集合中的每个元素的祖先元素,根据需要还可以使用一个选择器进行筛选parents([selector]) 其中sel ...

  8. jquery 获取所有父元素

    最终结果: 代码: <!DOCTYPE html> <html> <head> <style> b, span, p, html body { padd ...

  9. Jquery框架1.选择器|效果图|属性、文档操作

    1.JavaScript和jquery的对比 书写繁琐,代码量大 代码复杂 动画效果,很难实现.使用定时器 各种操作和处理 <!DOCTYPE html> <html lang=&q ...

随机推荐

  1. JSON3-翻译(不当之处,请指正)

    http://bestiejs.github.io/json3/JSON 3 显示了两个功能:stringify():序列化一个javaScript值为一个JSON,和parse():将一个json字 ...

  2. How do you render tooltip on disabled HTML Button

    This idea's based on the following (x)html: <form><fieldset><buttondisabledtitle=&quo ...

  3. [经典算法] 字符串搜索Boyer-Moore

    题目说明: 今日的一些高阶程式语言对于字串的处理支援越来越强大(例如Java.C#.Perl等),不过字串搜寻本身仍是个值得探讨的课题,在这边以Boyer- Moore法来说明如何进行字串说明,这个方 ...

  4. Oracle基础(七)数据表

    一.创建表 语法: CREATE TABLE [schema.]table (column datatype[,column datatype[,...]); 说明: CREATE TABLE:为创建 ...

  5. Gvim 在进行文件对比时报cannot read or write temp files

    本机环境为win7 64位旗舰版,gvim安装的是GVim7.4.解决办法如下: 在安装目录下有个"_vimrc"文件.修改19行.将 if &sh =~ '\<cm ...

  6. HDU 1003 Max Sum && HDU 1231 最大连续子序列 (DP)

    Max Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  7. hdu 4412 利用单调性的动态规划

    思路: 这题和1227的求法一样,只不过1227是小数据,暴力下,就能进行预处理. 这题的预处理区间期望cost[i][j]需要利用单调性. 即假使以pos位置为安排的点,那么这个区间在其左边的概率为 ...

  8. MVC 菜鸟学习记录1

    Asp.Net MVC 模式是一种表现模式.它将web应用程序分成三个主要组件即:    Model.View.Controller M:Model 主要是存储或者是处理数据的组件 Model其实是实 ...

  9. asp.net MVC EF Where 过滤条件怎么写

    做.Net开发的肯定都知道.Net Sql语句有个SqlParameter 一般用来做过滤判断逻辑写,那么到了EF 了还有这样的写法嘛?答案肯定是有的了,这里我只是把最粗糙和简单的写法罗列一些,具体封 ...

  10. Linux Centos 怎么安装更新根证书实现支持https访问

    其实很简单就是一个命令:  mozroots --import --ask-remove    或者使用:  sudo update-ca-certificates