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

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

简介

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 方法开启页面引导

让我们来看下效果:
请添加图片描述

简单体验

接下来我们自己上手体验下,先来看下最终实现的效果。
请添加图片描述

<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://wzy-picture.oss-cn-beijing.aliyuncs.com/images/p118850804-3.jpg" />
  <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 完成引导步骤编写即可。

主题定制

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: [
    // ..
  ]
})

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

最后看下效果:
请添加图片描述

小结

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

driver.js 除了上述的示例外,还支持很多配置能力,更多可以到官网查看示例。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于Nerf

从事3D图形学已经十年有余&#xff0c;以前主要关注在跨平台高效渲染方面&#xff0c;在2021年遇到Nerf的时候&#xff0c;就对其爱不释手&#xff0c;翻看到了2020年的第一篇论文&#xff0c;然后就一直跟踪最新的&#xff0c;发现真是个热门方向&#xff0c;论文层出不断&…

IntelliJ IDEA使用学习

一、安装教程 网上自行下载&#xff0c;CSDN不然过审二、使用教程 2.1 快捷键操作与设置 设置 Setting——>按键映射——>选择顺手的系统快捷键 编写代码 CtrlShift Enter&#xff0c;语句完成。 “&#xff01;”&#xff0c;否定完成&#xff0c;输入表达式时按 …

drools开源规则引擎介绍以及在Centos上的具体部署方案,让你的业务规则能够独立于应用程序本身

Drools是一个基于Java的开源规则引擎&#xff0c;用于处理业务规则和复杂事件处理。它提供了一个声明性的规则语言&#xff0c;允许开发人员定义业务规则&#xff0c;并通过引擎执行这些规则。以下是Drools规则引擎的简介和一些应用场景描述。 Drools规则引擎简介 规则引擎概述…

如何在C#中读取USB转串口参数并显示在ComboBox

如何在C#中读取USB转串口参数并显示在ComboBox 在很多应用程序中&#xff0c;尤其是那些需要与外部硬件通信的程序中&#xff0c;自动检测和读取串口参数是一个非常有用的功能。在本文中&#xff0c;我们将讨论如何在C#中实现这一功能&#xff0c;重点是如何自动识别通过USB转换…

SQL Server 数据类型

文章目录 一、文本类型&#xff08;字母、符号或数字字符的组合&#xff09;二、整数类型三、精确数字类型四、近似数字&#xff08;浮点&#xff09;类型五、日期类型六、货币类型七、位类型八、二进制类型 一、文本类型&#xff08;字母、符号或数字字符的组合&#xff09; 在…

单元测试之Stub和Mock

实例 Analyze类会检查filename的长度&#xff0c;如果小于8&#xff0c;我们就会使用一个实现IWebService的类来记录错误. 我们需要给Analyze方法写单元测试。 public class LogAnalyzer {private IWebService service;private IEmailService email;public IWebService Serv…

20240116使用Firefly的AIO-3399J的预编译的Android10固件确认RT5640声卡信息

20240116使用Firefly的AIO-3399J的预编译的Android10固件确认RT5640声卡信息 2024/1/16 17:55 百度&#xff1a;RK3399 ALC5640 RK3399 RT5640 BING&#xff1a;RK3399 ALC5640 LINE-IN接麦克风不会有声音的。 耳机只有右边有声音&#xff0c;但是偏小&#xff0c;可以通过音量…

Python pip install 也能踩坑!

难得有心情、空余时间上手 Scrapy&#xff0c;前一段时间看到一个很好的免费壁纸网站&#xff0c;想着下手爬取看看&#xff0c;反正还有一个 500G 的硬盘在吃灰&#xff0c;用于存放美图不是不可以。也是很久没接触 Scrapy&#xff0c;上一次使用还是上一次&#xff0c;先准备…

软件测试|解决Github port 443 : Timed out连接超时的问题

前言 GitHub是全球最大的开源代码托管平台之一&#xff0c;许多开发者和团队使用它来管理和协作开源项目。但在当下&#xff0c;我们在clone或者提交代码时会经常遇到"GitHub Port 443: Timed Out"错误&#xff0c;这意味着我们的电脑无法建立与GitHub服务器的安全连…

redis之单线程和多线程

目录 1、redis的发展史 2、redis为什么选择单线程&#xff1f; 3、主线程和Io线程是怎么协作完成请求处理的&#xff1f; 4、IO多路复用 5、开启redis多线程 1、redis的发展史 Redis4.0之前是用的单线程&#xff0c;4.0以后逐渐支持多线程 Redis4.0之前一直采用单线程的主…

【PyTorch】在PyTorch中使用线性层和交叉熵损失函数进行数据分类

在PyTorch中使用线性层和交叉熵损失函数进行数据分类 前言&#xff1a; 在机器学习的众多任务中&#xff0c;分类问题无疑是最基础也是最重要的一环。本文将介绍如何在PyTorch框架下&#xff0c;使用线性层和交叉熵损失函数来解决分类问题。我们将以简单的Iris数据集作为起点…

Linux 批量添加 known_hosts

前言 我们在做完linux ssh 免密登录后&#xff0c;通常会执行一些自动化任务&#xff08;比如启动Spark集群&#xff09;&#xff0c;也就是需要ssh到每台节点执行相同命令。但是有一个问题就是如果 known_hosts 文件中不存在这个ip的话&#xff0c;在第一次连接时会弹出确认公…

【小笔记】算法基础超参数调优思路

【学而不思则罔&#xff0c;思维不学则怠】 9.29 本文总结一下常见的一些超参数调优思路 Batch_size 2023.9.29 简单来说&#xff0c;较大的bz可以加快训练速度&#xff0c;特别是基于GPU进行模型训练时&#xff0c;应该在显存允许范围内&#xff0c;尽量使用较大的bz。两个…

超实用+全覆盖!17个大分类,近500款主流实用精品AI工具导航,太贴心了!总有一款适合你。

超实用全覆盖&#xff01;17个大分类&#xff0c;近500款主流实用精品AI工具导航&#xff0c;太贴心了&#xff01;总有一款适合你。 大家好&#xff01;我是老码农。 今天给大家分享的这个工具导航&#xff1a;非常棒。 那棒在哪里呢&#xff1f; 第1点&#xff1a;非常垂…

SpringAOP-说说 Spring AOP 和 AspectJ AOP 区别

Spring AOP Spring AOP 属于运行时增强&#xff0c;主要具有如下特点&#xff1a; 基于动态代理来实现&#xff0c;默认如果使用接口的&#xff0c;用 JDK 提供的动态代理实现&#xff0c;如果是方法则使用 CGLIB 实现Spring AOP 需要依赖 IOC 容器来管理&#xff0c;并且只能…

IOS-相机权限申请-Swift

配置描述 在Info.plist文件中&#xff0c;新建一个键值对Privacy - Camera Usage Description&#xff08;或者NSCameraUsageDescription&#xff09;&#xff0c;值为申请描述说明&#xff0c;自定义的 申请 然后在需要申请的文件中导入AVFoundation import AVFoundation…

nodejs学习计划--(一)初始nodejs

1. 介绍nodejs Node.js是什么&#xff1f; Node.js是一个开源的&#xff0c;跨平台的Javascript运行环境 通俗来讲&#xff1a;Node.js就是一款应用程序&#xff0c;是一款软件&#xff0c;它可以运行JavaScript Node.js的作用&#xff1a; 开发服务器应用开发工具类应用开发…

美国 SEC 批准比特币现货 ETF 上市,SEC 告诉我们的风险包含哪些?

撰文&#xff1a;Will 阿望 查看原文&#xff1a;美国 SEC 批准比特币现货 ETF 上市&#xff0c;SEC 告诉我们的风险包含哪些&#xff1f; 历经十年的 BTC ETF 艰辛审批之路终于迎来了胜利的曙光&#xff0c;2024 年 1 月 11 日凌晨 4 时&#xff0c;美国证监会&#xff08;S…

浅谈Vue中监听属性—watch监听器的使用方法

目录 &#x1f4a1; 监听属性的概念 &#x1f4a1; watch有什么作用 &#x1f4a1; watch的基本语法 &#x1f4a1; 监听属性的优缺点 &#x1f4a1; 使用watch的场景 &#x1f4a1; 监听属性的概念 在计算机科学中&#xff0c;watch是一种调试技术&#xff0c;用于监视程…

【SQL】SQL语法小结

相关资料 参考链接1&#xff1a;SQL 语法&#xff08;超级详细&#xff09; 参考链接2&#xff1a;史上超强最常用SQL语句大全 SQL练习网站&#xff1a;CSDN、牛客、LeetCode、LintCode SQL相关视频&#xff1a; 推荐书籍&#xff1a; 文章目录 数据分析对SQL的要求SQL语法简介…