推荐一个页面引导库 driver_js

news2024/11/21 0:14:42

推荐一个页面引导库 driver.js

页面引导功能是 web 开发中常见的一个功能。通过页面引导功能,你可以让用户第一时间熟悉你的页面功能。今天给大家推荐一个页面引导库 driver.js。

1 简介

driver.js 是一款用原生 js 实现的页面引导库,上手非常简单,体积在 gzip 压缩下仅仅 5kb。

我们来看下如何使用 driver.js

import { driver } from "driver.js";
import "driver.js/dist/driver.css";

const driverObj = driver({
  showProgress: true,
  steps: [
    { element: '.page-header', popover: { title: 'Title', description: 'Description' } },
    { element: '.top-nav', popover: { title: 'Title', description: 'Description' } },
    { element: '.sidebar', popover: { title: 'Title', description: 'Description' } },
    { element: '.footer', popover: { title: 'Title', description: 'Description' } },
  ]
});

driverObj.drive()

可以看到仅仅十几行代码,你就可以完成页面引导功能的编写。

  1. 首先引入 driver.js 库及其 css 文件
  2. 然后调用 driver 函数构造一个 driverObj 对象,通过 steps 参数编写你的引导步骤,element 为需要高亮的 DOM 元素或 DOM 对应的 CSS 选择器
  3. 最后调用 driverObj 的 drive 方法开启页面引导

让我们来看下效果:

1.gif

2 简单体验

接下来我们自己上手体验下,先来看下最终实现的效果。

2.gif

<p>《I LOVE YOU TOO》。漫画作者 CHOW HON LAM,马来西亚漫画家、插画家。</p>
<div>
  <button id="story1">故事1</button>
</div>
<div id="tour1" class="tour">
  <img width="500" height="auto" src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5efaea22e8794a31afe9f238109e6a90~tplv-k3u1fbpfcp-watermark.image?" />
  <div class="crocodile1"></div>
  <div class="koala1"></div>
</div>

html 内容包括一个开始按钮和漫画区域内容。

#tour1 {
  position: relative;
  display: none;
  margin-top: 32px;
}

.crocodile1 {
  position: absolute;
  left: 245px;
  top: 35px;
  width: 140px;
  height: 130px;
}

.koala1 {
  position: absolute;
  left: 145px;
  top: 130px;
  width: 100px;
  height: 30px;
}

样式这块主要是将要高亮的区域定位出来。

const driver = window.driver.js.driver;

$('#story1').click(() => {
  $('#tour1').css('display', 'inline-block')
  const driverObj = driver({
    showProgress: true,
    allowClose: false,
    steps: [
      { element: '.crocodile1', popover: { description: '这里有一只鳄鱼', side: "left", align: 'start' } },
      { element: '.koala1', popover: { description: '这里有三只考拉', side: "bottom", align: 'start' } },
      { element: '#tour1', popover: { description: '这是他们的故事《另一把雨伞》', side: "bottom", align: 'start' } }
    ]
  });
  driverObj.drive()
})

最后使用 driver.js 完成引导步骤编写即可。

3 主题定制

driver.js 支持主题定制功能,你可以修改企气泡卡片的样式。

主题定制有支持两种方式

  • 初始化时传入 popoverClass,基于这个类名调整气泡卡片的样式
const driverObj = driver({
  popoverClass: 'my-custom-popover-class'
})

// 气泡卡片各个元素的 class
.driver-popover {}
.driver-popover-arrow {}
.driver-popover-title {}
.driver-popover-description {}
.driver-popover-close-btn {}
.driver-popover-footer {}
.driver-popover-progress-text {}
.driver-popover-prev-btn {}
.driver-popover-next-btn {}
  • 直接修改气泡弹窗的 DOM 元素,在 onPopoverRender 这个钩子中进行操作
const driverObj = driver({
  onPopoverRender: (popover, { config, state }) => {
    const firstButton = document.createElement("button");
    firstButton.innerText = "Go to First";
    popover.footerButtons.appendChild(firstButton);

    firstButton.addEventListener("click", () => {
      driverObj.drive(0);
    });
  },
  steps: [
    // ..
  ]
})

上述代码在底部按钮区域加了个“返回第一页”的按钮。

最后看下效果:

3.gif

4 小结

driver.js 简单易上手,同时支持所有主流浏览器,也支持移动端展示。除了页面引导外,这个库也支持简单地对一个元素进行高亮,突出你想展示的内容。

最后 driver.js 支持很多配置能力,更多可以到官网查看示例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1017321.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

远程连接PostgreSQL:配置指南与安全建议

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

UDP/TCP 最大可传输单元细节可不少~

一、MTU 简述 - 分包后数据包最大长度 1、定义 Maximum Transmission Unit&#xff08;最大可传输单元&#xff09; 的缩写&#xff0c;它的单位是字节。在 *数据链路层* 定义 一个数据包穿过一个大的网络&#xff0c;它其间会穿过多个网络&#xff0c;每个网络的 MTU 值是不…

探索Adobe Photoshop 2024:新功能与增强功能详解

Adobe Photoshop 2024&#xff0c;这款传奇的图像编辑软件&#xff0c;近期又迎来了一些令人振奋的新特性。对于专业设计师和摄影爱好者来说&#xff0c;Photoshop 的每次更新都牵动着他们的心。那么&#xff0c;这次的新版本究竟带来了哪些值得我们期待的功能呢&#xff1f;且…

GDB之打印函数堆栈(十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

Mysql002:(库和表)操作SQL语句

目录&#xff1a; 》SQL通用规则说明 SQL分类&#xff1a; 》DDL&#xff08;数据定义&#xff1a;用于操作数据库、表、字段&#xff09; 》DML&#xff08;数据编辑&#xff1a;用于对表中的数据进行增删改&#xff09; 》DQL&#xff08;数据查询&#xff1a;用于对表中的数…

获取spring容器中的bean实例

在开发过程中&#xff0c;我们可能需要动态获取spring容器中的某个bean的实例&#xff0c;此时我们就会用到ApplicationContext spring应用上下文&#xff0c;这里做一下记录&#xff0c;网上很多类似的的工具类。 先写好工具类再测试一下是否好用 工具类&#xff1a; packag…

CLIP 基础模型:从自然语言监督中学习可转移的视觉模型

一、说明 在本文中&#xff0c;我们将介绍CLIP背后的论文&#xff08;Contrastive Language-I mage Pre-Training&#xff09;。我们将提取关键概念并分解它们以使其易于理解。此外&#xff0c;还对图像和数据图表进行了注释以澄清疑问。 图片来源&#xff1a; 论文&#xff1a…

关于 Qt串口不同电脑出现不同串口号打开失败 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/132842297 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

8. 工厂方法模式

一 典型工厂方法模式&#xff08;Factory Method&#xff09;结构图 二 典型工厂模式实现 测试代码 #include <iostream> using namespace std;class Product{ public:string name;virtual void show(){cout << "我是:";} }; class Desk : public Produ…

LeetCode 热题 100(九):回溯复习。77. 组合、17. 电话号码的字母组合、39. 组合总和

题目一&#xff1a; 77. 组合 思路&#xff1a; 思路&#xff1a;回溯算法。使用回溯三部曲进行解题&#xff1a; 1.递归函数的返回值以及参数&#xff1a;n&#xff0c;k&#xff0c;startIndex(记录每次循环集合从哪里开始遍历的位置)&#xff0c;其中startIndex 就是防止…

【管理运筹学】第 8 章 | 动态规划(1,多阶段决策过程与动态规划基本概念)

文章目录 引言一、多阶段决策过程及实例二、动态规划的基本概念和方法2.1 动态规划的基本概念 写在最后 引言 倒回来学动态规划&#xff0c;网络计划和排队论先放到后面吧。 动态规划是解决多阶段决策过程最优化问题的一种方法。该方法由美国数学家贝尔曼等人在 20 世纪 50 年…

网安之python基础作业(2-3)

目录 目录 前言 系列文章列表 网安之python基础学习作业(1) 思维导图 1&#xff0c;网安之python基础学习作业(2) 1.1,作业一: 1.1.1,题目 1.1.2,题解 1.2&#xff0c;作业二: 1.2,1,题目 1.2.2,题解 2&#xff0c;网安之python基础学习作业(3) 2.1,作业1 2.1…

【面向对象的三大基本特征与五大基本原则】

文章目录 面向对象的三大基本特征与五大基本原则一、三大基本特征&#xff1a;封装、继承、多态1、封装2、继承3、多态 二、五大基本原则1、单一职责原则&#xff08;SRP&#xff09;2、开放封闭原则&#xff08;OCP&#xff09;3、里氏替换原则&#xff08;LSP&#xff09;4、…

免费:CAD批量转PDF工具,附下载地址

分享一款CAD 批量转PDF、打印的工具插件。能自动识别图框大小、自动识别比例、自动编号命名。重点&#xff01;重点&#xff01;重点&#xff01;自动将CAD的多张图纸一次性地、批量地转为PDF&#xff0c;或者打印。效果看下图&#xff1a; 适用环境&#xff1a; 32位系统 Auto…

前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— JS基础(二)

人生是旷野&#xff0c;不是轨道。 思维导图 一、运算符 1.1 赋值运算符 1.2 一元运算符 1.3 比较运算符 1.4 逻辑运算符 逻辑与&#xff0c;一假则假 逻辑或&#xff0c;一真则真 <!DOCTYPE html> <html lang"en"><head><meta charset&quo…

李沐机器学习入门

文章目录 1.数据的获取2.数据的爬取3.数据的标注3.1 半监督学习3.1.1 自学习算法3.1.2 人工标注数据3.1.3 弱监督学习 4.数据的预处理5. 数据的清理6. 数据的变换7.特征工程8.机器学习介绍8.1 决策树模型8.2 线性模型线性模型做回归线性模型做分类Softmax回归 8.3 小批量随机梯…

线性代数基础-行列式

一、行列式之前的概念 1.全排列&#xff1a; 把n个不同的元素排成一列&#xff0c;称为n个元素的全排列&#xff0c;简称排列 &#xff08;实际上就是我们所说的排列组合&#xff0c;符号是A&#xff0c;arrange&#xff09; 2.标准序列&#xff1a; 前一项均小于后一项的序列…

输入学生成绩,函数返回最大元素的数组下标,求最高分学生成绩(输入负数表示输入结束)

scanfscore()函数用于输入学生的成绩 int scanfscore(int score[N])//输入学生的成绩 {int i -1;do {i;printf("输入学生成绩:");scanf("%d", &score[i]);} while (score[i] > 0);return i; } findmax()用于寻找最大值 int findmax(int score[N…

【Spring】BeanName 的自动生成原理

&#x1f388;博客主页&#xff1a;&#x1f308;我的主页&#x1f308; &#x1f388;欢迎点赞 &#x1f44d; 收藏 &#x1f31f;留言 &#x1f4dd; 欢迎讨论&#xff01;&#x1f44f; &#x1f388;本文由 【泠青沼~】 原创&#xff0c;首发于 CSDN&#x1f6a9;&#x1f…

华为云云耀云服务器L实例评测|搭建Domain Admin环境监控公司网站的SSL证书,实现到期提醒

本文基于华为云云耀云服务器L实例下的场景体验开源软件Domain Admin的安装部署&#xff0c;实现SSL证书的到期提醒 目录 1、购买华为云耀云服务器L实例2、登录服务器2.1、重置密码2.2、连接服务器 3、安装Domain Admin3.1、检查Python3.2、检查pip3.3、安装Domain Admin3.4、启…