jQuery Mobile 网格

jQuery Mobile 网格(Grid)详解

网格(Grid) 是 jQuery Mobile 的 响应式布局系统,基于 块级容器(ui-block),支持 2~5 列,自动等高、等宽、换行,非常适合 按钮组、卡片、表单布局

替代传统 floatflex无需 CSS 即可实现移动端响应式。


1. 基本结构

<div class="ui-grid-a">
  <div class="ui-block-a">左列(50%)</div>
  <div class="ui-block-b">右列(50%)</div>
</div>

关键类名:

  • ui-grid-a → 2 列
  • ui-grid-b → 3 列
  • ui-grid-c → 4 列
  • ui-grid-d → 5 列
  • ui-block-a/b/c/d/e → 块顺序

2. 网格类型一览

类名列数每列宽度适用场景
ui-grid-a2 列50%左右布局、表单
ui-grid-b3 列33.33%图标按钮
ui-grid-c4 列25%宫格菜单
ui-grid-d5 列20%数字键盘

3. 响应式行为

  • 大屏:并排显示
  • 小屏自动换行,每块占 100% 宽度
  • 无需媒体查询!

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>
  <style>
    .grid-demo { margin: 15px 0; padding: 10px; }
    .ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e {
      background: #f0f0f0; text-align: center; padding: 20px; margin: 5px 0;
      border: 1px solid #ccc; border-radius: 8px;
    }
  </style>
</head>
<body>

<div data-role="page">
  <div data-role="header" data-position="fixed">
    <h1>网格布局</h1>
  </div>

  <div data-role="main" class="ui-content">

    <h3>1. 2 列网格(ui-grid-a)</h3>
    <div class="ui-grid-a grid-demo">
      <div class="ui-block-a"><strong>左列</strong><br>50%</div>
      <div class="ui-block-b"><strong>右列</strong><br>50%</div>
    </div>

    <h3>2. 3 列网格(ui-grid-b)</h3>
    <div class="ui-grid-b grid-demo">
      <div class="ui-block-a">1</div>
      <div class="ui-block-b">2</div>
      <div class="ui-block-c">3</div>
    </div>

    <h3>3. 4 列网格(ui-grid-c)—— 宫格菜单</h3>
    <div class="ui-grid-c grid-demo">
      <div class="ui-block-a">
        <a href="#" class="ui-btn ui-icon-home ui-btn-icon-top ui-shadow">首页</a>
      </div>
      <div class="ui-block-b">
        <a href="#" class="ui-btn ui-icon-search ui-btn-icon-top ui-shadow">搜索</a>
      </div>
      <div class="ui-block-c">
        <a href="#" class="ui-btn ui-icon-shop ui-btn-icon-top ui-shadow">购物车</a>
      </div>
      <div class="ui-block-d">
        <a href="#" class="ui-btn ui-icon-user ui-btn-icon-top ui-shadow">我的</a>
      </div>
    </div>

    <h3>4. 5 列网格(ui-grid-d)—— 数字键盘</h3>
    <div class="ui-grid-d grid-demo">
      <div class="ui-block-a"><button class="ui-btn">1</button></div>
      <div class="ui-block-b"><button class="ui-btn">2</button></div>
      <div class="ui-block-c"><button class="ui-btn">3</button></div>
      <div class="ui-block-d"><button class="ui-btn">4</button></div>
      <div class="ui-block-e"><button class="ui-btn">5</button></div>
      <div class="ui-block-a"><button class="ui-btn">6</button></div>
      <div class="ui-block-b"><button class="ui-btn">7</button></div>
      <div class="ui-block-c"><button class="ui-btn">8</button></div>
      <div class="ui-block-d"><button class="ui-btn">9</button></div>
      <div class="ui-block-e"><button class="ui-btn">0</button></div>
    </div>

    <h3>5. 表单布局(2列)</h3>
    <form class="grid-demo">
      <div class="ui-grid-a">
        <div class="ui-block-a">
          <label for="name">姓名:</label>
          <input type="text" id="name" placeholder="输入姓名">
        </div>
        <div class="ui-block-b">
          <label for="email">邮箱:</label>
          <input type="email" id="email" placeholder="输入邮箱">
        </div>
      </div>
      <button type="submit" class="ui-btn ui-btn-b ui-corner-all">提交</button>
    </form>

    <h3>6. 当前信息(响应式)</h3>
    <div class="ui-grid-a grid-demo">
      <div class="ui-block-a">
        <strong>时间</strong><br>
        2025年11月17日 03:04(CET)
      </div>
      <div class="ui-block-b">
        <strong>国家</strong><br>
        比利时 (BE)
      </div>
    </div>

  </div>

  <div data-role="footer" data-position="fixed">
    <h4>比利时 © 2025</h4>
  </div>
</div>

</body>
</html>

5. 网格属性与技巧

技巧说明
等高块自动等高(无需 JS)
嵌套网格支持 ui-grid 嵌套
ui-shadow按钮阴影
margin块间距
响应式换行自动 100% 宽度
<!-- 嵌套示例 -->
<div class="ui-grid-a">
  <div class="ui-block-a">
    <div class="ui-grid-b">
      <div class="ui-block-a">子1</div>
      <div class="ui-block-b">子2</div>
      <div class="ui-block-c">子3</div>
    </div>
  </div>
  <div class="ui-block-b">右列</div>
</div>

6. 最佳实践

建议说明
优先用 ui-grid-a最常用
按钮用 ui-shadow立体感
表单用 2 列提升输入体验
避免 5 列放文字太窄
小屏测试确保换行美观

7. 常见问题

问题解决方案
块不换行检查是否在 ui-content
宽度不均确保所有块都在同一 ui-grid-*
按钮太小ui-minipadding
高度不齐正常,jQM 自动等高

8. 推荐布局模板

<!-- 宫格菜单(4列) -->
<div class="ui-grid-c">
  <div class="ui-block-a"><a href="#" class="ui-btn ui-icon-home ui-btn-icon-top">首页</a></div>
  <div class="ui-block-b"><a href="#" class="ui-btn ui-icon-search ui-btn-icon-top">搜索</a></div>
  <div class="ui-block-c"><a href="#" class="ui-btn ui-icon-shop ui-btn-icon-top">购物车</a></div>
  <div class="ui-block-d"><a href="#" class="ui-btn ui-icon-user ui-btn-icon-top">我的</a></div>
</div>

<!-- 表单双列 -->
<div class="ui-grid-a">
  <div class="ui-block-a"><label>标签</label><input type="text"></div>
  <div class="ui-block-b"><label>标签</label><input type="text"></div>
</div>

总结:网格速查

列数类名每列宽
2 列ui-grid-a50%
3 列ui-grid-b33.33%
4 列ui-grid-c25%
5 列ui-grid-d20%

推荐ui-grid-a + ui-grid-c


需要我为你生成:

  • 9 宫格应用首页
  • 响应式仪表盘(多网格嵌套)
  • 网格 + 卡片翻转动画

随时告诉我!

文章已创建 2588

发表回复

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

相关文章

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

返回顶部