vue使用driver.js引导并自定义样式和按钮

news2024/10/7 15:22:20

参考网址https://driverjs.com/docs/installation 

安装

npm install driver.js

以下是1.3.1版本的基本使用方法

import { driver } from 'driver.js'
import 'driver.js/dist/driver.css'
mounted() {
    // 实例化driver对象
    const driverObj = driver({
      showProgress: true,
      steps: [
        { element: '.title', popover: { title: 'Title', description: 'Description' } },
        { element: '.desc', popover: { title: 'Title', description: 'Description' } }
      ]
    })
    driverObj.drive()
}

展示效果

常用属性及方法:

overlayColor: 'red', //遮罩颜色

 显示哪个按钮,不要哪个就去掉,全不显示赋值为['']

showButtons: [
    'next',
    'previous',
    'close'
 ],

改变按钮文字

nextBtnText: '下一步',
prevBtnText: '上一步',
doneBtnText: '完成',

 改变样式

//js部分
popoverClass: 'customer-popover',

//css部分
.customer-popover {
  .driver-popover-next-btn {
    color: #1583f8;
  }
}

onNextClick (点击下一步按钮触发)

注意:调用此方法,点击下一步按钮不会自动执行,需要手动调用driverObj.moveNext();

onNextClick: () => {
    console.log('Next Button Clicked')
    // Implement your own functionality here
    driverObj.moveNext()
},

onPrevClick(点击上一步按钮触发)

注意:调用此方法,点击上一步按钮不会自动执行,需要手动调用driverObj.movePrevious();

onPrevClick: () => {
    console.log('Previous Button Clicked')
    // Implement your own functionality here
    driverObj.movePrevious()
},

onCloseClick(点击关闭按钮触发)

注意:调用此方法,点击关闭按钮不会自动关闭,需要手动调用driverObj.destroy();

onCloseClick: () => {
    console.log('Close Button Clicked')
    // Implement your own functionality here
    driverObj.destroy()
},

onDestroyStarted(退出引导时触发)

注意:调用此方法,点击其他区域不会自动关闭,需要手动调用driverObj.destroy();

 onDestroyStarted: () => {
    if (!driverObj.hasNextStep() || confirm("Are you sure?")) {
      driverObj.destroy();
    }
  },

自定义按钮

onPopoverRender: (popover, { config, state }) => {
        const firstButton = document.createElement('button')
        firstButton.innerText = 'Go to First'
        popover.footerButtons.appendChild(firstButton)

        firstButton.addEventListener('click', () => {
          driverObj.drive(0)
        })
},

完整配置

const driverObj = driver({
      showProgress: true,
      overlayColor: 'red', //遮罩颜色
      steps: [
        {
          element: '.title',
          popover: {
            title: '星标',
            description: '点击 Star 按钮可以星标这个作品,在我的主页可以查看我星标过的作品'
          }
        },
        {
          element: '.desc',
          popover: { title: '运行', description: '点击 Run 按钮可以运行这个作品' }
        }
      ],
      showButtons: ['next', 'previous'],
      nextBtnText: '下一步',
      prevBtnText: '上一步',
      doneBtnText: '完成',
      popoverClass: 'customer-popover',
      onPopoverRender: (popover, { config, state }) => {
        const firstButton = document.createElement('button')
        firstButton.classList.add('pass-btn')
        firstButton.innerText = '跳过'
        popover.footerButtons.appendChild(firstButton)
        firstButton.addEventListener('click', () => {
          console.log(666)
          driverObj.destroy()
        })
      },
      onNextClick: () => {
        console.log('Next Button Clicked')
        // Implement your own functionality here
        driverObj.moveNext()
      },
      onPrevClick: () => {
        console.log('Previous Button Clicked')
        // Implement your own functionality here
        driverObj.movePrevious()
      },
      onCloseClick: () => {
        console.log('Close Button Clicked')
        // Implement your own functionality here
        driverObj.destroy()
      },
      onDestroyStarted: () => {
        console.log('onDestroyStarted is called when the user tries to exit the tour')
        driverObj.destroy()
      }
})
driverObj.drive()

<style>
.customer-popover {
  min-width: 360px;
  max-width: 500px;
  padding: 22px;
  .driver-popover-next-btn,
  .driver-popover-prev-btn,
  .pass-btn {
    color: #fff;
    background-color: #2774e9;
    border-color: #2774e9;
    height: 32px;
    padding: 0 15px;
    font-size: 16px;
    border-radius: 6px;
    text-shadow: inherit;
    &:hover,
    &:focus {
      background-color: #2774e9;
    }
  }
  .driver-popover-description {
    margin-bottom: 20px;
    margin-top: 20px !important;
  }
}
</style>

修改样式后展示效果

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

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

相关文章

MQTT 5.0 报文解析 05:DISCONNECT

欢迎阅读 MQTT 5.0 报文系列 的第五篇文章。在上一篇中&#xff0c;我们已经介绍了 MQTT 5.0 的 PINGREQ 和 PINGRESP 报文。现在&#xff0c;我们将介绍下一个控制报文&#xff1a;DISCONNECT。 在 MQTT 中&#xff0c;客户端和服务端可以在断开网络连接前向对端发送一个 DIS…

Java 循环嵌套深度揭秘:挑战极限与性能优化

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 探索Java的调用栈极限 在Java中&#xff0c;方法调用是通过栈&#xff08;Stack&#xff09;这种数据结构来实现的。每当一个方法被调用时&#xff0c;一个新的栈帧&#xff08;Stack Frame&#xff09;会被创建并压…

MT3042 这项目我小码哥投了

代码 1.暴力7/15&#xff1a; #include <bits/stdc.h> using namespace std; typedef long long ll; const int N 5e6 10; int n, m; char mp[1005][1005]; int main() {cin >> n >> m;for (int i 1; i < n; i){for (int j 1; j < m; j){cin >…

【设计模式深度剖析】【A】【创建型】【对比】| 工厂模式重点理解产品族的概念

回 顾&#xff1a;创建型设计模式 1.单例模式&#x1f448;️ 2.工厂方法模式&#x1f448;️ 3.抽象工厂模式&#x1f448;️ 4.建造者模式&#x1f448;️ 5.原型模式&#x1f448;️ &#x1f448;️上一篇:原型模式 | &#x1f449;️下一篇:代理模式 目录…

2024年失业率狂飙18.1%,史上最难就业季即将来临,该如何逆袭?_2024年失业潮

【2024年被称为最难就业年&#xff0c;1158万大学生面临难题】 距离2024年毕业季还剩不到4个月&#xff0c;毕业学员将面临空前严峻的就业压力&#xff01;具国家统 计局的数据显示&#xff0c;1-2月份&#xff0c;16至24岁年轻人的失业率飙到18.1%&#xff0c;也就是说&…

WordPress建站公司模板免费下载

WordPress建站公司 适合提供WordPress建站服务的公司或个体(个人)工作室使用的WordPress建站公司主题模板。 演示 https://www.jianzhanpress.com/?p545 https://www.wpicu.com/jianzhan/ 下载 链接: https://pan.baidu.com/s/11trlwUJq_lW81R_acq4ilA 提取码: r19i

【华为】BFD与静态路由和RIP联用

【华为】BFD与静态路由和RIP联用 实验需求配置AR1AR2AR3AR4效果抓包查看 实验需求 如上图组网所示&#xff0c;在R1上配置到达R4的Loopback0。 4.4.4.4/32网段的浮动静态路由&#xff0c;正常情况下通过R3访问R4。 当R3故障时&#xff0c;自动选路通过R2访问R4的Loopback0;在R…

免费发布web APP的四个途径(Python和R)

免费发布数据分析类&#x1f310;web APP的几个途径&#x1f4f1; 数据分析类web APP目前用来部署生信工具&#xff0c;统计工具和预测模型等&#xff0c;便利快捷&#xff0c;深受大家喜爱。而一个免费的APP部署途径&#xff0c;对于开发和测试APP都是必要的。根据笔者的经验…

基于地理坐标的高阶几何编辑工具算法(6)——合并相离面

文章目录 工具步骤应用场景算法输入算法输出算法示意图算法原理 工具步骤 选中一个面&#xff0c;点击“合并相离面”工具&#xff0c;绘制一个面&#xff0c;与其他面相交&#xff0c;双击结束后。 应用场景 用于将相离的两个同类型几何面进行合并。 算法输入 待合并的面…

基础编程函数题

1.简单输出整数&#xff1a;本题要求实现一个函数&#xff0c;对给定的正整数N&#xff0c;打印从1到N的全部正整数。 #include <stdio.h> void PrintN ( int N ); int main () { int N; scanf("%d", &N); PrintN( N ); return 0; } void Prin…

温故而知新-Java基础篇【面试复习】

温故而知新-Java基础篇【面试复习】 前言版权推荐温故而知新-基础篇【面试】解决hash冲突的方法try catch finallyException与Error的包结构OOM你遇到过哪些情况&#xff0c;SOF你遇到过哪些情况线程有哪些基本状态?Java IO与 NIO的区别堆和栈的区别对象分配规则notify()和not…

记录踩坑事件 分页查询order by出现重复数据bug

MySQL排序小坑_mysql order by name相同导致排序混乱-CSDN博客 1、问题描述 列表页分页查询出现重复数据。 2、问题排查 排查最终执行sql日志。 select * from tableA where (start_time>2024-04-17 00:00:00) AND (start_time<2024-05-18 00:00:00) ORDER BY sta…

Fastjson漏洞之CVE-2017-18349

前言&#xff1a; 要想理解漏洞原理&#xff0c;首先看看Fastjson是什么&#xff0c;具体用来做什么才能更好的找到可以利用的场景&#xff1a; Fastjson 是一个由阿里巴巴开发的 Java 语言实现的高性能 JSON 解析器和生成器。它具有以下特点: 快速&#xff1a;Fastjson 在序列…

CR80清洁卡都能用在什么地方?

CR80清洁卡&#xff08;也被称为ISO 7810 ID-1清洁卡&#xff09;的规格确实使其在各种需要读取磁条或接触式智能卡的设备中都有广泛的用途。这些设备包括但不限于&#xff1a; ATM自动终端机&#xff1a;当ATM机的磁条读卡器出现故障或读卡不灵敏时&#xff0c;可以使用CR80清…

rabbitMQ本地启动快捷方式

%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c ""%~s0"" ::","","runas",1)(window.close)&&exit COLOR A TITLE 运行RabbitMQ%comspec% /k "C:\Prog…

How to limit request by IP on nginx?

/etc/nginx/conf.d/default.conf 1.Define a limit_req_zone # 定義限流區塊 limit_req_zone $binary_remote_addr zonelimit_zone:10m rate2r/s; limit_req_zone $binary_remote_addr zonelimit_zone:10m rate2r/s; 是一个 Nginx 配置指令&#xff0c;用于定义请求限制区域和…

express.js--生成token(二)

主要作用是访问路由接口时&#xff0c;生成身份权限信息 下载依赖 npm i express-jwt npm i jsonwebtoken 配置管理 config/index.js module.exports {app: {port: process.PORT || 3000,//jwt密钥jwtSecret: jwtSecret,//token过期时间expiresIn: 60 * 60 * 24,} } con…

拼多多暂时超越阿里成为电商第一

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 拼多多的财报又炸裂了&#xff1a; 拼多多发布了第一季度财报&#xff0c;营收868亿&#xff0c;增长了131%&#xff0c;净利润279亿&#xff0c;增长了246%&#xff0c;营销服务收入424亿&#xff0c;也就是商家的…

大语言模型的工程技巧(二)——混合精度训练

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 混合精度训练的示例请参考如下链接&#xff1a;regression2chatgpt/ch11_llm/gpt2_lora_optimum.ipynb 本文将讨论如何利用混合…

windows ssh客户端mobaxterm密码登录到debian12 openssh服务器

1&#xff0c;在debian12生成公钥、秘钥 ssh-keygen -t rsa ~/.ssh/id_rsa 是秘钥&#xff0c;要放到windows的&#xff08;这里先不要放&#xff0c;等转换一下再放&#xff09;&#xff1b; ~/.ssh/id_rsa.pub 是公钥&#xff0c;放在debian12本地就好了&#xff0c; 顺…