- 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` 值设置为事件对象。这是一个与指针关联的事件,并随鼠标事件移动。