intro.js结合vue3使用引导页

860 阅读4分钟

上一篇我们说到了 driver.js 结合vue3使用引导页,现在再来介绍一个另外的插件叫 intro.js,也特比简单容易使用~

intro.js 是一个用于创建引导或教程的JavaScript库,它提供了简洁的方法来标识页面元素并为它们提供上下文信息。这可以帮助用户更好地理解应用的功能和界面。以下是一些关于 intro.js 的基本信息和使用方法:

主要特性

  1. 引导步骤:可以定义多个步骤,每个步骤可以指定对应的元素和需要展示的提示信息。
  2. 自定义选项:支持多种选项配置,包括按钮文本、进度条显示、样式配置等。
  3. 导航控制:用户可以通过“下一步”、“上一步”等按钮浏览引导,甚至可以选择跳过整个引导。
  4. 自定义样式:可以通过 CSS 类自定义提示框的样式。
  5. 键盘控制:支持使用键盘快捷键来操作引导,比如使用 Esc 键退出。

使用方式

直接参考官方文档配置案例即可:文档地址

效果演示

组件代码

<template>
  <div>
    <h1 ref="title">欢迎使用我的应用</h1>
    <button ref="startButton" @click="startTour">开始引导</button>
    <p>这里是一些说明文本。</p>
    <div ref="feature" data-intro="这是一个重要的功能。">
      这是一个重要的功能。
    </div>
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue'
import introJs from 'intro.js'
import 'intro.js/introjs.css' // 引入 intro.js 的样式

const title = ref(null)
const startButton = ref(null)
const feature = ref(null)

const startTour = () => {
  const intro = introJs()

  intro.setOptions({
    prevLabel: '上一步',
    nextLabel: '下一步',
    skipLabel: '跳过',
    doneLabel: '开始使用',
    // 当前引导页只展示一次,设置dontShowAgain:true即可,默认提示语是英文的,dontShowAgainLabel可自定义设置,之后不在展示,会用cookie存储判断,可设置 名称及有效期
    dontShowAgain: true,
    dontShowAgainLabel: '当前引导页提示后,不在显示',
    tooltipClass: 'intro-tooltip' /* 引导说明文本框的样式 */,
    exitOnEsc: true /* 是否使用键盘Esc退出 */,
    exitOnOverlayClick: false /* 是否允许点击空白处退出 */,
    keyboardNavigation: true /* 是否允许键盘来操作 */,
    showBullets: false /* 是否显示小圆点 */,
    showStepNumbers: true /* 是否显示数字 */,
    showProgress: false /* 是否显示进度条 */,
    scrollToElement: true /* 是否滑动到高亮的区域 */,
    overlayOpacity: 0.65, // 遮罩层的透明度 0-1之间
    positionPrecedence: [
      'bottom',
      'top',
      'right',
      'left',
    ] /* 当位置选择自动的时候,位置排列的优先级 */,
    disableInteraction: true /* 是否禁止与元素的相互关联 */,
    hidePrev: false /* 是否在第一步隐藏上一步 */,
    hideNext: false /* 是否在最后一步隐藏下一步 */,
    steps: [
      {
        element: title.value,
        intro: '这是应用的标题。',
      },
      {
        element: startButton.value,
        intro: '点击此按钮开始引导。',
      },
      {
        element: feature.value,
        intro: '这是一个重要功能的说明。',
      },
    ],
  })

  intro.start() // 开始引导
}
</script>

可配置属性

export interface Options {
    steps: Partial<IntroStep>[]; // 定义引导的每一步
    hints: Partial<HintStep>[]; // 提供针对某些元素的提示
    isActive: boolean; // 指示引导是否处于激活状态
    nextLabel: string; // 定义“下一步”按钮的文本
    prevLabel: string; // 定义“上一步”按钮的文本
    skipLabel: string; // 定义“跳过”按钮的文本
    doneLabel: string; // 定义“完成”或“开始使用”按钮的文本
    hidePrev: boolean; // 控制是否在第一步隐藏“上一步”按钮
    hideNext: boolean; // 控制是否在最后一步隐藏“下一步”按钮
    nextToDone: boolean; // 在最后一步时“下一步”按钮是否显示为“完成”
    tooltipPosition: string; // 设置提示框显示的位置(例如:“top”、“bottom”等)
    tooltipClass: string; // 自定义提示框的 CSS 类名
    group: string; // 将步骤分组的名称
    highlightClass: string; // 自定义高亮元素的 CSS 类名
    exitOnEsc: boolean; // 是否允许按 Esc 键退出引导
    exitOnOverlayClick: boolean; // 是否允许点击覆盖层退出引导
    showStepNumbers: boolean; // 控制是否在提示中显示步骤编号
    stepNumbersOfLabel: string; // 定义步骤编号的标签文本
    keyboardNavigation: boolean; // 是否允许使用键盘导航
    showButtons: boolean; // 控制是否显示按钮
    showBullets: boolean; // 控制是否显示步骤的圆点指示符
    showProgress: boolean; // 控制是否显示进度条
    scrollToElement: boolean; // 是否在高亮元素时滚动到其位置
    scrollTo: ScrollTo; // 自定义滚动行为配置
    scrollPadding: number; // 滚动到元素时的边距
    overlayOpacity: number; // 设置覆盖层的透明度(0-1之间)
    autoPosition: boolean; // 是否自动调整提示框的位置
    positionPrecedence: TooltipPosition[]; // 提示框位置的优先级数组
    disableInteraction: boolean; // 是否禁用与页面元素的交互
    dontShowAgain: boolean; // 是否显示“下次不再显示”选项
    dontShowAgainLabel: string; // “下次不再显示”选项的标签文本
    dontShowAgainCookie: string; // 存储用户选择的 cookie 名称
    dontShowAgainCookieDays: number; // “下次不再显示”选项的 cookie 有效天数
    helperElementPadding: number; // 帮助元素周围的内边距
    hintPosition: HintPosition; // 设置提示的显示位置
    hintButtonLabel: string; // 提示按钮的标签文本
    hintShowButton: boolean; // 控制是否显示提示按钮
    hintAutoRefreshInterval: number; // 提示自动刷新的时间间隔
    hintAnimation: boolean; // 控制提示是否显示动画效果
    buttonClass: string; // 自定义按钮的 CSS 类名
    progressBarAdditionalClass: boolean; // 是否给进度条添加额外的 CSS 类名
}

都这么详细了你还不会用?好了 引导的两个插件类同就分享到这吧~多一个选择多一条路!!!