05-resizable (options)方法
13.3.1 resizable (options) 方法
resizable (options) 方法将一个HTML元素声明为可缩放的。 options 参数为一个对象,指定了缩放时的相关行为。
1.管理可缩放元素
我们先从管理缩放过程的选项看起(见表13-1),接着是指定哪些元素可被缩放(见表13-2),如何缩放(见表13-3),如何对缩放做限制(见表13-4)。
| 选项 | 功能 |
| :----- | :----- | :----- | :----- |
| options.disabled | 当设置为 true 时,禁用缩放机制。直到使用 resizable ("enable") 方法重新激活,用户才能再使用鼠标缩放元素 |
| options.autoHide | 隐藏缩放小图标,只有在鼠标滑过其上时显示 |
| options.delay | 指定一个延迟时间,只有在鼠标持续拖动超过延迟时间后,才开始缩放元素。默认值为0 |
| options.distance | 指定一个距离,只有在鼠标持续拖动超过这个距离后,才开始被缩放元素。默认值为1个像素 |
| options.grid | 用一个数组[x,y]来指定元素缩放过程中,每一次收缩或扩张的距离,在水平方向上为x像素的整数倍,垂直方向上为y像素的整数倍 |
| 选项 | 功能 |
| :----- | :----- | :----- | :----- |
| options.alsoResize | 其值可以为选择器、jQuery类对象或DOM元素。当原有的可缩放元素被缩放时,由本选项指定的元素会同时被缩放,而此元素可位于页面上任何位置。默认值为 false (即不会有其他元素同时被缩放) |
| options.cancel | 其值为一个选择器,指定不可被缩放的元素 |
| 选项 | 功能 |
| :----- | :----- | :----- | :----- |
| options.aspectRatio | 设置是否维持元素宽高比。当设置为 true 时,元素会维持原始的宽高比;否则,需要指定一个具体的宽高比数值。例如,0.5表示元素会始终保持1:2的宽高比,即高度始终为宽度的2倍。默认值为 false (即不维持宽高比) |
| options.handles | 用字符串值来指定元素的某侧边或某个角可用以缩放。可用的值有分别代表四条边的 n (上)、 e (右)、 s (下)和 w (左),以及代表四个角的 ne (右上)、 se (右下)、 nw (左上)和 sw (左下)。默认值为“ e,s,se ”,即右边、底边,以及右下角是可以用来缩放元素的 |
| 选项 | 功能 |
| :----- | :----- | :----- | :----- |
| options.containment | 限制缩放适用于哪个元素范围内。此元素可以通过选择器(选择结果若为多个元素,则取第一个)、DOM元素或字符串 "parent" (即父元素)来指定。默认值为 false (无限制) |
| options.maxHeight | 元素允许被放大到的最大高度。默认值为 null (无限制) |
| options.maxWidth | 元素允许被放大到的最大宽度。默认值为 null (无限制) |
| options.minHeight | 元素允许被缩小到的最小高度。默认值为10 |
| options.minWidth | 元素允许被缩小到的最小宽度。默认值为10 |
2.管理缩放特效
使用表13-5中列出的选项可以管理缩放中的视觉特效,无论是制造一个效果还是复制一个缩放过的元素。
| 选项 | 功能 |
| :----- | :----- | :----- | :----- |
| options.animate | 当设置为 true 时,在缩放过程中鼠标按键松开时会启用一个特效。默认值为 false (无特效) |
| options.animateDuration | 缩放特效的持续时间(以毫秒为单位)。此选项仅当 options.animate 设置为true时有效 |
| options.ghost | 当设置为 true 时,元素自身并不会在缩放操作中显示相应的缩放变化,而是由一个相对透明的“影子元素”来反映变化。此“影子元素”会在鼠标按键松开时被删除。 | 默认值为 false (元素自身随着缩放操作显示变化) |
| options.helper | 自定义CSS类,为被缩放的元素制定样式。如果使用此选项,则会创建一个新的 <div> 元素,将其作为被缩放的对象(拥有一个名为 ui-resizable-helper 的CSS类)。此元素会在鼠标按键松开时被删除。默认值为 false (不创建新的 <div> 元素) |
3.管理元素缩放事件
与可缩放元素相关的事件管理着缩放操作的起止全程。和这些事件相关的方法(于表13-6中列出)都有两个参数:与鼠标事件相关的 event ,以及值为 {originalElement, element, helper, position, size, originalSize, OriginalPosition} 的 ui ①。 ui 中的这些属性值将于表13-7中说明。
| 选项 | 功能 |
| :----- | :----- | :----- | :----- |
| options.start | Start (event, ui) 方法会在鼠标开始缩放元素时被调用 |
| options.stop | Stop (event, ui) 方法会在鼠标按键松开时被调用。此时缩放已完成 |
| options.resize | Resize (event, ui) 方法会在缩放开始后鼠标持续移动的过程中被调用 |
| 属性 | 功能 |
| :----- | :----- | :----- | :----- |
| originalElement | 记录原DOM元素,大多数情况下和 element 指向同一个元素 |
| element | 某些类型的DOM元素需要在外层使用 <div> 元素封装(例如 <textarea> 自身就有缩放功能,需要屏蔽),此时 element 指向的是外层的封装元素 |
| helper | 被缩放的元素(被鼠标点中的“原元素”或是在 options. helper 中指定由jQuery UI创建的元素)所对应的jQuery类对象 |
| position | 表示元素当前位置的 {top, left} 坐标值 |
| size | 表示元素当前宽高的 {width, height} 尺寸值 |
| originalSize | 表示元素初始宽高的 {width, height} 尺寸值 |
| originalPosition | 表示元素初始位置的 {top, left} 坐标值 |