Vue3网站用户引导功能【Intro.js】

一、介绍

Intro.js 是一个用于创建网站用户引导、功能介绍和教程的 JavaScript 库。它允许开发者通过步骤和提示突出显示网站上的特定元素,以帮助用户更好地了解和使用网站的功能。以下是 Intro.js 的一些关键特点和用法介绍:

更多Intro.js 功能网址:Intro.js Themes | Intro.js Docs

二、主要特点

  1. 用户引导: Intro.js 可以创建引导,引导用户在网站上执行特定的操作或了解关键功能。
  2. 步骤和提示: 可以定义引导中的每个步骤,并为每个步骤提供提示,包括标题、描述和位置。
  3. 高亮显示元素: Intro.js 允许高亮显示网站上的特定元素,使其在引导中更为突出。
  4. 导航按钮: 提供导航按钮,使用户能够在引导的步骤之间进行切换。
  5. 自定义样式: Intro.js 允许开发者自定义引导的样式,以匹配网站的设计风格。

三、代码实现

1.JS方式实现

(1)安装Intro.js插件

npm install intro.js --save // 使用npm安装

yarn add intro.js // 使用yarn安装

(2)引入Intro.js

import IntroJs from 'intro.js' // introjs库
import 'intro.js/introjs.css' // introjs默认css样式
// import 'intro.js/themes/introjs-modern.css' // introjs主题

(3)实现整体Vue引导

<template><div class="container"><div id="one">引导111111</div><div id="two">引导2222222</div></div><div id="finally">引导333333</div>
</template>
<script>
import IntroJs from 'intro.js' // introjs库
import 'intro.js/introjs.css' // introjs默认css样式
// import 'intro.js/themes/introjs-modern.css' // introjs主题
// introjs还提供了多种主题,可以通过以下方式引入
import 'intro.js/themes/introjs-dark.css' // introjs主题
import { nextTick, onMounted } from "vue";
export default {setup() {const initPageIntro = () => {// 引导图const allSteps = [{element: '#one', //这是添加引导的元素idintro: '引导一1111111111111111', //这是引导提示内容position: 'right' //这是引导位置},{element: '#two',intro: '引导二1111111111111111',position: 'left'},{element: '#finally',intro: '引导结束',position: 'top'}]const curIntro = IntroJs()curIntro.setOptions({prevLabel: `上一步`,nextLabel: `下一步`,skipLabel: `跳过`,doneLabel: `完成`,tooltipPosition: `bottom` /* 引导说明框相对高亮说明区域的位置 */,hidePrev: `true`, // 隐藏第一步中的上一个按钮tooltipClass: `` /* 引导说明文本框的样式 */,highlightClass: `` /* 说明高亮区域的样式 */,exitOnOverlayClick: false /* 是否允许点击空白处退出 */,showStepNumbers: false /* 是否显示说明的数据步骤*/,keyboardNavigation: false /* 是否允许键盘来操作 */,showButtons: true /* 是否按键来操作 */,showBullets: true /* 是否使用点点点显示进度 */,showProgress: false /* 是否显示进度条 */,scrollToElement: true /* 是否滑动到高亮的区域 */,overlayOpacity: 0.6 /* 遮罩层的透明度 */,positionPrecedence: [`bottom`, `top`, `right`, `left`] /* 当位置选择自动的时候,位置排列的优先级 */,disableInteraction: false, /* 是否禁止与元素的相互关联 */hintPosition: 'top-middle',steps: allSteps})curIntro.oncomplete(() => {// 点击结束按钮后执行的事件console.log(`oncomplete`)})curIntro.onexit(() => {// 点击跳过按钮后执行的事件console.log(`onexit`)})curIntro.onchange(() => {// 点击下一步执行的事件console.log(`onchange`)})curIntro.start()}onMounted(() => {nextTick(() => {initPageIntro()})})}
}
</script>

1.TS封装方式实现

 (1)安装Intro.js插件

npm install intro.js --save // 使用npm安装

yarn add intro.js // 使用yarn安装

(2)创建TS文件进行封装

import introJs from 'intro.js'
import 'intro.js/introjs.css' // introjs默认css样式  
// import 'intro.js/themes/introjs-modern.css' // introjs主题/*** @name: 新手指导* @param {String} pathname 当前页面的path* @param {Array} stepsArr 步骤内容(包括element、intro)* @return {*}*/
export function intro(pathname: any, stepsArr: any) {let guideObj = JSON.parse(localStorage.getItem('introCache')) || {}if (!guideObj[pathname]) {guideObj[pathname] = '1'localStorage.setItem('guide', JSON.stringify(guideObj))introJs().setOptions({prevLabel: "上一步",nextLabel: "下一步",skipLabel: "✕",doneLabel: "完成",tooltipPosition: "bottom" /* 引导说明框相对高亮说明区域的位置 */,hidePrev: "true", // 隐藏第一步中的上一个按钮tooltipClass: "" /* 引导说明文本框的样式 */,highlightClass: "" /* 说明高亮区域的样式 */,exitOnOverlayClick: false /* 是否允许点击空白处退出 */,showStepNumbers: false /* 是否显示说明的数据步骤*/,keyboardNavigation: false /* 是否允许键盘来操作 */,showButtons: true /* 是否按键来操作 */,showBullets: true /* 是否使用点点点显示进度 */,showProgress: false /* 是否显示进度条 */,scrollToElement: true /* 是否滑动到高亮的区域 */,overlayOpacity: 0.6 /* 遮罩层的透明度 */,positionPrecedence: ["bottom", "top", "right", "left"] /* 当位置选择自动的时候,位置排列的优先级 */,disableInteraction: false, /* 是否禁止与元素的相互关联 */hintPosition: 'top-middle',steps: stepsArr}).start()}
}

(3)代码实现

<template><div class="container"><div id="one">引导步骤1</div><div id="two">引导步骤2</div></div><div id="finally">引导结束3333</div>
</template>
<script setup  lang="ts">
import { intro } from "./introJs.ts"
import { nextTick, onMounted } from "vue";// 新手指导
const stepsArr = [{element: '#one', //这是添加引导的元素idintro: '引导步骤11111111111111111', //这是引导提示内容position: 'right' //这是引导位置
},
{element: '#two',intro: '步骤21111111111111111',position: 'left'
},
{element: '#finally',intro: '引导结束3333333',position: 'top'
}]
onMounted(() => {// nextTick(() => {// introTS(“路由”, “参数”) // 调用函数并传参intro(222221, stepsArr) // 调用函数并传参// })})</script>

额外:

可以提供其他的样式进行指引。可以直接导入下方样式路径即可。

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

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

相关文章

mac批量修改图片格式

1. 当前窗口在word文档&#xff0c;选择工具-》宏-》点击宏 2. 弹出弹框&#xff0c;起个宏名1&#xff0c;点击2添加一个宏。 输入以下代码&#xff1a; Sub 图片格式统一()图片格式统一 宏Dim iDim Height, WeightHeight 200 改成自己的高度Weight 350 改成自己的宽度On E…

STM32-GPIO

一、GPIO简介 GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出口 可配置8种输入输出模式 引脚电平&#xff1a;0V~3.3V&#xff0c;部分引脚可容忍5V 输出模式下&#xff1a;可控制端口输出高低电平&#xff0c;用以驱动LED、控制蜂鸣器、模拟通信协议输…

MIT_线性代数笔记:第 12 讲 图、网络、关联矩阵

目录 图和网络 Graphs & Networks关联矩阵&#xff08;Incidence matrices&#xff09;矩阵的零空间矩阵列空间矩阵的左零空间矩阵的行空间 本讲讨论线性代数在物理系统中的应用。 图和网络 Graphs & Networks “图”就是“结点”和“边”的一个集合。 边线上的箭头代…

力扣11.盛最多水的容器

题目描述 思路 用双指针法。 每次向内移动较短的那个板&#xff0c;能带来更大的效益。 代码 class Solution {public int maxArea(int[] height) {int res 0;int i 0,j height.length - 1;while(i < j){res height[i] < height[j] ? Math.max((j - i) * height…

2023.12.4 关于 Spring Boot 统一异常处理

目录 引言 统一异常处理 异常全部监测 引言 将异常处理逻辑集中到一个地方&#xff0c;可以避免在每个控制器或业务逻辑中都编写相似的异常处理代码&#xff0c;这降低了代码的冗余&#xff0c;提高了代码的可维护性统一的异常处理使得调试和维护变得更加容易&#xff0c;通…

[头歌系统数据库实验] 实验3 MySQL的DDL语言

目录 第1关&#xff1a;将P表中的所有红色零件的重量增加6 第2关&#xff1a;把P表中全部红色零件的颜色改成蓝色 第3关&#xff1a;将SPJ表中由S5供给J4的零件P6改为由S3供应 第4关&#xff1a;将SPJ表中所有天津供应商的QTY属性值减少11&#xff08;用子查询方式&#x…

云轴科技ZStack助力彬长矿业建设智能矿山

陕西彬长矿业集团有限公司&#xff08;简称彬长矿业&#xff09;选择云轴科技ZStack智能矿山云解决方案建设云基础设施&#xff1a;ZStackCube超融合一体机部署在西咸云基地机房构建私有云资源池&#xff0c;ZStackCMP多云管理平台对西咸云基地机房以及各矿井生产服务中心资源进…

【每日OJ —— 94. 二叉树的中序遍历】

每日OJ —— 94. 二叉树的中序遍历 1.题目&#xff1a;94. 二叉树的中序遍历2.解法2.1.算法讲解2.2.代码实现2.3.提交通过展示 1.题目&#xff1a;94. 二叉树的中序遍历 2.解法 2.1.算法讲解 1.首先如果在每次每个节点遍历的时候都去为数组开辟空间&#xff0c;这样的效率太低…

quickapp_快应用_快应用与h5交互

快应用与h5交互 h5跳转到快应用[1] 判断当前环境是否支持组件跳转快应用[2] h5跳转到快应用(1)deeplink方式进行跳转(推荐)(2)h5点击组件(接收参数存在问题)(3)url配置跳转(官方不推荐) 问题-浏览器问题 web组件h5页面嵌入快应用快应用发送消息到h5页面h5页面接收快应用发送的消…

网络安全(三)-- 网络嗅探及协议分析技术

目标 了解网络嗅探的基本含义了解tcpdump工具的基本用法掌握tcpdump工具抓包保存到文件的方法熟悉wireshark工具的基本用法掌握借助wireshark抓包工具分析简单网络协议的方法 6.1. 概述 网络嗅探是一种常用的数据收集、分析的方法: 黑客常通过网络嗅探获取主机或网络的控制权…

Python智能语音识别语翻译平台|项目后端搭建

Python程序设计基础&#xff0c;第三方库Django、requests、hashlib、pyttsx3等的使用&#xff0c;百度API语音识别业务接口、文本朗读业务接口、翻译业务接口的传入。 01、任务实现步骤 任务描述&#xff1a;本任务利用Django框架搭建智能语音识别与翻译平台的后端&#xff0…

ULAM公链第九十六期工作总结

迈入12月&#xff0c;接下来就是雪花&#xff0c;圣诞&#xff0c;新年和更好的我们&#xff01;愿生活不拥挤&#xff0c;笑容不必刻意&#xff0c;愿一切美好如期而至&#xff01; 2023年11月01日—2023年12月01日关于ULAM这期工作汇报&#xff0c;我们通过技术板块&#xff…

CentOS中安装数据库

1.下载 网址&#xff1a;https://dev.mysql.com/downloads/mysql/ 按如图选择&#xff0c;然后点击Download 这里它让我们登录&#xff0c;我们直接选择不登录&#xff0c;直接下载 2.关闭防火墙 systemctl disable firewalld3.正式安装 切换到/usr/local下 cd /usr/l…

Java数据结构之《哈希查找》(难度系数75)

一、前言&#xff1a; 这是怀化学院的&#xff1a;Java数据结构中的一道难度中等的一道编程题(此方法为博主自己研究&#xff0c;问题基本解决&#xff0c;若有bug欢迎下方评论提出意见&#xff0c;我会第一时间改进代码&#xff0c;谢谢&#xff01;) 后面其他编程题只要我写完…

luceda ipkiss教程 39:修改版图text字体的粗细

通过修改font的line_width就可以修改版图中text字体的粗细&#xff1a; 代码如下&#xff1a; from si_fab import all as pdk import ipkiss3.all as i3class demo(i3.PCell):class Layout(i3.LayoutView):def _generate_elements(self, elems):elems i3.PolygonText(layer…

上海亚商投顾:沪指再度失守3000点 两市超4600只个股下跌

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数昨日全线调整&#xff0c;沪指再度失守3000点关口&#xff0c;创业板指尾盘跌近2%&#xff0c;北证50…

轨道交通故障预测与健康管理PHM系统的应用

轨道交通是现代城市中不可或缺的交通方式&#xff0c;它为人们提供了快速、高效和可靠的出行方式。然而&#xff0c;由于轨道交通系统的复杂性和高负荷运行&#xff0c;设备故障和运营中断问题时有发生。为了提高轨道交通系统的可靠性和安全性&#xff0c;故障预测与健康管理&a…

nacos启动报错 java.lang.RuntimeException: [db-load-error]load jdbc.properties error

以standalone mode sh startup.sh -m standalone 为例子 启动nacos 报错&#xff1a; Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcatat org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(To…

Siemens-NXUG二次开发-打开与关闭prt文件[Python UF][20231206]

Siemens-NXUG二次开发-打开与关闭prt文件[Python UF][20231206] 1.python uf函数1.1 NXOpen.UF.Part.Open1.2 NXOpen.UF.Part.LoadStatus1.3 NXOpen.UF.Part.Close1.4 NXOpen.UF.Part.AskUnits 2.示例代码3.运行结果3.1 内部模式3.2 外部模式 1.python uf函数 1.1 NXOpen.UF.P…

财报解读:立足海外音视频直播战场,欢聚的BIGO盾牌还需加强?

如今&#xff0c;音视频社交平台出海早已不是新鲜事&#xff0c;随着时间推移&#xff0c;一批“坚定全球化不动摇”的企业也实现突围&#xff0c;站在出海舞台中心。 若提到中国企业出海范本&#xff0c;欢聚集团定是绕不开的存在。作为最早一批出海的中国互联网企业&#xf…