jQuery Mobile 1.2 弹出框(Popups)系列实例

JQuery 1799 0 2013-11-14

jQuery Mobile 1.2 弹出框(Popups)系列实例

在 待发布的1.2版本中正如在官方博客中提到的增加了弹出框部件(Popups),这个部件和对话框(Dialog)部件的不同之处就是在当前页面来创建一 个真正的弹出层来展示不同形态的信息,而不是通过跳转到一个新的页面来模拟弹出窗口的效果。这样我们将会有更多的空间来设计我们的应用交互效果。
创建一个弹出窗口部件
这个部件的实现方式和Dialog部件有些类似,同样包含两个部分来实现:
第一部分:触发元素的data-rel定义(data-rel=’popup’)和href中定义弹出层的id(和Dialog不同的是href中这能定义当前页面中的一个div层,而dialog则需要定义一个URL或者是当前页面中的一个page)
第二部分:弹出层,和触发元素在同一个page的div元素,并且需要定义data-role=’popup’和id。
例子:
程序代码
<a href="#uedcool" data-rel="popup">显示信息</a>
<div data-role="popup" id="uedcool">
    <p>信息:这是一个Popup的例子,来源<a href="http://www.uedcool.com/" target="_blank">www.uedcool.com</a><p>
</div>

实际上这个部件只是实现了一个带有圆角和阴影的空白div层,你可以根据需要在这个层里面来添加需要的结构或者部件。
例如:
带有样式风格的弹出框
程序代码
<a href="#uedcool" data-rel="popup">显示信息</a>
<div data-role="popup" id="uedcool" class="ui-content" data-theme="e" style="max-width:350px;">
  <p>信息这是一个带有theme定义和最大宽度定义的弹出框 <strong>来源UEDcool</strong></p>
</div>

弹出菜单
程序代码
<a href="#uedcool" data-rel="popup">显示信息</a>
<div data-role="popup" id="uedcool" data-theme="a">
  <ul data-role="listview" data-inset="true" style="min-width:210px;" data-theme="b">
    <li data-role="divider" data-theme="a">弹出菜单</li>
    <li><a href="#">文件</a></li>
    <li><a href="#">选项</a></li>
    <li><a href="#">退出</a></li>
  </ul>
</div>

弹出表单
程序代码
<a href="#uedcool" data-rel="popup">显示信息</a>
<div data-role="popup" id="uedcool" data-theme="a" class="ui-corner-all">
  <form>
    <div style="padding:10px 20px;">
      <h3>登录系统</h3>
      <label for="un" class="ui-hidden-accessible">帐号:</label>
      <input type="text" name="user" id="un" value="" placeholder="输入帐号" data-theme="a" />
      <label for="pw" class="ui-hidden-accessible">密码:</label>
      <input type="password" name="pass" id="pw" value="" placeholder="输入密码" data-theme="a" />
      <button type="submit" data-theme="b">登录</button>
    </div>
  </form>
</div>

弹出窗口
程序代码
<a href="#uedcool" data-rel="popup">显示信息</a>
<div data-role="popup" id="uedcool" data-overlay-theme="a" data-theme="c" style="max-width:400px;" class="ui-corner-all">
  <div data-role="header" data-theme="a" class="ui-corner-top">
    <h1>文件删除</h1>
  </div>
  <div data-role="content" data-theme="d" class="ui-corner-bottom ui-content">
    <h3 class="ui-title">确定要删除这个文件吗?</h3>
    <p>该操作不可撤销。</p>
    <a href="#" data-role="button" data-inline="true" data-rel="back" data-transition="flow" data-theme="b">删除</a> <a href="#" data-role="button" data-inline="true" data-rel="back" data-theme="c">取消</a> </div>
</div>

弹出图片
程序代码
<a href="#uedcool" data-rel="popup">显示信息</a>
<div data-role="popup" id="uedcool" data-overlay-theme="a" data-corners="false"> <a href="#" data-rel="back" data-role="button" data-theme="a" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Close</a><img class="popphoto" src="http://www.uedcool.com/Plugins/aboutMe/Myface.jpg" alt="Photo landscape"> </div>

调用方法
这个部件在jQueryMobile中会自动初始化,但是你也可以通过popup()方法来调用。
程序代码
$(‘#uedcool’).popup();

调用打开弹出框方法
除了通过一个带有data-rel=’popup’的链接来触发部件显示,还可以调用open方法来打开弹出框部件,如:
程序代码
$(‘#uedcool’).popup(‘open’);

关闭部件的方法
弹出框可以通过按Esc键或者点击弹出框外面的区域来关闭,除此之外也可以通过调用close方法来关闭,如:
程序代码
$(‘#uedcool’).popup(‘close’);

还可以通过在弹出框中添加关闭按钮的方式来调用关闭方法,只需要在关闭按钮或者链接中添加data-rel=’back’属性就可以通过点击来隐式调用关闭方法,例如:
程序代码
<div data-role="popup">
<a href="#" data-rel="back" data-role="button" data-theme="a" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Close</a>
这里显示内容
</div>

注:可以通过定义ui-btn-right或者ui-btn-left来控制按钮的显示位置。
部件容器内边距
建议在弹出框的的div上添加ui-content样式,这样可以使这个容器内内部定义一个15px的内边距,使容器的布局更加自然,如下:
程序代码
<div data-role="popup" id="popupPadded" class="ui-content">
  <p>在容器上添加<code>ui-content</code> 样式</p>
</div>

定位
在默认情况下,弹出框的中心点是和触发元素的中心点重合的(除在对边界位置进行修正的情况下),这样可以很方便的来实现菜单或者提示功能。
除此之外,可以通过在触发的链接上定义data-position-to来实现类似对话框或者lightbox风格在页面上居中的显示效果,例如:
弹出框的中心点与页面的中心点对应
程序代码
<div data-role="popup" id="uedcool">
  <p>I am positioned to the window.</p>
</div>
<a href="#uedcool" data-rel="popup" data-position-to="window" />

弹出框的中心点与触发元素的中心点对应:
程序代码
<div data-role="popup" id="uedcool">
  <p>I am positioned to the window.</p>
</div>
<a href="#uedcool" data-rel="popup" data-position-to="origin" />

除了以上window和origin这两个参数外,还可以在data-position-to属性中设置一个元素的id来使弹出框在该元素的位置显示。

上一篇:经典收藏 50个jQuery Mobile开发技巧集萃

下一篇:调用jquery ui dialog 事件弹出/关闭dialog窗口

讨论数量:1

天涯网魂 3 杠 5 星2013-11-14 16:42:00

上面文章来源:http://www.uedcool.com/article.asp?id=34

请先登录再发表讨论。 2024-05-02

天涯网魂
3 杠 5 星
TA 的文章
TA 的随言
TA 的资源链