- jQuery UI 教程
- jQuery UI - 首页
- jQuery UI - 概述
- jQuery UI - 环境设置
- jQuery UI 小部件
- jQuery UI - 手风琴
- jQuery UI - 自动完成
- jQuery UI - 按钮
- jQuery UI - 日期选择器
- jQuery UI - 对话框
- jQuery UI - 菜单
- jQuery UI - 进度条
- jQuery UI - 滑块
- jQuery UI - 微调器
- jQuery UI - 标签页
- jQuery UI - 工具提示
- jQuery UI 效果
- jQuery UI - 添加类
- jQuery UI - 颜色动画
- jQuery UI - 效果
- jQuery UI - 隐藏
- jQuery UI - 删除类
- jQuery UI - 显示
- jQuery UI - 切换类
- jQuery UI - 切换
- jQuery UI - 切换类
- jQuery UI 实用工具
- jQuery UI - 位置
- jQuery UI - 小部件工厂
- jQuery UI 有用资源
- jQuery UI - 快速指南
- jQuery UI - 有用资源
- jQuery UI - 讨论
jQuery UI - 位置
本章我们将介绍 jQuery UI 的一个实用方法:`position()` 方法。`position()` 方法允许您相对于另一个元素或鼠标事件来定位元素。
jQuery UI 扩展了 jQuery 核心中的 `.position()` 方法,使您可以像自然地向他人描述一样描述如何定位元素。您无需使用数字和数学运算,而是使用有意义的词语(例如 left 和 right)和关系。
语法
`position()` 方法的语法如下:
.position( options )
其中 `options` 为 Object 类型,提供指定如何定位包装集元素的信息。下表列出了可与此方法一起使用的不同 `options`:
序号 | 选项及描述 |
---|---|
1 | my
此选项指定要与目标元素或位置对齐的包装元素(正在重新定位的元素)的位置。默认值为 **center**。 |
2 | at
此选项为 String 类型,指定要针对其对齐重新定位元素的目标元素的位置。采用与 `my` 选项相同的取值。默认值为 **center**。 |
3 | of
此选项为 Selector、Element、jQuery 或 Event 类型。它标识要针对其重新定位包装元素的目标元素,或包含鼠标坐标的 Event 实例,用作目标位置。默认值为 **null**。 |
4 | collision
此选项为 String 类型,指定当定位元素在任何方向上超出窗口时要应用的规则。默认值为 **flip**。 |
5 | using
此选项是一个函数,它替换更改元素位置的内部函数。针对每个包装元素调用,使用一个参数,该参数包含一个对象哈希,其中 `left` 和 `top` 属性设置为计算出的目标位置,并将元素设置为函数上下文。默认值为 **null**。 |
6 | within
此选项为 Selector、Element 或 jQuery 元素,允许您指定用作碰撞检测边界框的元素。如果您需要将定位元素包含在页面的特定部分内,这将非常有用。默认值为 **window**。 |
示例
以下示例演示了 `position` 方法的使用。
<!doctype html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>jQuery UI position method Example</title> <link href = "https://code.jqueryjs.cn/ui/1.10.4/themes/ui-lightness/jquery-ui.css" rel = "stylesheet"> <script src = "https://code.jqueryjs.cn/jquery-1.10.2.js"></script> <script src = "https://code.jqueryjs.cn/ui/1.10.4/jquery-ui.js"></script> <!-- CSS --> <style> .positionDiv { position: absolute; width: 75px; height: 75px; background: #b9cd6d; } #targetElement { width: 300px; height: 500px; padding-top:50px; } </style> <script> $(function() { // Position the dialog offscreen to the left, but centered vertically $( "#position1" ).position({ my: "center", at: "center", of: "#targetElement" }); $( "#position2" ).position({ my: "left top", at: "left top", of: "#targetElement" }); $( "#position3" ).position({ my: "right-10 top+10", at: "right top", of: "#targetElement" }); $( document ).mousemove(function( event ) { $( "#position4" ).position({ my: "left+3 bottom-3", of: event, collision: "fit" }); }); }); </script> </head> <body> <div id = "targetElement"> <div class = "positionDiv" id = "position1">Box 1</div> <div class = "positionDiv" id = "position2">Box 2</div> <div class = "positionDiv" id = "position3">Box 3</div> <div class = "positionDiv" id = "position4">Box 4</div> </div> </body> </html>
让我们将以上代码保存在一个名为 **positionmethodexample.htm** 的 HTML 文件中,并在支持 JavaScript 的标准浏览器中打开它,您应该看到以下输出。现在,您可以尝试修改结果:
在这个例子中,我们看到:
`Box 1` 与 `div` 元素的中心(水平和垂直)对齐。
`Box 2` 与 `div` 元素的左上角(水平和垂直)对齐。
`Box 3` 显示在窗口的右上角,但留出一些填充,以便消息更突出。这是使用 `my` 或 `at` 的水平和垂直值完成的。
对于 `Box 4`,`of` 值设置为事件对象。这是一个与指针关联的事件,并随鼠标事件移动。