jQuery Mobile 工具栏

jQuery Mobile 工具栏(Toolbars)详解

工具栏(Toolbars) 是 jQuery Mobile 中用于 头部(Header)页脚(Footer) 的核心组件,支持 固定定位、导航栏、按钮组、标题 等,完美适配移动端。


1. 基本结构

<div data-role="page">

  <!-- 头部工具栏 -->
  <div data-role="header" data-position="fixed">
    <h1>页面标题</h1>
  </div>

  <!-- 内容区 -->
  <div data-role="main" class="ui-content">
    <p>内容区域</p>
  </div>

  <!-- 页脚工具栏 -->
  <div data-role="footer" data-position="fixed">
    <h4>页脚文字</h4>
  </div>

</div>

关键属性:

  • data-role="header" / footer
  • data-position="fixed" → 固定在顶部/底部(推荐)
  • data-tap-toggle="false" → 防止点击内容时隐藏

2. 工具栏类型

类型data-role说明
头部栏header放标题 + 左右按钮
页脚栏footer放版权、导航
导航栏navbar多按钮横向导航
控制组controlgroup按钮分组

3. 固定工具栏(推荐)

<div data-role="header" data-position="fixed" data-tap-toggle="false">
  <a href="#menu" data-rel="popup" class="ui-btn ui-icon-bars ui-btn-icon-left">菜单</a>
  <h1>我的应用</h1>
  <a href="#search" class="ui-btn ui-icon-search ui-btn-icon-right">搜索</a>
</div>

data-tap-toggle="false":防止点击内容时工具栏隐藏


4. 导航栏(Navbar)—— 底部 Tab 切换

<div data-role="footer" data-position="fixed">
  <div data-role="navbar">
    <ul>
      <li><a href="#home" class="ui-btn-active ui-btn ui-icon-home ui-btn-icon-top">首页</a></li>
      <li><a href="#news" class="ui-btn ui-icon-comment ui-btn-icon-top">消息</a></li>
      <li><a href="#cart" class="ui-btn ui-icon-shop ui-btn-icon-top">购物车</a></li>
      <li><a href="#user" class="ui-btn ui-icon-user ui-btn-icon-top">我的</a></li>
    </ul>
  </div>
</div>

ui-btn-active:高亮当前页
ui-btn-icon-top:图标在上,文字在下


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

<!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>

<!-- ========== 页面1:首页 ========== -->
<div data-role="page" id="home">

  <!-- 头部工具栏 -->
  <div data-role="header" data-position="fixed" data-tap-toggle="false">
    <a href="#menuPopup" data-rel="popup" data-transition="slidedown" 
       class="ui-btn ui-icon-bars ui-btn-icon-left ui-corner-all">菜单</a>
    <h1>首页</h1>
    <a href="#searchPopup" data-rel="popup" class="ui-btn ui-icon-search ui-btn-icon-notext ui-corner-all">搜索</a>
  </div>

  <!-- 内容区 -->
  <div data-role="main" class="ui-content">
    <h2>欢迎使用 jQuery Mobile</h2>
    <p>当前时间:2025年11月17日 02:50(CET)</p>
    <p>国家:比利时 (BE)</p>
    <div style="height:600px;"></div> <!-- 模拟长内容 -->
  </div>

  <!-- 页脚导航栏 -->
  <div data-role="footer" data-position="fixed" data-tap-toggle="false">
    <div data-role="navbar">
      <ul>
        <li><a href="#home" class="ui-btn-active ui-btn ui-icon-home ui-btn-icon-top">首页</a></li>
        <li><a href="#news" class="ui-btn ui-icon-comment ui-btn-icon-top">消息</a></li>
        <li><a href="#cart" class="ui-btn ui-icon-shop ui-btn-icon-top">购物车</a></li>
        <li><a href="#user" class="ui-btn ui-icon-user ui-btn-icon-top">我的</a></li>
      </ul>
    </div>
  </div>

</div>

<!-- ========== 页面2:消息 ========== -->
<div data-role="page" id="news">
  <div data-role="header" data-position="fixed" data-tap-toggle="false">
    <a href="#home" class="ui-btn ui-icon-back ui-btn-icon-left">返回</a>
    <h1>消息中心</h1>
  </div>
  <div data-role="main" class="ui-content">
    <p>暂无消息</p>
  </div>
  <div data-role="footer" data-position="fixed">
    <div data-role="navbar">
      <ul>
        <li><a href="#home" class="ui-btn ui-icon-home ui-btn-icon-top">首页</a></li>
        <li><a href="#news" class="ui-btn-active ui-btn ui-icon-comment ui-btn-icon-top">消息</a></li>
        <li><a href="#cart" class="ui-btn ui-icon-shop ui-btn-icon-top">购物车</a></li>
        <li><a href="#user" class="ui-btn ui-icon-user ui-btn-icon-top">我的</a></li>
      </ul>
    </div>
  </div>
</div>

<!-- ========== 菜单弹窗 ========== -->
<div data-role="popup" id="menuPopup" data-theme="a" style="width:200px;">
  <ul data-role="listview" data-inset="true">
    <li><a href="#settings">设置</a></li>
    <li><a href="#about">关于</a></li>
    <li><a href="#" data-rel="back">关闭</a></li>
  </ul>
</div>

<!-- ========== 搜索框弹窗 ========== -->
<div data-role="popup" id="searchPopup" data-overlay-theme="b" style="padding:15px; max-width:300px;">
  <form>
    <input type="search" placeholder="搜索..." data-clear-btn="true">
  </form>
</div>

</body>
</html>

6. 工具栏属性汇总

属性说明
data-position="fixed"固定定位
data-tap-toggle="false"防止隐藏
data-fullscreen="true"全屏模式(隐藏状态栏)
data-theme="a" / b主题
data-id="myfooter"字符串多页共享页脚

7. 共享工具栏(多页共用)

<!-- 页面1 -->
<div data-role="page" id="page1">
  <div data-role="header" data-id="mainheader" data-position="fixed">
    <h1>共享头部</h1>
  </div>
  ...
</div>

<!-- 页面2 -->
<div data-role="page" id="page2">
  <div data-role="header" data-id="mainheader" data-position="fixed">
    <h1>共享头部</h1>
  </div>
  ...
</div>

data-id 相同 → 切换页面时工具栏不刷新


8. 最佳实践

建议说明
始终使用 data-position="fixed"移动端必备
data-tap-toggle="false"防止误操作
导航栏最多 5 个超过自动换行
图标用 ui-btn-icon-top更清晰
长页面加 padding避免内容被工具栏遮挡
<div data-role="main" class="ui-content" style="padding-bottom:60px;">

9. 常见问题

问题解决方案
工具栏被内容遮挡ui-contentpadding
切换页面工具栏闪烁使用 data-id 共享
导航栏换行限制 <li> 数量,或用 CSS 控制
iOS 状态栏重叠data-fullscreen="true"

10. 推荐工具栏布局

<!-- 标准头部 -->
<div data-role="header" data-position="fixed" data-tap-toggle="false">
  <a href="#" class="ui-btn ui-icon-bars ui-btn-icon-left">菜单</a>
  <h1>标题</h1>
  <a href="#" class="ui-btn ui-icon-search ui-btn-icon-right">搜索</a>
</div>

<!-- 标准底部导航 -->
<div data-role="footer" data-position="fixed">
  <div data-role="navbar">
    <ul>
      <li><a href="#" class="ui-btn-active ui-btn ui-icon-home ui-btn-icon-top">首页</a></li>
      <li><a href="#" class="ui-btn ui-icon-grid ui-btn-icon-top">分类</a></li>
      <li><a href="#" class="ui-btn ui-icon-shop ui-btn-icon-top">购物车</a></li>
      <li><a href="#" class="ui-btn ui-icon-user ui-btn-icon-top">我的</a></li>
    </ul>
  </div>
</div>

总结:工具栏模板

<div data-role="header" data-position="fixed" data-tap-toggle="false">
  <a href="#" class="ui-btn ui-icon-菜单 ui-btn-icon-left">菜单</a>
  <h1>标题</h1>
  <a href="#" class="ui-btn ui-icon-搜索 ui-btn-icon-right">搜索</a>
</div>

<div data-role="footer" data-position="fixed">
  <div data-role="navbar">
    <ul>
      <li><a href="#" class="ui-btn-active ui-btn ui-icon-home ui-btn-icon-top">首页</a></li>
      <li><a href="#" class="ui-btn ui-icon-user ui-btn-icon-top">我的</a></li>
    </ul>
  </div>
</div>

需要我为你生成:

  • 企业级后台模板(带侧边栏 + 工具栏)
  • 全屏模式 + 沉浸式工具栏
  • 动态切换标题的 JS 方案

随时告诉我!

文章已创建 2588

发表回复

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

相关文章

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

返回顶部