jQuery Mobile面板animate选项

  • Post category:jquery

jQuery Mobile是一种用于移动设备的jQuery UI库,其中面板(panel)是一种用户界面元素,可以用于显示侧边栏或另一种隐藏的内容。在将面板打开或关闭时,可以使用animate选项来控制面板的动画效果。下面我们来看一下如何使用animate选项。

animate选项

animate选项用于控制面板打开或关闭时的动画效果。它是一个对象,可以指定多个属性,包括duration(动画的持续时间)、easing(动画的缓动函数)和transition(CSS3过渡属性),其中duration是必需的。默认情况下,面板的动画效果是淡入淡出。

以下是animate选项的基本语法:

$( "#mypanel" ).panel({
  animate: {
    duration: 500,
    easing: "easeInOutQuart",
    transition: "flip"
  }
});

在上面的示例中,我们指定了动画的持续时间为500毫秒,缓动函数为easeInOutQuart,CSS3过渡属性为flip。flip是一种CSS3过渡属性,用于在面板打开或关闭时执行翻转动画。

示例1: 改变动画持续时间

下面的示例展示了如何使用animate选项来改变面板的动画持续时间。当打开或关闭面板时,它将从右侧滑入或滑出,并在1秒钟内完成动画效果。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>jQuery Mobile面板animate选项示例1</title>
    <link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
    <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
    <script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
  </head>
  <body>
    <div data-role="page">
      <div data-role="header">
        <h1>jQuery Mobile面板animate选项示例1</h1>
      </div>
      <div data-role="panel" id="mypanel" data-position="right" data-display="push">
        <h2>面板内容</h2>
        <p>这是面板的内容。</p>
      </div>
      <div data-role="main" class="ui-content">
        <h2>页面内容</h2>
        <p>这是页面的内容。</p>
        <a href="#mypanel" data-role="button" data-icon="bars" data-iconpos="notext">打开面板</a>
      </div>
    </div>
    <script>
      $(function(){
        $('#mypanel').panel({
          animate: {
            duration: 1000
          }
        });
      });
    </script>
  </body>
</html>

在上面的代码中,我们将animate选项的duration属性设置为1000,以便面板动画持续1秒钟。你可以修改duration属性的值,以改变动画的持续时间。

示例2: 使用CSS3过渡属性

下面的示例展示了如何使用animate选项来使用CSS3过渡属性来控制面板的动画效果。当打开或关闭面板时,它将通过水平翻转实现动画效果,并在800毫秒内完成动画。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>jQuery Mobile面板animate选项示例2</title>
    <link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
    <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
    <script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
    <style>
      .ui-panel-animate {
        -webkit-transition: -webkit-transform 800ms ease-in-out;
        transition: transform 800ms ease-in-out;
        -webkit-transform-style: preserve-3d;
        transform-style: preserve-3d;
      }
      .ui-panel.ui-panel-position-left.ui-panel-display-reveal.ui-panel-active {
        -webkit-transform: translate3d(17em, 0, 0);
        transform: translate3d(17em, 0, 0);
        -webkit-transform-origin: 100% 50%;
        transform-origin: 100% 50%;
      }
      .ui-panel.ui-panel-position-right.ui-panel-display-reveal.ui-panel-active {
        -webkit-transform: translate3d(-17em, 0, 0);
        transform: translate3d(-17em, 0, 0);
        -webkit-transform-origin: 0% 50%;
        transform-origin: 0% 50%;
      }
      .ui-panel-animate.ui-panel-closed {
        -webkit-transform: translate3d(0%, 0, 0);
        transform: translate3d(0%, 0, 0);
      }
    </style>
  </head>
  <body>
    <div data-role="page">
      <div data-role="header">
        <h1>jQuery Mobile面板animate选项示例2</h1>
      </div>
      <div data-role="panel" id="mypanel" data-position="right" data-display="reveal">
        <h2>面板内容</h2>
        <p>这是面板的内容。</p>
      </div>
      <div data-role="main" class="ui-content">
        <h2>页面内容</h2>
        <p>这是页面的内容。</p>
        <a href="#mypanel" data-role="button" data-icon="bars" data-iconpos="notext">打开面板</a>
      </div>
    </div>
    <script>
      $(function(){
        $('#mypanel').panel({
          animate: {
            duration: 400,
            transition: "none"
          }
        });
      });
    </script>
  </body>
</html>

在上面的代码中,我们将animate选项的transition属性设置为none,以便覆盖默认的淡入淡出效果。然后,我们使用CSS3的transform属性来设置面板的位置和翻转动画效果。在transform属性中,translate3d(x,y,z)用于设置元素的位置,而transform-style:preserve-3d用于启用元素的3D变换。transform属性可以根据你的需求进行修改,以设置不同的动画效果。