JqueryUI - Resizable 调整大小方法
jQueryUI 提供了 resizable() 方法来调整任何 DOM 元素的大小。 这种方法简化了元素的大小调整,否则需要时间和 HTML 中的大量编码。 resizable() 方法在要调整大小的项目的右下角显示一个图标。
语法
resizable() 方法有两种使用方式 −
$ (selector, context).resizable (options) 方法
resizable (options) 方法声明可以调整 HTML 元素的大小。 options 参数是一个对象,指定调整大小时涉及的元素的行为。
语法
$(selector, context).resizable (options);
您可以在使用 Javascript 对象时一次提供一个或多个选项。 如果要提供多个选项,那么您将使用逗号分隔它们,如下所示 −
$(selector, context).resizable({option1: value1, option2: value2..... });
下表列出了可与此方法一起使用的不同选项 −
序号 | 选项 & 说明 |
---|---|
1 | alsoResize
此选项属于 Selector、jQuery 或任何 DOM Element 类型。 它表示在调整原始对象大小时也调整大小的元素。 默认情况下,它的值为 false。 |
2 | animate
当设置为 true 时,此选项用于在释放鼠标按钮时在调整大小时启用视觉效果。 默认值为 false(无效)。 |
3 | animateDuration
此选项用于设置调整大小效果的持续时间(以毫秒为单位)。 此选项仅在 animate 选项为 true 时使用。 默认情况下,它的值为"slow"。 |
4 | animateEasing
此选项用于指定在使用 animate 选项时要应用的 easing。 默认情况下,它的值为 "swing"。 |
5 | aspectRatio
此选项用于指示是否保持项目的纵横比(高度和宽度)。 默认情况下,它的值为 false。 |
6 | autoHide
此选项用于隐藏放大图标或手柄,除非鼠标悬停在项目上。 默认情况下,它的值为 false。 |
7 | cancel
此选项用于防止调整指定元素的大小。 默认情况下,它的值为 input,textarea,button,select,option。 |
8 | containment
此选项用于限制指定元素或区域内元素的大小调整。 默认情况下,它的值为 false。 |
9 | delay
此选项用于以毫秒为单位设置容差或延迟。 此后将开始调整大小或位移。 默认情况下,它的值为 0。 |
10 | disabled
当设置为 true 时,此选项会禁用调整大小机制。 鼠标不再调整元素的大小,直到启用该机制,使用可调整大小("enable")。 默认情况下,它的值为 false。 |
11 | distance
使用此选项,仅当鼠标移动一段距离(像素)时才开始调整大小。 默认情况下,它的值为 1 像素。 这有助于防止在单击元素时意外调整大小。 |
12 | ghost
此选项设置为 true 时,会显示一个半透明的辅助元素以调整大小。 释放鼠标时,将删除此幽灵项目。 默认情况下,它的值为 false。 |
13 | grid
该选项的类型为数组[x, y],表示元素在鼠标移动过程中水平和垂直扩展的像素数。 默认情况下,它的值为 false。 |
14 | handles
该选项是一个字符串,指示元素的哪些边或角可以调整大小。 默认情况下,它的值为 e, s, se。 |
15 | helper
此选项用于添加 CSS 类以设置要调整大小的元素的样式。 当元素被调整大小时,一个新的 <div> 元素被创建,这是被缩放的元素(ui-resizable-helper 类)。 调整大小完成后,将调整原始元素的大小并且 <div> 元素消失。 默认情况下,它的值为 false。 |
16 | maxHeight
此选项用于设置应允许调整大小的最大高度。 默认情况下,它的值为 null。 |
17 | maxWidth
此选项用于设置应允许调整大小的最大宽度。 默认情况下,它的值为 null。 |
18 | minHeight
此选项用于设置应允许调整大小的最小高度。 默认情况下,它的值为 10。 |
19 | minWidth
此选项用于设置应允许调整大小的最小宽度。 默认情况下,它的值为 10。 |
以下部分将向您展示几个调整大小功能的工作示例。
默认功能
以下示例演示了一个可调整大小功能的简单示例,不向 resizable() 方法传递任何参数。
<!doctype html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>jQuery UI Resizable functionality</title> <link href = "https://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css" rel = "stylesheet"> <script src = "https://code.jquery.com/jquery-1.10.2.js"></script> <script src = "https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> <!-- CSS --> <style> .ui-widget-header { background:#b9cd6d; border: 1px solid #b9cd6d; color: #FFFFFF; font-weight: bold; } .ui-widget-content { background: #cedc98; border: 1px solid #DDDDDD; color: #333333; } #resizable { width: 150px; height: 150px; padding: 0.5em; text-align: center; margin: 0; } </style> <!-- Javascript --> <script> $(function() { $( "#resizable" ).resizable(); }); </script> </head> <body> <!-- HTML --> <div id = "resizable" class = "ui-widget-content"> <h3 class = "ui-widget-header">Pull my edges to resize me!!</h3> </div> </body> </html>
让我们将上面的代码保存在一个 HTML 文件 resizeexample.htm 中,并在支持 javascript 的标准浏览器中打开它,您应该会看到以下输出。 现在,您可以查看结果 −
拖动方形边框以调整大小。
animate 和 ghost 的使用
下面的例子演示了animate和ghost两个选项在JqueryUI的resize函数中的用法。
<!doctype html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>jQuery UI Resizable functionality</title> <link href = "https://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css" rel = "stylesheet"> <script src = "https://code.jquery.com/jquery-1.10.2.js"></script> <script src = "https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> <!-- CSS --> <style> .ui-widget-header { background:#b9cd6d; border: 1px solid #b9cd6d; color: #FFFFFF; font-weight: bold; } .ui-widget-content { background: #cedc98; border: 1px solid #DDDDDD; color: #333333; } #resizable-2,#resizable-3 { width: 150px; height: 150px; padding: 0.5em; text-align: center; margin: 0; } </style> <!-- Javascript --> <script> $(function() { $( "#resizable-2" ).resizable({ animate: true }); $( "#resizable-3" ).resizable({ ghost: true }); }); </script> </head> <body> <!-- HTML --> <div id = "resizable-2" class = "ui-widget-content"> <h3 class = "ui-widget-header"> Pull my edges and Check the animation!! </h3> </div><br> <div id = "resizable-3" class = "ui-widget-content"> <h3 class = "ui-widget-header">I'm ghost!!</h3> </div> </body> </html>
让我们将上面的代码保存在一个 HTML 文件 resizeexample.htm 中,并在支持 javascript 的标准浏览器中打开它,您应该会看到以下输出。 现在,您可以查看结果 −
拖动方形边框调整大小并查看动画和重影选项的效果。
containment、minHeight 和 minWidth 的使用
下面的例子演示了containment、minHeight和minWidth三个选项在JqueryUI的resize函数中的用法。
<!doctype html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>jQuery UI Resizable functionality</title> <link href = "https://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css" rel = "stylesheet"> <script src = "https://code.jquery.com/jquery-1.10.2.js"></script> <script src = "https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> <style> .ui-widget-header { background:#b9cd6d; border: 1px solid #b9cd6d; color: #FFFFFF; font-weight: bold; } .ui-widget-content { background: #cedc98; border: 1px solid #DDDDDD; color: #333333; } #container-1 { width: 300px; height: 300px; } #resizable-4 {background-position: top left; width: 150px; height: 150px; } #resizable-4, #container { padding: 0.5em; } </style> <script> $(function() { $( "#resizable-4" ).resizable({ containment: "#container", minHeight: 70, minWidth: 100 }); }); </script> </head> <body> <div id = "container" class = "ui-widget-content"> <div id = "resizable-4" class = "ui-state-active"> <h3 class = "ui-widget-header"> Resize contained to this container </h3> </div> </div> </body> </html>
让我们将上面的代码保存在一个 HTML 文件 resizeexample.htm 中,并在支持 javascript 的标准浏览器中打开它,您应该会看到以下输出。 现在,您可以查看结果 −
拖动方形边框可调整大小,不能超出主容器调整大小。
delay、distance 和 autoHide 的使用
下面的例子演示了三个选项delay、distance和autoHide 在JqueryUI的resize函数中的用法。
<!doctype html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>jQuery UI Resizable functionality</title> <link href = "https://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css" rel = "stylesheet"> <script src = "https://code.jquery.com/jquery-1.10.2.js"></script> <script src = "https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> <style> .ui-widget-header { background:#b9cd6d; border: 1px solid #b9cd6d; color: #FFFFFF; font-weight: bold; } .ui-widget-content { background: #cedc98; border: 1px solid #DDDDDD; color: #333333; } .square { width: 150px; height: 150px; border: 1px solid black; text-align: center; float: left; margin-left: 20px; -right: 20px; } </style> <script> $(function() { $( "#resizable-5" ).resizable({ delay: 1000 }); $( "#resizable-6" ).resizable({ distance: 40 }); $( "#resizable-7" ).resizable({ autoHide: true }); }); </script> </head> <body> <div id = "resizable-5" class = "square ui-widget-content"> <h3 class = "ui-widget-header"> Resize starts after delay of 1000ms </h3> </div><br> <div id = "resizable-6" class = "square ui-widget-content"> <h3 class = "ui-widget-header"> Resize starts at distance of 40px </h3> </div><br> <div id = "resizable-7" class = "square ui-widget-content"> <h3 class = "ui-widget-header"> Hover over me to see the magnification icon! </h3> </div> </body> </html>
让我们将上面的代码保存在一个 HTML 文件 resizeexample.htm 中,并在支持 javascript 的标准浏览器中打开它,您应该会看到以下输出。 现在,您可以查看结果 −
拖动方形边框调整大小,您会注意到 −
第一个方框在延迟 1000 毫秒后调整大小,
第二个方框在鼠标移动 40px 后开始调整大小。
将鼠标悬停在第三个方框上,会出现放大图标。
alsoResize 的使用
以下示例演示了选项 alsoResize 在JqueryUI 的resize 函数中的用法。
<!doctype html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>jQuery UI Resizable functionality</title> <link href = "https://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css" rel = "stylesheet"> <script src = "https://code.jquery.com/jquery-1.10.2.js"></script> <script src = "https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> <!-- CSS --> <style> .ui-widget-header { background:#b9cd6d; border: 1px solid #b9cd6d; color: #FFFFFF; font-weight: bold; } .ui-widget-content { background: #cedc98; border: 1px solid #DDDDDD; color: #333333; } #resizable-8,#resizable-9{ width: 150px; height: 150px; padding: 0.5em;text-align: center; margin: 0; } </style> <!-- Javascript --> <script> $(function() { $( "#resizable-8" ).resizable({ alsoResize: "#resizable-9" }); $( "#resizable-9" ).resizable(); }); </script> </head> <body> <!-- HTML --> <div id = "resizable-8" class = "ui-widget-content"> <h3 class = "ui-widget-header">Resize!!</h3> </div><br> <div id = "resizable-9" class = "ui-widget-content"> <h3 class = "ui-widget-header">I also get resized!!</h3> </div> </body> </html>
让我们将上面的代码保存在一个 HTML 文件 resizeexample.htm 中,并在支持 javascript 的标准浏览器中打开它,您应该会看到以下输出。 现在,您可以查看结果 −
拖动方形边框调整大小,您会注意到第二个方框也随着第一个方框调整大小。
AspectRatio、Grid的使用
以下示例演示了选项 aspectRatio 和grid 在JqueryUI 的 resize 函数中的用法。
<!doctype html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>jQuery UI Resizable functionality</title> <link href = "https://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css" rel = "stylesheet"> <script src = "https://code.jquery.com/jquery-1.10.2.js"></script> <script src = "https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> <style> .ui-widget-header { background:#b9cd6d; border: 1px solid #b9cd6d; color: #FFFFFF; font-weight: bold; } .ui-widget-content { background: #cedc98; border: 1px solid #DDDDDD; color: #333333; } .square { width: 150px; height: 150px; border: 1px solid black; text-align: center; float: left; margin-left: 20px; margin-right: 20px; } </style> <script> $(function() { $( "#resizable-10" ).resizable({ aspectRatio: 10 / 3 }); $( "#resizable-11" ).resizable({ grid: [50,20] }); }); </script> </head> <body> <div id = "resizable-10" class = "square ui-widget-content"> <h3 class = "ui-widget-header"> Resize with aspectRatio of 10/3 </h3> </div> <div id = "resizable-11" class = "square ui-widget-content"> <h3 class = "ui-widget-header"> Snap me to the grid of [50,20] </h3> </div> </body> </html>
让我们将上面的代码保存在一个 HTML 文件 resizeexample.htm 中,并在支持 javascript 的标准浏览器中打开它,您应该会看到以下输出。 现在,您可以查看结果 −
拖动方形边框调整大小,第一个方框调整大小为 10 / 3 的纵横比,第二个调整大小为 [50,20] 的网格。
$ (selector, context).resizable ("action", params) 方法
resizable ("action", params) 方法可以对可调整大小的元素执行操作,例如允许或阻止调整大小的功能。 该操作在第一个参数中指定为字符串(例如,"禁用"以防止调整大小)。 在下表中查看可以传递的操作。
语法
$(selector, context).resizable ("action", params);;
下表列出了可与此方法一起使用的不同actions操作 −
序号 | 操作 & 说明 |
---|---|
1 | destroy
此操作完全破坏了元素的可调整大小功能。 这会将元素返回到其预初始化状态。 |
2 | disable
此操作禁用元素的调整大小功能。 此方法不接受任何参数。 |
3 | enable
此操作启用元素的调整大小功能。 此方法不接受任何参数。 |
4 | option( optionName )
此操作检索指定的 optionName 的值。 此选项对应于与可调整大小(选项)一起使用的选项之一。 |
5 | option()
获取一个对象,该对象包含代表当前可调整大小的选项散列的键/值对。 这不接受任何参数。 |
6 | option(optionName, value )
此操作使用指定的 optionName 设置可调整大小选项的值。 此选项对应于与可调整大小(选项)一起使用的选项之一。 |
7 | option( options )
此操作为可调整大小设置一个或多个选项。 |
8 | widget()
此操作返回一个包含可调整大小元素的 jQuery 对象。 此方法不接受任何参数。 |
示例
现在让我们看一个使用上表中的操作的示例。 以下示例演示了 destroy() 和 disable() 方法的使用。
<!doctype html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>jQuery UI Resizable functionality</title> <link href = "https://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css" rel = "stylesheet"> <script src = "https://code.jquery.com/jquery-1.10.2.js"></script> <script src = "https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> <!-- CSS --> <style> .ui-widget-header { background:#b9cd6d; border: 1px solid #b9cd6d; color: #FFFFFF; font-weight: bold; } .ui-widget-content { background: #cedc98; border: 1px solid #DDDDDD; color: #333333; } #resizable-12,#resizable-13 { width: 150px; height: 150px; padding: 0.5em;text-align: center; margin: 0; } </style> <!-- Javascript --> <script> $(function() { $( "#resizable-12" ).resizable(); $( "#resizable-12" ).resizable('disable'); $( "#resizable-13" ).resizable(); $( "#resizable-13" ).resizable('destroy'); }); </script> </head> <body> <!-- HTML --> <div id = "resizable-12" class = "ui-widget-content"> <h3 class = "ui-widget-header">I'm disable!!</h3> </div><br> <div id = "resizable-13" class = "ui-widget-content"> <h3 class = "ui-widget-header">I'm Destroyed!!</h3> </div> </body> </html>
让我们将上面的代码保存在一个 HTML 文件 resizeexample.htm 中,并在支持 javascript 的标准浏览器中打开它,您应该会看到以下输出 −
您无法调整第一个方框的大小,因为它已禁用,第二个方框已被销毁。
可调整大小元素的事件管理
除了我们在前面部分看到的可调整大小(选项)方法之外,JqueryUI 还提供了针对特定事件触发的事件方法。 下面列出了这些事件方法 −
序号 | 事件方法 & 说明 |
---|---|
1 | create(event, ui)
创建可调整大小的元素时会触发此事件。 |
2 | resize(event, ui)
当拖动可调整大小元素的处理程序时触发此事件。 |
3 | start(event, ui)
此事件在调整大小操作开始时触发。 |
4 | stop(event, ui)
此事件在调整大小操作结束时触发。 |
示例
以下示例演示了调整功能期间事件方法的用法。 此示例演示事件 create 和 resize 的使用。
<!doctype html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>jQuery UI Resizable functionality</title> <link href = "https://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css" rel = "stylesheet"> <script src = "https://code.jquery.com/jquery-1.10.2.js"></script> <script src="https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> <!-- CSS --> <style> .ui-widget-header { background:#b9cd6d; border: 1px solid #b9cd6d; color: #FFFFFF; font-weight: bold; } .ui-widget-content { background: #cedc98; border: 1px solid #DDDDDD; color: #333333; } #resizable-14{ width: 150px; height: 150px; padding: 0.5em;text-align: center; margin: 0; } </style> <!-- Javascript --> <script> $(function() { $( "#resizable-14" ).resizable({ create: function( event, ui ) { $("#resizable-15").text ("I'm Created!!"); }, resize: function (event, ui) { $("#resizable-16").text ("top = " + ui.position.top + ", left = " + ui.position.left + ", width = " + ui.size.width + ", height = " + ui.size.height); } }); }); </script> </head> <body> <!-- HTML --> <div id = "resizable-14" class = "ui-widget-content"> <h3 class = "ui-widget-header">Resize !!</h3> </div><br> <span id = "resizable-15"></span><br> <span id = "resizable-16"></span> </body> </html>
让我们将上面的代码保存在一个 HTML 文件 resizeexample.htm 中,并在支持 javascript 的标准浏览器中打开它,应该会看到以下输出 −
拖动方框,您将看到在调整大小事件中显示的输出。