前端组件库—— jQuery UI 知识点大全(二)

简介: 教程来源 http://unbgv.cn jQuery UI 是基于 jQuery 的开源 UI 库,核心含三大模块:交互(Draggable/Sortable 等)、微件(Accordion/Datepicker/Dialog 等)和特效(show/hide 动画、颜色过渡等),支持主题定制(ThemeRoller)、事件委托与性能优化,助力构建高交互、无障碍、视觉统一的 Web 应用。

三、核心组件体系

jQuery UI 主要分为三大模块:交互(Interactions)、微件(Widgets)和效果库(Effects)。

3.1 交互组件(Interactions)
image.png
Draggable 常用代码示例:

$(".drag-item").draggable({
    axis: "x",                    // 只能水平拖动
    containment: "#container",    // 限制在父容器范围内
    grid: [50, 50],               // 拖动时按 50px 对齐
    opacity: 0.5,                 // 拖拽时半透明
    revert: "invalid",            // 放置失败时动画还原
    stack: ".drag-item"           // 确保拖拽时前置
});

Sortable 常用配置:

$("#sortable-list").sortable({
    placeholder: "ui-state-highlight",  // 拖拽时的占位符样式
    revert: 300,                         // 回退动画时长
    tolerance: "pointer",                // 鼠标指针位置决定排序
    connectWith: "#other-list",          // 允许跨列表拖拽
    update: (event, ui) => {
        // 监听排序后的更新,通常用于保存新的顺序
        const newOrder = $(this).sortable("toArray");
        console.log("新的顺序:", newOrder);
    }
});

3.2 微件组件(Widgets)
微件是 jQuery UI 中功能最丰富的部分,提供了即插即用的高级界面元素。
image.png
Accordion 手风琴菜单示例:

<div id="accordion">
    <h3>标题 1</h3>
    <div>内容 1...</div>
    <h3>标题 2</h3>
    <div>内容 2...</div>
    <h3>标题 3</h3>
    <div>内容 3...</div>
</div>

<script>
    $("#accordion").accordion({
        collapsible: true,    // 允许全部折叠
        active: false,        // 默认全部折叠
        heightStyle: "content" // 根据内容适应高度
    });
</script>

Datepicker 日期选择器示例:

$("#datepicker").datepicker({
    dateFormat: "yy-mm-dd",
    minDate: 0,                    // 只能选今天及以后
    showAnim: "slideDown",
    showButtonPanel: true,
    onSelect: (dateText) => {
        console.log("选中了日期:", dateText);
    }
});

Dialog 对话框的高级用法——自定义位置:

$("#mydialog").dialog({
    my: "center top",          // 元素对齐方式
    at: "center top+75",       // 目标位置偏移量(像素)
    of: "#mycontainer",        // 相对于父容器定位
    draggable: true,
    resizable: false,
    modal: true,
    buttons: {
        "确认": () => {
            alert("确认");
            $(this).dialog("close");
        },
        "取消": () => $(this).dialog("close")
    }
});

3.3 效果库与动画(Effects)
jQuery UI 在原生 animate() 的基础上,增加了一系列高级视觉效果,极大地提升了用户体验。
image.png
image.png
使用内置效果切换显示/隐藏:

// 使用 drop 效果显示元素
$(".element").show("drop", { direction: "up" }, 500);

// 使用 explode 效果隐藏
$(".element").hide("explode", { pieces: 16 }, 1000);

// 切换显示/隐藏
$(".element").toggle("bounce", { times: 3 }, 500);

运行回调:所有效果函数都支持在动画完成后执行回调:

$("#new-item").show("slide", 300, () => {
    console.log("动画展示完成!");
});

颜色动画:在 jQuery UI 的支持下,你可以动画过渡颜色属性(需要导入 jquery-ui-effect.js):

$(".box").animate({
    backgroundColor: "#ff0000",
    color: "#ffffff"
}, 1000);

四、开发配置与高级运维

4.1 主题定制与 ThemeRoller
jQuery UI 的一大亮点是其强大的主题系统,允许用户轻松改变 UI 的整体风格,而不必逐一手动修改 CSS。

ThemeRoller 的核心参数包括:

Font settings:字体和文字样式

Corner radius:各组件圆角的弧度

Header/Toolbar:头部和工具栏样式

Content:内容区域样式

Clickable default state:按钮/链接默认状态颜色

Clickable hover state:鼠标悬停样式

Clickable active state:点击激活样式

Highlight:高亮元素的配色

Error:错误信息的提示色

Drop shadows:阴影效果

使用 ThemeRoller 生成主题的步骤如下:

访问 ThemeRoller 工具:打开 jQuery UI 官网的 ThemeRoller 页面

定制视觉样式:在左侧面板中调整字体、圆角、颜色等参数

下载主题包:点击下载按钮获取包含 CSS 和图片文件的统一主题包

集成到项目中:将下载的主题 CSS 链接放置到 jQuery UI 默认样式之后

在项目中使用自定义主题:

<!-- 默认样式(主题适配的基石) -->
<link href="css/green-theme/jquery-ui.css" rel="stylesheet" />

4.2 事件委托与性能优化(高频交互场景)
在高频交互或动态渲染场景中,页面容易出现卡顿(回流)、点击失效(事件丢失)或内存泄漏。

核心优化策略一:使用事件委托

不要对动态生成的元素直接绑定事件,而是绑定在常驻的父容器上:

// ❌ 错误:直接绑定在动态生成的子元素上,元素重建后事件会丢失
$('.dynamic-btn').click(fn);

// ✅ 正确:绑定在常驻父容器上,事件委托自动处理新生成的元素
$('#static-container').on('click', '.dynamic-btn', fn);

使用命名空间可以避免 .off() 误杀其他插件的事件:

// 绑定时使用命名空间
$(document).on('click.myModule', '.js-fetch-item', handler);
// 解绑时只移除特定命名空间
$(document).off('.myModule');

核心优化策略二:遏制回流与重绘(Reflow)

节流与防抖:对于 scroll、resize 或高频点击,必须包裹 throttle 或 debounce 函数

// 简易节流函数
function throttle(fn, wait) {
    let last = 0;
    return function() {
        const now = Date.now();
        if (now - last >= wait) {
            fn.apply(this, arguments);
            last = now;
        }
    };
}

// 应用于滚动事件
$(window).on('scroll', throttle(() => {
    console.log('滚动触发');
}, 200));

核心优化策略三:批量操作 DOM

避免在循环中频繁操作 DOM,应将修改集中处理:

// ❌ 错误:循环中反复 append
for (let i = 0; i < 100; i++) {
    $('#list').append(`<li>Item ${i}</li>`);
}

// ✅ 正确:批量一次插入
let html = '';
for (let i = 0; i < 100; i++) {
    html += `\n<li>Item ${i}</li>`;
}
$('#list').append(html);

来源:
http://htnus.cn

相关文章
|
6天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23340 5
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
15天前
|
缓存 人工智能 自然语言处理
我对比了8个Claude API中转站,踩了不少坑,总结给你
本文是个人开发者耗时1周实测的8大Claude中转平台横向评测,聚焦Claude Code真实体验:以加权均价(¥/M token)、内部汇率、缓存支持、模型真实性及稳定性为核心指标。
5355 25
|
11天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
3874 12
|
10天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
3172 10
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
27天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
21247 64
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)