jQuery Mobile 过渡

jQuery Mobile 过渡(Transitions)详解

过渡(Transition) 是 jQuery Mobile 页面切换时的动画效果,让移动端体验更流畅、像原生 App。

注意:jQuery Mobile 1.4.5 共支持 8 种内置过渡,基于 CSS3 实现。


1. 基本使用方式

<a href="#page2" data-transition="slide">滑动进入</a>
  • href="#目标页面ID"
  • data-transition="效果名"

2. 8 种内置过渡效果

过渡名data-transition说明推荐场景
fadefade淡入淡出(默认)表单提交、轻量切换
slideslide水平滑动(从右到左)页面导航、列表详情
slideupslideup从下向上滑入弹出层、模态框
slidedownslidedown从上向下滑入返回上一页
flipflip3D 翻转卡片切换、游戏
poppop中心放大弹出对话框、提示
flowflow流动抛出创意效果(性能稍差)
turnturn翻书效果阅读器、相册
nonenone无动画快速切换、性能优化

3. 反向过渡(Reverse)

使用 data-direction="reverse" 实现返回时的反向动画

<!-- 前进:从右滑入 -->
<a href="#page2" data-transition="slide">去页面2</a>

<!-- 返回:从左滑出 -->
<a href="#page1" data-transition="slide" data-direction="reverse">返回</a>

4. 完整示例(可直接运行)

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQM 过渡演示</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.1.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" id="home">
  <div data-role="header"><h1>过渡效果</h1></div>
  <div data-role="main" class="ui-content">
    <h3>选择一种过渡效果</h3>
    <ul data-role="listview" data-inset="true">
      <li><a href="#page2" data-transition="fade">淡入 (fade)</a></li>
      <li><a href="#page2" data-transition="slide">滑动 (slide)</a></li>
      <li><a href="#page2" data-transition="slideup">上滑 (slideup)</a></li>
      <li><a href="#page2" data-transition="flip">翻转 (flip)</a></li>
      <li><a href="#page2" data-transition="pop">弹出 (pop)</a></li>
      <li><a href="#page2" data-transition="flow">流动 (flow)</a></li>
      <li><a href="#page2" data-transition="turn">翻页 (turn)</a></li>
    </ul>
  </div>
</div>

<!-- 页面2 -->
<div data-role="page" id="page2">
  <div data-role="header">
    <a href="#home" class="ui-btn ui-icon-back ui-btn-icon-left" 
       data-transition="slide" data-direction="reverse">返回</a>
    <h1>目标页</h1>
  </div>
  <div data-role="main" class="ui-content">
    <h2>你已到达!</h2>
    <p>当前时间:2025年11月17日 02:46(CET)</p>
    <p>国家:比利时 (BE)</p>
    <div class="ui-grid-a">
      <div class="ui-block-a">
        <a href="#home" data-transition="slidedown" class="ui-btn ui-shadow">下滑返回</a>
      </div>
      <div class="ui-block-b">
        <a href="#home" data-transition="none" class="ui-btn ui-mini">无动画</a>
      </div>
    </div>
  </div>
</div>

</body>
</html>

5. 全局设置默认过渡

<head> 中添加配置:

<script>
$(document).bind("mobileinit", function() {
  // 设置全局默认过渡为 slide
  $.mobile.defaultPageTransition = "slide";
  $.mobile.defaultDialogTransition = "pop";
});
</script>

<!-- 注意:必须在 jQuery Mobile JS 之前引入 -->
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>

6. 性能优化建议

建议说明
避免 flow / turn 在低端设备消耗 GPU,易卡顿
使用 none 提升速度内网工具、快速原型
结合 data-position="fixed"防止页面跳动
iOS 设备开启硬件加速默认开启,无需额外设置
<!-- 强制无动画(适合老设备) -->
<a href="#next" data-transition="none">快速跳转</a>

7. 自定义过渡(进阶)

jQuery Mobile 允许通过 CSS3 动画 自定义过渡:

  1. mobileinit 中注册新过渡:
$(document).bind("mobileinit", function() {
  $.mobile.transitionHandlers["mycustom"] = $.mobile.Transition;
});
  1. 编写 CSS(复杂,不推荐初学者)。

建议:直接使用内置 8 种即可满足 99% 需求。


8. 常见问题(FAQ)

问题解决方案
过渡卡顿换用 fadenone
返回时动画方向错误加上 data-direction="reverse"
外部链接也触发过渡加上 rel="external"
iPhone 上白屏一闪添加 data-transition="fade"
<!-- 跳出 AJAX 导航 -->
<a href="https://www.google.com" rel="external" target="_blank">打开谷歌</a>

9. 过渡效果对比表(视觉参考)

效果视觉描述适用场景
fade透明度变化轻量、稳定
slide左右推拉标准导航
slideup底部推上详情页
flip3D 翻转趣味交互
pop中心放大模态框

总结:推荐组合

场景推荐过渡
标准页面切换slide
返回上一页slide + reverse
对话框/提示pop
表单提交成功fade
性能优先none

需要我为你生成:

  • 所有过渡效果的 GIF 演示图
  • 带底部导航栏的多页过渡应用
  • 过渡 + 页面预加载 的优化版本?

随时告诉我!

文章已创建 2588

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部