vue-introjs实现网站引导功能

2023-10-29

说明

本文首发地址:vue-introjs实现网站引导功能

效果展示

静态

image-20220213124704018

动态演示

introgif

相关技术

  • vue-2.5.2
  • intro.js-5.0.0

intro.js的一分钟入门说明

intro.js是一个提供了新手引导相关功能的js库,使用呢也很简单,给你想要加入引导说明的html元素上加入data-intro属性,并赋值,然后在script中调用introJs().start()方法,刷新页面就行了;

更多内容请参考官网教程,这个库很容易上手:https://introjs.com/docs/examples/basic/hello-world

vue项目中使用intro.js

安装

我是通过npm安装的

npm install intro.js --save

当然也支持其他方式安装,可以参考官网:https://introjs.com/docs/getting-started/install

配置

  1. 在项目的main.js中,引入intro.js库和相关样式文件

    import intro from 'intro.js' // introjs库
    import 'intro.js/introjs.css' // introjs默认css样式
    // introjs还提供了多种主题,可以通过以下方式引入
    import 'intro.js/themes/introjs-modern.css' // introjs主题
    
  2. intro.js加入到vueprototype中,方便使用,就可以直接通过this.$intro()来调用了

    // 加到prototype中,直接通过vue实例就能调用intro了
    Vue.prototype.$intro = intro
    

    关于prototype的说明:https://cn.vuejs.org/v2/cookbook/adding-instance-properties.html

使用

  1. 选定一个html标签,加上data-intro属性,赋值内容,以下面为例

    <img data-intro="这是一张普通的图片" data-step="1" src="./assets/logo.png">
    

    data-step是展示的步骤设置,填写数字即可

  2. script中,加入mounted方法,启动intro

    mounted () {
       this.$intro().start()
    },
    
  3. 刷新页面即可看到效果

    image-20220213131251753

一些问题

只首次进入的时候显示引导

新手引导一般只有我们第一次进入这个网站的时候才会出现引导内容,后续都不会再显示,我们这里如何实现?

可以通过localstorge来存储一个key,来判断用户是否是第一次进入这个网站,只需要在引导启动时候加个判断就行,代码如下:

mounted () {
    this.$nextTick(() => {
      if (localStorage.getItem('isFirst') === null || localStorage.getItem('isFirst') !== '1') {
        this.$intro().start()
        localStorage.setItem('isFirst', 1)
      }
    })
  },

如果是v-for循环出来的元素,我们咋显示引导内容呢?

解决办法就是封装一个v-intro-if指令,在循环中判断,指定条件的显示引导内容即可

main.js中加入以下代码:

// 封装一个v-intro-if指令,这样就可以在循环中展示符合特定条件的引导了
Vue.directive('intro-if', {
  bind: function (el, binding) {
    if (binding.value === false) {
      delete el.dataset.intro
      delete el.dataset.hint
    }
  }
})

关于vue自定义指令:https://cn.vuejs.org/v2/guide/custom-directive.html

demo源代码

上述案例源码地址:https://github.com/hczs/vue-introjs-example

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue-introjs实现网站引导功能 的相关文章

随机推荐

  • csv文件的读与写

    csv文件的读取与写入 1 csv文件的读取 import pandas as pd csv path dataA1 csv df pd read csv csv path 可以通过csv文件的表头读取出某一列 表头见下图 print it
  • 理解inode

    inode是一个重要概念 是理解Unix Linux文件系统和硬盘储存的基础 我觉得 理解inode 不仅有助于提高系统操作水平 还有助于体会Unix设计哲学 即如何把底层的复杂性抽象成一个简单概念 从而大大简化用户接口 下面就是我的ino
  • 华为OD机试真题-基站维护最短距离 【2023.Q1】

    参考代码 小王是一名基站维护工程师 负责某区域的基站维护 某地方有n个基站 1
  • Android中的签名和签名文件的生成过程

    一 概述 二 还是从Key Store和keytool说起吧 三 数字签名和数字证书 四 apk的签名过程 五 签名中 MANIFEST MF CERT SF和 CERT RSA是怎么生成的 1 MANIFEST MF 2 CERT SF
  • QT日志系统创建,读取,修复

    一 内容简介 构建QT日志系统 遇到的问题以及结局办法 读取日志文件 用于检查程序运行情况 并且修复异常数据 二 软件环境 2 1 QT 5 14 1 新版QT6 4 6 5在线安装经常失败 而5 9版本又无法编译64位程序 所以就采用5
  • 巧用千寻位置GNSS软件

    千寻位置GNSS软件中的CAD功能 用于已有 CAD的图形的导入和编辑 并且可以对 CAD图形已有线条进行线放样 在日常测绘工作中十分常见 下面向各位介绍CAD功能的使用技巧 点击 测量 gt CAD 进入 CAD功能如图 5 3 1所示
  • 显卡无法为此计算机,如何解决win10系统电脑中无法安装intel显卡驱动的问题

    如何解决win10系统电脑中无法安装intel显卡驱动的问题 腾讯视频 爱奇艺 优酷 外卖 充值4折起 在使用win10系统电脑的时候 如果我们想要安装intel显卡驱动 却提示无法安装的话 应如何处理呢 接下来就由小编来告诉大家 一 手动
  • CentOS7(Linux)安装总结

    主要参考以下文章 CentOS7 Linux 详细安装教程 图文详解 缄默 給 傷的博客 CSDN博客 linuxcentos7安装步骤https blog csdn net weixin 43849575 article details
  • Mutex内核同步机制详解

    一 Mutex锁简介 在linux内核中 互斥量 mutex 即mutual exclusion 是一种保证串行化的睡眠锁机制 和spinlock的语义类似 都是允许一个执行线索进入临界区 不同的是当无法获得锁的时候 spinlock原地自
  • 使用VNC远程桌面Ubuntu【内网穿透实现公网远程】

    文章目录 前言 1 ubuntu安装VNC 2 设置vnc开机启动 3 windows 安装VNC viewer连接工具 4 内网穿透 4 1 安装cpolar 支持使用一键脚本命令安装 4 2 创建隧道映射 4 3 测试公网远程访问 5
  • 【深度学习】 Python 和 NumPy 系列教程(十五):Matplotlib详解:2、3d绘图类型(1):线框图(Wireframe Plot)

    目录 一 前言 二 实验环境 三 Matplotlib详解 1 2d绘图类型 2 3d绘图类型 0 设置中文字体 1 线框图 Wireframe Plot 一 前言 Python是一种高级编程语言 由Guido van Rossum于199
  • Qt事件过滤器

    有时候 对象需要查看 甚至要拦截发送到另外对象的事件 例如 对话框可能想要拦截按键事件 不让别的组件接收到 或者要修改回车键的默认处理 通过前面的章节 我们已经知道 Qt 创建了 QEvent 事件对象之后 会调用 QObject 的 ev
  • dll 导出函数名的那些事

    经常使用VC6的Dependency查看DLL导出函数的名字 会发现有DLL导出函数的名字有时大不相同 导致不同的原因大多是和编译DLL时候指定DLL导出函数的界定符有关系 VC 支持两种语言 即C C 这也是造成DLL导出函数差异的根源
  • 2019年,iOS开发的你准备何时跳槽?

    序言 我相信很多人都在说 iOS行业不好了 iOS现在行情越来越难了 失业的人比找工作的人还要多 失业即相当于转行 跳槽即相当于降低自己的身价 那么做iOS开发的你 你是否在时刻准备着跳槽或者转行了 我们先看一下现在iOS行业 iOS程序员
  • 人脸修复祛马赛克算法CodeFormer——C++与Python模型部署

    一 人脸修复算法 1 算法简介 CodeFormer是一种基于AI技术深度学习的人脸复原模型 由南洋理工大学和商汤科技联合研究中心联合开发 它能够接收模糊或马赛克图像作为输入 并生成更清晰的原始图像 算法源码地址 https github
  • Qt5 项目文件.pro参数详解

    qmake的概念 qmake是用来为不同的平台的开发项目创建makefile的一个工具 qmake简化了makefile的生成 因此创建一个makefile只需要几行信息的文件 qmake可以供任何一个软件项目使用 而不用管他是不是使用Qt
  • C/C++Java生成指定长度随机字符串的三种方法

    学习 实验记录 也是方便自己以后查找 目录 两种实现思路 第一种实现思路 随机数转char 第二种思路 随机数取字符 C语言 使用char数组 C语言 使用char C 使用string类 Java通过字符数组或字符串方式 两种实现思路 C
  • Android OnTouchListener自定义 onTouch完全解析

    做android开发对touch事件是要清晰明了的 如果心存疑问 那么本博客 可以帮你清晰的屡清楚源码是如果实现 onLongClickListener onDoubleClickListener onClickListener 并且再次基
  • Python遍历多个列表:ValueError: too many values to unpack (expected 2)

    项目场景 在进行列表遍历的时候 希望同时遍历多个列表 问题描述 在使用循环遍历两个列表时 希望x y各自获取到数组a b里全部的元素 却产生了意料之外的报错 ValueError too many values to unpack expe
  • vue-introjs实现网站引导功能

    文章目录 说明 效果展示 静态 动态演示 相关技术 intro js 的一分钟入门说明 在 vue 项目中使用 intro js 安装 配置 使用 一些问题 只首次进入的时候显示引导 如果是 v for 循环出来的元素 我们咋显示引导内容呢