溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

vue中怎么使用Intro.js實現(xiàn)用戶指引功能

發(fā)布時間:2022-11-30 09:17:04 來源:億速云 閱讀:227 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下vue中怎么使用Intro.js實現(xiàn)用戶指引功能的相關(guān)知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

什么是Intro.js

Intro.js 是一個開源的 Javascript / CSS 庫,用于添加分步介紹或提示。具備如下優(yōu)點:

  • 無依賴:不需要其他任何依賴項。

  • 小且快:文件體積小,引導(dǎo)過程流暢。其中,JavaScript文件的整體大小為10KB, CSS為2.5KB。

  • 用戶友好:提供了多個主題,可根據(jù)個人喜好選擇使用。

  • 瀏覽器兼容性:兼容所有主流的瀏覽器,包括:Chrome、Firefox、Opera、Safari和IE瀏覽器。

  • 文檔完善:文檔中包含了要介紹的每個元素的內(nèi)容及示例。

API  &  options

Intro.js可以實現(xiàn)tour(顯式指引)和hint(隱式指引)兩種用戶指引形式(注:這兩種譯法是筆者自己取的,僅用于區(qū)分?。。。?/p>

其中,顯示指引更傾向于是對功能的簡要介紹,其效果如下圖所示,通常是由遮罩層、選中的頁面元素、指引信息彈窗等共同組成。

vue中怎么使用Intro.js實現(xiàn)用戶指引功能

隱式指引,則像是一種操作式的引導(dǎo),鼓勵用戶參與其中,邊學(xué)邊用,其默認(rèn)效果如下圖所示,提示用戶點擊指定元素,隨后會顯示相應(yīng)的提示信息或進入下一步操作等。

vue中怎么使用Intro.js實現(xiàn)用戶指引功能

vue中怎么使用Intro.js實現(xiàn)用戶指引功能

這兩種形式的用法核心在于選擇元素并預(yù)設(shè)指引信息。因此,本文將主要介紹tour的用法,hint的使用方法可以觸類旁通,參考tour的用法及 官方文檔中的demo 后可以輕松上手,便不在此贅述。

Tour API

Intro.js官方提供了很多Tour API,這里僅針對最常用的基礎(chǔ)API做介紹,完整的API介紹可查看官方API文檔。

introJs([targetElm])

用于創(chuàng)建一個 introJs 的對象,可選參數(shù) targetElm 是一個字符串類型,指開始指引的特定元素,例如:“#intro-farm”。

introJs.start()

開始介紹定義的元素,即就是開始用戶指引。

introJs.setOptions(options)

為已創(chuàng)建的 introJs 對象設(shè)置一組選項。參數(shù) options 是一個對象類型,包括了指引中的所有信息,如:按鈕顯示文字、遮罩層透明度、提示文本等。

Tour options

常用option如下:

  • nextLabel:下一個的按鈕文字

  • prevLabel:上一個按鈕文字

  • skipLabel:跳過指引的按鈕文字

  • doneLabel:完成按鈕的文字

  • hidePrev:是否在第一步中隱藏“上一步”按鈕;不隱藏,將呈現(xiàn)為一個禁用的按鈕

  • hideNext:是否在最后一步中隱藏“下一步”按鈕(同時會隱藏完成按鈕);不隱藏,將呈現(xiàn)為一個禁用的按鈕

  • exitOnEsc:點擊鍵盤的ESC按鈕是否退出指引

  • exitOnOverlayClick:點擊遮罩層時是否退出介紹

  • showStepNumbers:是否顯示步驟編號

  • disableInteraction:是否禁用高亮顯示框內(nèi)元素的交互

  • showBullets:是否顯示面板的指示點

  • overlayOpacity:遮罩層的透明度 0-1之間

  • helperElementPadding:選中的指引元素周圍的填充距離

  • steps:引導(dǎo)框內(nèi)的相關(guān)參數(shù)配置,具體配置見下文

上述部分字段對應(yīng)的內(nèi)容如下圖所示,更多完整options可查看 官方文檔。

vue中怎么使用Intro.js實現(xiàn)用戶指引功能

其中,doneLable 只會在最后一步指引中出現(xiàn),會占據(jù) nextLabel 的位置,因此,如果 hideNext 置為true時,最后一步中 nextLabeldoneLabel 均會被隱藏。

helperElementPadding 是圖中高亮區(qū)域中白色邊框部分(為區(qū)分該字段對應(yīng)區(qū)域,這里特意給所選元素一個粉色的背景色)。

安裝

Intro.js沒有任何依賴項,只需要安裝intro.js即可。

  • 使用npm:

npm install intro.js --save
  • 使用yarn

yarn add intro.js
  • Git

git clone https://github.com/usablica/intro.js.git

使用

方式一

如果用戶指引內(nèi)容比較簡單并且固定,可以直接將屬性寫在html標(biāo)簽中,并調(diào)用introJs().start()。主要屬性如下:

  • data-title:標(biāo)題文字

  • data-intro:提示信息內(nèi)容

  • data-step:步驟的編號(優(yōu)先級)

  • data-tooltipClass:為提示定義CSS類

  • data-highlightClass:將CSS類附加到helperLayer

  • data-position:提示的位置,默認(rèn)是bottom

  • data-scrollTo:滾動到的元素,element或tooltip。默認(rèn)值為element。

  • data-disable-interaction:是否禁用與突出顯示的框內(nèi)的元素的交互

<template>
    <div data-title="Welcome!" data-intro="Hello World!">
        hello!
    </div>
</template>

<script>
import introJs from "intro.js"; // 引入intro.js
import "intro.js/introjs.css"; // intro.js的基礎(chǔ)樣式文件

export default {
    mounted () { 
        this.$nextTick(() => { 
            // Intro.js掃描頁面并找到所有具有“data intro”屬性的元素
            introJs().start();
        }) 
    }
}
</script>

方式二

當(dāng)頁面需要配置較多步驟或有特殊化配置時,可以采用第二種種方式。需要在JSON中自定義配置,即通過使用API -- introJs.setOptions(options)。

1、封裝introConfig.js

實際使用過程中,可能會有多個場景需要做用戶指引。為避免重復(fù)多次配置一些基礎(chǔ)的選項內(nèi)容,可以將基礎(chǔ)項封裝到一個公共的文件introConfig.js中,文件內(nèi)容如下:

// src/utils/introConfig.js

import introJs from "intro.js";
import "intro.js/introjs.css"; // intro.js的基礎(chǔ)樣式文件
import "intro.js/themes/introjs-modern.css"; // 主題樣式文件

const intro = introJs();

intro.setOptions({
  nextLabel: "下一步", // 下一個的按鈕文字
  prevLabel: "上一步", // 上一個按鈕文字
  skipLabel: "跳過", // 跳過指引的按鈕文字
  doneLabel: "完成", // 完成按鈕的文字
  hidePrev: false, // 是否在第一步中隱藏“上一步”按鈕;不隱藏,將呈現(xiàn)為一個禁用的按鈕
  hideNext: false, // 是否在最后一步中隱藏“下一步”按鈕(同時會隱藏完成按鈕);不隱藏,將呈現(xiàn)為一個禁用的按鈕
  exitOnEsc: false, // 點擊鍵盤的ESC按鈕是否退出指引
  exitOnOverlayClick: false, // 點擊遮罩層時是否退出介紹
  showStepNumbers: false, // 是否顯示步驟編號
  disableInteraction: true, // 是否禁用高亮顯示框內(nèi)元素的交互
  showBullets: true, // 是否顯示面板的指示點
  overlayOpacity: 0.7, // 遮罩層的透明度 0-1之間
  helperElementPadding: 10, // 選中的指引元素周圍的填充距離
});

export default intro;

另外,Intro.js官方總共提供了6個不同的主題:Classic、Royal、Nassim、Nazanin、Dark、Modern,各主題的顯示效果可在 官網(wǎng)查看。默認(rèn)使用的是Classic,如果想使用其他主題,需引入 “intro.js/themes” 文件下對應(yīng)的css文件,如下圖。這里我用的是 “introjs-modern.css”。

vue中怎么使用Intro.js實現(xiàn)用戶指引功能

2、引入配置文件

在需要添加用戶指引的文件中引入introConfig.js文件:

import intro from "@/utils/introConfig.js";

3、配置指引步驟并啟動

在具體的使用文件中,通過 setOptions 的 steps屬性配置指引步驟,它是數(shù)組類型,每一項都對應(yīng)一個指引步驟,其中的字段含義如下:

element:定位到相應(yīng)的元素位置,如果不設(shè)置,則默認(rèn)展示在屏幕中央

title:指引彈窗的標(biāo)題

intro:指引彈窗的文本內(nèi)容,可插入html內(nèi)容

示例如下:

methods: {
    guide() {
        intro.setOptions({
            steps: [
              {
                element: document.querySelector('#step1'), // 定位到相應(yīng)的元素位置,如果不設(shè)置element,則默認(rèn)展示在屏幕中央
                title: 'Welcome', // 標(biāo)題
                intro: 'Hello World! ?' // 內(nèi)容
              },
              {
                element: document.querySelector('#step2'),
                intro: '有關(guān)如何配置/自定義該項目的指南和方法,請查看vue-cli文檔。'
              },
              {
                element: document.querySelector('#step3'),
                intro: '已安裝的cli插件'
              },
              {
                element: document.querySelector('#step4'),
                intro: '基本鏈接'
              },
              {
                element: document.querySelector('#step5'),
                intro: '生態(tài)系統(tǒng)'
              },
              {
                title: "開始體驗吧!",
                intro: `<img src="interesting.GIF" alt="" style="width: 100%;margin: auto" class="specialImg"/>`
              },
            ]
      });
      this.$nextTick(() => {
        intro.start();
      })
    }
},
mounted() {
    this.$nextTick(() => {
        this.guide();
    })
}

上述代碼中,guide() 方法里配置了指引步驟和開始指引;并在 mounted 生命周期中調(diào)用 guide() 方法以展示指引內(nèi)容。需要注意的是,為確保指引信息在原始頁面渲染完畢后調(diào)用,需要在 $nextTick() 中調(diào)用 guide() 方法。

4、Demo效果

本demo僅用作講解如何使用Intro.js,并未修改原始樣式,比較簡陋,還請包涵,實際使用時需要根據(jù)實際需要自定義樣式。點擊查看demo代碼,效果如下圖:

vue中怎么使用Intro.js實現(xiàn)用戶指引功能

注意事項
  • 必須在原始頁面渲染完畢后再加載intro.js

    如果原始界面沒有完全渲染完畢,可能存在intro.js無法找到指定元素的情況,可通過this.$nextTick()解決

  • 實際使用中可能存在一些復(fù)雜的交互場景,可借助一些API來解決

    introJs.onexit(providedCallback):退出用戶指引時觸發(fā) introJs.onchange(providedCallback):步驟改變時觸發(fā) introJs.onbeforechange(providedCallback):步驟改變前觸發(fā) introJs.onafterchange(providedCallback):步驟改變后觸發(fā)

  • 如果現(xiàn)有主題無法滿足需求,可以通過設(shè)置tooltipClass來自定義樣式

以上就是“vue中怎么使用Intro.js實現(xiàn)用戶指引功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI