网站首页 > 技术文章 正文
大家好,很高兴又见面了,我是"高级前端?进阶?",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。
今天给大家带来的主题是管理用户焦点的前端3大顶级开源库,话不多说,直接进入正题!
1. Shepherd.js
Shepherd 是一个 JavaScript 库,用于指导用户正常使用应用程序。 它使用另一个开源库 Floating UI 来呈现每个游览“步骤”的对话框。其中,Floating UI 可确保步骤永远不会超出屏幕或因溢出而被裁剪。
Shepherd 具有以下明显特征:
- 无障碍支持:Shepherd 具有完整的键盘导航支持、焦点捕获以及通过 aria 属性实现的 a11y 合规性。
- 高度可定制:Shepherd 风格保持简约,让开发者可以轻松定制外观和感觉,但仍然为开发者提供足够的空间,方便快速使用。
- 框架支持:Shepherd 已支持与大量前端框架集成,比如: React、Ember、Angular、Vue.js、ES 模块或纯 Javascript 等等
Shepherd.js的使用非常简单,首先引入相关的资源:
<link rel="stylesheet" href="shepherd.js/dist/css/shepherd.css"/>
<script src="shepherd.js/dist/js/shepherd.min.js"></script>
接着通过下面的方式直接调用即可:
const tour = new Shepherd.Tour({
defaultStepOptions: {
cancelIcon: {
enabled: true
},
classes: 'class-1 class-2',
scrollTo: { behavior: 'smooth', block: 'center' }
}
});
tour.addStep({
title: 'Creating a Shepherd Tour',
text: `Creating a Shepherd tour is easy. too!\
Just create a \`Tour\` instance, and add as many steps as you want.`,
attachTo: {
element: '.hero-example',
on: 'bottom'
},
buttons: [
{
action() {
return this.back();
},
classes: 'shepherd-button-secondary',
text: 'Back'
},
{
action() {
return this.next();
},
text: 'Next'
}
],
id: 'creating'
});
tour.start();
目前 Shepherd.js 在 Github 上通过 MTI 协议开源,有超过 11.3k 的 star、0.8k 的 fork,是一个值得关注的前端开源项目。
2. Driver.js
Driver.js 是功能强大、高度可定制的原生 JavaScript 引擎,可驱动用户在整个页面上的注意力,同时无外部依赖、轻量级、支持所有主流浏览器且高度可定制。
Driver.js 的典型特征包括:
- 简单:使用简单,完全没有外部依赖。
- 轻量级:与其他经过 +12kb gzip 压缩的库相比,仅 5kb gzip 压缩。
- 高度可定制:拥有强大的 API,可以随心所欲地使用
- 突出显示任何内容:突出显示页面上的任何(实际上是任何)元素
- 丰富的功能介绍:为 Web 应用程序创建强大的功能介绍
- 焦点转移器:为用户添加焦点转移器
- 用户友好:一切都可以通过键盘控制
- 友好的 TypeScript 支持:用 TypeScript 编写
- 一致的行为:可在所有浏览器中使用
- MIT 许可:免费供个人和商业使用
Driver.js 不仅仅是一个导航库,导航只是众多用例之一,Driver.js 可以在任何页面需要某种覆盖的地方使用, 一些常见的用例包括:
- 通过解释如何使用产品并回答常见问题来吸引用户
- 通过突出显示功能,可以消除干扰并将用户的注意力集中在重要的事情上
- 为用户提供上下文帮助,解释如何使用产品并回答常见问题
- 突出显示新功能,解释如何使用它们并确保用户不会错过它们
Driver.js 使用 Vanilla TypeScript 编写,具有零依赖性并且高度可定制。 它有几个选项允许开发者更改其行为方式,并且还提供了在突出显示、即将突出显示或取消选择元素时操作元素的钩子。另外,将 Driver.js 的大小与其他库进行比较,它是最轻量级的,gzip 后只有 ~5kb,而其他库则为 12kb 以上。
使用 Driver.js 也是非常简单,首先通过 NPM 安装 driver.js 或者引入CDN即可。
<script src="https://cdn.jsdelivr.net/npm/driver.js@1.0.1/dist/driver.js.iife.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/driver.js@1.0.1/dist/driver.css"/>
接着调用 Driver.js 的相关方法即可:
import { driver } from "driver.js";
import "driver.js/dist/driver.css";
const driverObj = driver();
driverObj.highlight({
element: "#some-element",
popover: {
title: "Title",
description: "Description"
}
});
目前 Driver.js 在 Github 上通过 MTI 协议开源,有超过 15.5k 的 star、0.9k 的 fork、13.7k 的项目依赖量、是一个值得关注的前端开源项目。
3.Intro.js
Intro.js 是一个开源普通 Javascript / CSS 库,用于添加分步介绍或提示。
Intro.js API 的简单性可帮助开发者为产品开发高级入门教程, Intro.js 是轻量级的,只有 10kB 并且没有外部依赖!
Intro.js具有以下显著特征:
- 便于使用:使用简单,且保持轻量,只有 10kB 并且没有任何外部依赖!
- 可定制:Intro.js 提供了多种方法来配置产品入门并自定义导航的每一个步骤。
- 开源:Intro.js 是免费且开源的,在 AGPL 许可下发布, 同时还提供商业许可,支持其他团队成功集成Intro.js。
目前 Intro.js 在 Github 上通过 AGPL 协议开源,有超过 22.1k 的 star、2.6k 的 fork,5.5k的项目依赖量、代码贡献者100+,是一个值得关注的前端开源项目。
Intro.js的使用也非常简单,可以使用 data-intro 和 data-title HTML 属性创建产品导览。只需将这些属性添加到元素并调用 introJs().start() 即可,比如下面的例子:
<div data-title="Welcome!" data-intro="Hello World! " class="card-demo">
<div class="card shadow--md">
<div class="card__image" data-intro="Intro.js can highlight on elements">
<img
src="..."
alt="Image alt text"
title="Logo Title Text 1"
/>
</div>
<div class="card__body" data-title="Farewell!" data-intro="And this is the last step!">
<h4>Quaco Lighthouse</h4>
<small>
The Quaco Head Lighthouse is a well maintained lighthouse close to St.
Martins. It is a short, beautiful walk to the lighthouse along the
seashore.
</small>
</div>
</div>
</div>
接着调用下面的方法即可:
// Intro.js scans the webpage and finds all elements with `data-intro` attribute
introJs().start();
4.本文总结
本文主要和大家聊聊管理用户焦点的前端3大顶级开源库,如:Shepherd.js 、Driver.js 、Intro.js。相信通过本文的阅读,大家对 Shepherd.js 、Driver.js 、Intro.js 会有一个初步的了解,同时也会有自己的看法。
因为篇幅有限,文章并没有过多展开,如果有兴趣,可以在我的主页继续阅读,同时文末的参考资料提供了大量优秀文档以供学习。最后,欢迎大家点赞、评论、转发、收藏!
参考资料
https://github.com/kamranahmedse/driver.js
https://github.com/shipshapecode/shepherd
https://shepherdjs.dev/
https://driverjs.com/
http://introjs.com/
https://driverjs.com/docs/installation/
猜你喜欢
- 2025-07-07 行业大佬对AI编程的看法:应该用, 但AI仍需大量监督和校对
- 2025-07-07 每个开发者都应该知道的20个Git命令
- 2025-07-07 一键转化github开源仓库为交互式教程神器-Code2Tutorial
- 2025-07-07 7种解决Next.js中累积布局偏移(CLS)的方法
- 2025-07-07 纯前端轻量级的神经网络库brain.js
- 2025-07-07 前端工程师都会喜欢的5个JavaScript库
- 2025-07-07 5个可学习可二次开发的nextjs开源仓库
- 2025-07-07 一个即使是高级前端程序员也不知道的惊人小技巧
- 2025-07-07 取代JavaScript库的10个现代Web API及详细实施代码
- 2025-07-07 我会在每个项目中复制这10个JS代码片段
你 发表评论:
欢迎- 07-07使用AI开发招聘网站(100天AI编程实验)
- 07-07Tailwindcss 入门(tailwindcss中文文档)
- 07-07CSS 单位指南(css计量单位)
- 07-07CSS 定位详解(css定位属性的运用)
- 07-07程序员可以作为终身职业吗?什么情况下程序员会开始考虑转行?
- 07-07云和学员有话说:国企转行前端开发,斩获13K高薪!
- 07-0791年转行前端开发,是不是不该转,有啥风险?
- 07-07计算机图形学:变换矩阵(图形学 矩阵变换)
- 595℃几个Oracle空值处理函数 oracle处理null值的函数
- 587℃Oracle分析函数之Lag和Lead()使用
- 575℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 572℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 568℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 561℃【数据统计分析】详解Oracle分组函数之CUBE
- 548℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 541℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- 前端获取当前时间 (50)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)