这是一款效果非常炫酷的jQuery响应式自适应模态窗口特效插件。当某个特定的链接被触发时,模态窗口被旋转放大到指定位置。看似很简单,但实际上有很多细节问题需要处理。

在这里使用克隆元素的方法来制作模态窗口,当模态窗口关闭时,插件将销毁克隆元素,然后将原来的元素显示出来。

HTML结构

html结构中使用html5的自定义data属性,不需要调用任何的JavaScript,模态窗口插件将自动侦测所有元素,当发现data-toggle的值为adaptive-modal时,将自动为其创建一个模态窗口。data-title中的内容将被用于模态窗口的内容描述。data-title支持使用html标签。

<body>
  ..
  <a href="#" data-toggle="adaptive-modal" data-title="...">...</a>
  ..
</body>
                

高级应用

在实际应用中,可以通过各种定制来生成不同的模态窗口。下面是几个不同模态窗口的例子:

显示已经存在的内容

通过a标签的href实现指向特定的ID,你能够在模态窗口中显示特定内容,而不是data-title中的内容。

<body>
  ..
  <a href="#form" data-toggle="adaptive-modal">...</a>
  <form id="form">
    ..
  </form>
  ..
</body>
                
显示远程内容

该模态窗口插件支持AJAX远程调用,你不需要编写javascript关于ajax的代码,你需要做的仅仅是在href中指定AJAX远程调用的URL地址和设置data-remote属性为true。

<body>
  ..
  <a href="http://www.remote-ajax-url.com" data-type=".." data-datatype=".." data-remote="true" data-toggle="adaptive-modal">...</a>
  ..
</body>
                

你也可以通过data-typedata-datatype实现来设置你自己的AJAX类型和datatype。类型默认为GET,datatype默认为HTML。

为每个模态窗口定义class名称

你也可以通过data-am-custom-class自定义模态窗口的class名称,以便于修改模态窗口的CLASS样式。

<body>
  ..
  <a href="#" data-toggle="adaptive-modal" data-title="..." data-am-custom-class="custom-class-name">...</a>
  ..
</body>
                
自定义模态窗口的背景颜色

你可以通过data-am-custom-bgcolor属性来定义模态窗口的背景颜色。

<body>
  ..
  <a href="#" data-toggle="adaptive-modal" data-title="..." data-am-custom-bgcolor="#000">...</a>
  ..
</body>
                

更多可选参数

下面让我们通过JavaScript的调用来说明更多的可用参数。如果你想定义一个全局选项,而不是依靠HTML标记,你可以通过jQuery初始化插件来完成:

$(".am-remote-link").adaptiveModal({
   elementAnimateTime: 100, 
   customBgColor: "#333", 
   remoteUrl: false,
   elementAnimateIn: "scaleShow",
   elementAnimateOut: "scaleHide",
   beforeAnimate: function(el, status) {}, 
   afterAnimate: function(el, status) {}, 
 
   // Deafult Ajax Parameters.
   type: "GET",
   async: true,
   complete: function(xhr, text) {},
   cache: true,
   error: function(xhr, text, e) {},
   global: true,
   headers: {},
   statusCode: {},
   success: function(data, text, xhr) {},
   dataType: "html"
 })
                

elementAnimateTime:这个参数定义模态窗口打开或关闭的时间,单位毫秒,默认值为100。

customBgColor:这个参数和data-am-custom-bgcolor属性的功能一样,用于定义背景颜色。这个参数可以是HEX, RGB, RGBA。默认值为#333333。

remoteUrl:这个参数定义远程调用的URL并设置它为true,默认值为FALSE。

elementAnimateIn:要使用这个参数,你需啊哟在head引入一个CSS3 animation库,如Animate.css。通过Animate.css的class名称,你可以为模态窗口定义各种动画类型。默认值是内置的scaleShow。

beforeAnimate:这个参数是模态窗口动画开始前的一个回调函数。可用参数是el返回一个jQuery对象和动画状态。例如:当模态窗口打开时将返回“open”。

afterAnimate:这个参数是模态窗口动画结束时的一个回调函数。可用参数是el返回一个jQuery对象和动画状态。例如:当模态窗口关闭时将返回“close”。

其它的type, async, cache, complete, error, global, headers, statusCode, success, 和 dataType和默认的jQuery AJAX参数是一致的,你可以在这里得到更多关于它们的信息

回调(Callbacks)

我们在插件中添加了一些回调函数,以便于你能在自己的项目中扩展它们。下面列举了一些回调函数:

beforeAnimate: function(el, status)

这个回调函数在模态窗口动画开始前被调用。el参数返回一个jQuery对象和动画的当前状态。例如:模态窗口打开时返回“open”,模态窗口关闭时返回“close”。

$(".am-remote-link").adaptiveModal({
    beforeAnimate: function(el, status) {
      ...
    }
});
                
afterAnimation: function(el,status)

这个回调函数在模态窗口动画结束被调用。el参数返回一个jQuery对象和动画的当前状态。例如:模态窗口打开时返回“open”,模态窗口关闭时返回“close”。

$(".am-remote-link").adaptiveModal({
    afterAnimate: function(el, status) {
      ...
    }
});
                

公共方法(Public Methods)

你也可以通过公共方法来触发模态窗口的动画。

$.fn.openModal()

你可以通过这个方法来打开模态窗口:

$(".am-remote-link").openModal()
                
$.fn.closeModal()

你可以通过这个方法来关闭模态窗口:

$(".am-remote-link").closeModal()