jQuery UI API – 对话框部件(Dialog Widget)
优质
小牛编辑
131浏览
2023-12-01
所属类别
小部件(Widgets)
用法
描述:在一个交互覆盖层中打开内容。
版本新增:1.0
对话框是一个悬浮窗口,包括一个标题栏和一个内容区域。对话框窗口可以移动,重新调整大小,默认情况下通过 'x' 图标关闭。
如果内容长度超过最大高度,一个滚动条会自动出现。
一个底部按钮栏和一个半透明的模式覆盖层是常见的添加选项。
焦点
当打开一个对话框时,焦点会自动移动到满足下面条件的第一个项目:
- 带有
autofocus
属性的对话框内的第一个元素 - 对话框内容内的第一个
:tabbable
元素 - 对话框按钮面板内的第一个
:tabbable
元素 - 对话框的关闭按钮
- 对话框本身
当打开时,对话框部件(Dialog Widget)确保通过 tab 切换对话框内元素间的焦点,不包括对话框外的元素。模态对话框防止鼠标用户点击对话框外的元素。
当关闭对话框时,焦点自动返回到之前对话框打开时获得焦点的元素上。
隐藏关闭按钮
在一些情况下,您可能想要隐藏关闭按钮,例如,在按钮面板中已经有一个关闭按钮的情况。最好的解决方法是通过 CSS。作为实例,您可以定义一个简单的规则,比如:
.no-close .ui-dialog-titlebar-close { display: none; }
然后,您可以添加 no-close
class 到任意的对话框,用来隐藏关闭按钮:
$( "#dialog" ).dialog({ dialogClass: "no-close", buttons: [ { text: "OK", click: function() { $( this ).dialog( "close" ); } } ] });
主题化
对话框部件(Dialog Widget)使用 jQuery UI CSS 框架 来定义它的外观和感观的样式。如果需要使用对话框指定的样式,则可以使用下面的 CSS class 名称:
ui-dialog
:对话框的外层容器。ui-dialog-titlebar
:包含对话框标题和关闭按钮的标题栏。ui-dialog-title
:对话框文本标题周围的容器。ui-dialog-titlebar-close
:对话框的关闭按钮。
ui-dialog-content
:对话框内容周围的容器。这也是部件被实例化的元素。ui-dialog-buttonpane
:包含对话按钮的面板。只有当设置了buttons
选项时才呈现。ui-dialog-buttonset
:按钮周围的容器。
此外,当设置了 modal
选项时,一个带有 ui-widget-overlay
class 名称的元素被追加到 <body>
。
依赖
- UI 核心(UI Core)
- 部件库(Widget Factory)
- 定位(Position)
- 按钮部件(Button Widget)
- 可拖拽小部件(Draggable Widget) (可选的;当与
draggable
选项一起使用时) - 可调整尺寸小部件(Resizable Widget) (可选的;当与
resizable
选项一起使用时) - 特效核心(Effects Core)(可选的;当与
show
和hide
选项一起使用时)
附加说明
- 该部件要求一些功能性的 CSS,否则将无法工作。如果您创建了一个自定义的主题,请使用小部件指定的 CSS 文件作为起点。
实例
一个简单的 jQuery UI 对话框(Dialog)。
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>对话框部件(Dialog Widget)演示</title> <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css"> <script src="//code.jquery.com/jquery-1.10.2.js"></script> <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script> </head> <body> <button id="opener">打开对话框</button> <div id="dialog" title="对话框标题">我是一个对话框</div> <script> $( "#dialog" ).dialog({ autoOpen: false }); $( "#opener" ).click(function() { $( "#dialog" ).dialog( "open" ); }); </script> </body> </html>