什么是 jQuery UI?

jQuery UI 是一个建立在 jQuery JavaScript 库之上的用户界面库,它提供了一系列预先构建好的、高度可定制的交互组件(如对话框、滑块、日期选择器)和视觉效果(如动画、主题),可以让你快速为网页添加丰富的功能和专业的界面。

jqueryui 网页模板
(图片来源网络,侵删)

基础 HTML 结构(最常用)

这是一个包含所有必要元素的完整 HTML 模板,可以直接复制并使用。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">jQuery UI 示例</title>
    <!-- 1. 引入 jQuery 核心库 -->
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <!-- 2. 引入 jQuery UI 核心库 -->
    <script src="https://code.jquery.com/ui/1.13.2/jquery-ui.min.js"></script>
    <!-- 3. 引入 jQuery UI 的 CSS 主题文件 -->
    <!-- 你可以从 https://jqueryui.com/download/ 下载并使用自己的主题,或直接使用 CDN 的默认主题 -->
    <link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css">
    <!-- 4. 引入 jQuery UI 的图标(可选,但推荐) -->
    <link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui-icons.css">
    <!-- 5. 你的自定义 CSS -->
    <style>
        body {
            font-family: Arial, sans-serif;
            padding: 20px;
        }
        .container {
            max-width: 800px;
            margin: 0 auto;
            border: 1px solid #ccc;
            padding: 20px;
            border-radius: 5px;
        }
        /* 为演示组件添加一些间距 */
        .demo-section {
            margin-bottom: 30px;
            padding: 15px;
            border: 1px dashed #ddd;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>jQuery UI 网页模板</h1>
        <p>这是一个使用 jQuery UI 的基础模板,下面展示了几个常用组件。</p>
        <!-- 示例 1: 按钮 -->
        <div class="demo-section">
            <h2>按钮</h2>
            <button id="btn-dialog">打开对话框</button>
            <button id="btn-accordion">切换手风琴</button>
        </div>
        <!-- 示例 2: 对话框 -->
        <div id="my-dialog" title="这是一个对话框">
            <p>这是一个通过 jQuery UI 创建的对话框,你可以点击右上角的 X 关闭它。</p>
        </div>
        <!-- 示例 3: 手风琴 -->
        <div class="demo-section">
            <h2>手风琴</h2>
            <div id="accordion">
                <h3>第一部分</h3>
                <div>
                    <p>这是第一部分的内容,点击其他标题可以展开/折叠这部分。</p>
                </div>
                <h3>第二部分</h3>
                <div>
                    <p>这是第二部分的内容,jQuery UI 使得创建这样的交互组件变得非常简单。</p>
                </div>
                <h3>第三部分</h3>
                <div>
                    <p>这是第三部分的内容。</p>
                </div>
            </div>
        </div>
        <!-- 示例 4: 日期选择器 -->
        <div class="demo-section">
            <h2>日期选择器</h2>
            <p>选择一个日期: <input type="text" id="datepicker"></p>
        </div>
        <!-- 示例 5: 进度条 -->
        <div class="demo-section">
            <h2>进度条</h2>
            <div id="progressbar"></div>
            <button id="start-progress">开始进度</button>
        </div>
    </div>
    <!-- 6. 你的自定义 JavaScript 代码 -->
    <script>
    $( function() {
        // 对话框
        $( "#my-dialog" ).dialog({
            autoOpen: false, // 页面加载时不自动打开
            modal: true,     // 模态对话框,背景变暗
            buttons: {
                "确定": function() {
                    $( this ).dialog( "close" );
                },
                "取消": function() {
                    $( this ).dialog( "close" );
                }
            }
        });
        $( "#btn-dialog" ).on( "click", function() {
            $( "#my-dialog" ).dialog( "open" );
        });
        // 手风琴
        $( "#accordion" ).accordion();
        // 日期选择器
        $( "#datepicker" ).datepicker();
        // 进度条
        $( "#progressbar" ).progressbar({
            value: 0
        });
        $( "#start-progress" ).on( "click", function() {
            var progressValue = $( "#progressbar" ).progressbar( "value" );
            if ( progressValue < 100 ) {
                progressValue += 10;
                $( "#progressbar" ).progressbar( "value", progressValue );
            }
        });
    } );
    </script>
</body>
</html>

自定义主题

jQuery UI 的一大优点是可以通过其 ThemeRoller 工具轻松定制外观。

步骤:

  1. 访问 ThemeRoller:打开 jQuery UI ThemeRoller 页面。
  2. 选择主题:从右侧的下拉菜单中选择一个基础主题(如 "Base", "Black Tie", "Blitzer" 等)。
  3. 自定义样式
    • 字体:可以调整字体家族和大小。
    • 颜色:可以调整组件的背景色、文字颜色、边框色、悬停效果等。
    • 圆角:可以调整组件的圆角半径。
    • 阴影:可以调整阴影效果。
  4. 下载:点击右上角的 "Download" 按钮。
  5. 替换文件:下载后,你会得到一个压缩包,解压后,将 jquery-ui.cssjquery-ui.min.js 以及 images 文件夹(包含图标和背景图片)替换到你项目中对应的文件。

如何使用自定义主题?

jqueryui 网页模板
(图片来源网络,侵删)

在你的 HTML 文件中,将 CDN 的 CSS 链接替换为你下载的本地 CSS 链接:

<!-- 替换掉这行 -->
<link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css">
<!-- 改为使用你自己的主题文件 -->
<link rel="stylesheet" href="path/to/your/custom-theme/jquery-ui.css">

按需加载(优化性能)

在生产环境中,为了减小文件体积,提高加载速度,建议只加载你需要的组件。

方法:使用 jQuery UI 官方的下载页面

  1. 访问 jQuery UI 下载页面
  2. Core 核心库部分,必须勾选 jQuery UI
  3. Widgets (组件) 部分,勾选你需要的组件,Accordion, Datepicker, Dialog, Progressbar
  4. Interactions (交互) 部分,如果需要拖拽、排序等功能,也在这里勾选。
  5. Effects (效果) 部分,可以勾选你需要的动画效果。
  6. Theme 主题部分,选择你喜欢的主题。
  7. 点击 "Download" 按钮。

下载的压缩包会包含一个 定制好的 jquery-ui.js 文件,它只包含你选择的组件的代码,这样,你的项目就不再需要引入完整的 jquery-ui.min.js 了。

jqueryui 网页模板
(图片来源网络,侵删)

优化后的模板结构:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">jQuery UI 按需加载示例</title>
    <!-- 引入 jQuery 核心 -->
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <!-- 引入你定制好的 CSS -->
    <link rel="stylesheet" href="path/to/your/downloaded/jquery-ui.css">
    <style>
        /* ... 自定义样式 ... */
    </style>
</head>
<body>
    <!-- 你的 HTML 内容 ... -->
    <div id="my-dialog" title="定制对话框">
        <p>这个对话框只加载了必要的代码。</p>
    </div>
</body>
<!-- 引入你定制好的 JS (这个文件很小) -->
<script src="path/to/your/downloaded/jquery-ui.js"></script>
<script>
    $( function() {
        // 你的初始化代码
        $( "#my-dialog" ).dialog();
    } );
</script>
</html>

关键组件和交互示例

在基础模板中,我们已经包含了几个常用组件,这里再补充一些重要的交互方式。

拖拽

<div id="draggable" class="ui-widget-content">
    <p>拖拽我</p>
</div>
<style>
    #draggable { width: 150px; height: 150px; padding: 0.5em; }
</style>
<script>
$( "#draggable" ).draggable();
</script>

排序

<ul id="sortable">
    <li class="ui-state-default">项目 1</li>
    <li class="ui-state-default">项目 2</li>
    <li class="ui-state-default">项目 3</li>
    <li class="ui-state-default">项目 4</li>
    <li class="ui-state-default">项目 5</li>
</ul>
<style>
    #sortable { list-style-type: none; margin: 0; padding: 0; width: 60%; }
    #sortable li { margin: 5px; padding: 5px; font-size: 1.2em; height: 1.5em; }
</style>
<script>
$( "#sortable" ).sortable();
</script>

标签页

<div id="tabs">
    <ul>
        <li><a href="#tabs-1">标签 1</a></li>
        <li><a href="#tabs-2">标签 2</a></li>
        <li><a href="#tabs-3">标签 3</a></li>
    </ul>
    <div id="tabs-1">
        <p>这是标签 1 的内容。</p>
    </div>
    <div id="tabs-2">
        <p>这是标签 2 的内容。</p>
    </div>
    <div id="tabs-3">
        <p>这是标签 3 的内容。</p>
    </div>
</div>
<script>
$( "#tabs" ).tabs();
</script>

总结与建议

  1. 从基础模板开始:使用第一个完整模板进行学习和快速原型开发。
  2. 善用 ThemeRoller:不要使用默认的 "Base" 主题花哨你的应用,花几分钟时间定制一个符合你网站风格的主题。
  3. 生产环境用按需加载:为了最佳性能,务必使用官方下载工具生成只包含所需组件的 JS 文件。
  4. 查阅官方文档:jQuery UI 的官方文档 (https://api.jqueryui.com/) 是最权威的参考,包含了所有组件的详细选项、方法和事件。

希望这些模板和示例能帮助你顺利地在项目中使用 jQuery UI!