1.0.5 • Published 1 year ago

vue-js-driver v1.0.5

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

vue-js-driver

npm GitHub top language GitHub file size in bytes NPM

基于driver.js封装的vue2版轻量级新手引导库

✨ 特性

  • 🚀 简单轻量
  • 💪 高度可定制
  • ✋ 阻止用户交互
  • ⌨️ 支持键盘控制
  • 👏 突出显示任何内容
  • 🆓 开源版本支持免费商用
  • 🌀 所有主流浏览器表现一致

🎬 在线体验

Live Demo

demo.gif

📦 安装

npm install vue-js-driver
yarn add vue-js-driver
pnpm add vue-js-driver

👉 快速上手

引入

// main.js全局引入 或 HelloWorld.vue组件内引入
import Vue from 'vue';

import vueJsDriver from 'vue-js-driver';
import driverConfig from '@/config/driverConfig.js';

Vue.use(vueJsDriver, driverConfig);

配置Driver

// driverConfig.js
export default {
  className: '', // 包裹Driver弹窗的类名,避免css作用域污染
  allowClose: false, // 是否允许点击遮罩时关闭
  opacity: 0, // 背景透明度,`0` 表示只弹窗无遮罩
  padding: 0, // 元素与边缘的距离
  stageBackground: 'transparent', // 高亮元素的背景颜色
  prevBtnText: '上一步->', // 当前步骤上一步按钮的文本
  nextBtnText: '下一步->', // 当前步骤下一步按钮的文本
  closeBtnText: '关闭x', // 当前步骤关闭按钮的文本
  doneBtnText: '完成√', // 最后一个按钮的文本
  showButtons: false // 是否显示底部的控制按钮
  ...
}

配置步骤

// steps.js
export default {
  homeSteps: [ // 首页步骤
    {
      element: '#welcome', // 高亮的元素,内部通过querySelector获取元素,还可通过DOM的方法获取,例如document.getElementById('welcome')
      popover: {
          title: '这是标题', // 弹窗的标题,为空则不显示,注:支持HTML
          description: '这是描述', // 弹窗的主体内容,注:支持HTML
          position: 'right', // 弹窗显示的位置
      },
      padding: 25 // 弹窗与高亮元素的内边距,会扩大高亮元素的宽/高
      ...
      // 更多配置:https://github.com/kamranahmedse/driver.js/blob/master/src/index.js
    }
  ],
  otherSteps: [], // 其他页面步骤
  ...
}

使用

<!-- HelloWorld.vue -->
<template>
  <div class="hello">
    <h1 id="welcome">{{ msg }}</h1>
    <p class="description">
      For a guide and recipes on how to configure / customize this project,<br>
      check out the
      <a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
    </p>
    <h3 @click="showDriver">显示引导Show Demo</h3>
    <h3 @click="highSingleElement">突出单个元素</h3>
    <h3 @click="highSingleElement2">突出单个元素(含配置)</h3>
  </div>
</template>

<script>
import steps from '../steps.js';

export default {
  props: {
    msg: String
  },
  methods: {
    showDriver () {

      // 通过$vueJsDriver来调用,1代表跳转到第二步,不传默认跳转至第一步
      this.$vueJsDriver.showDriver(steps.homeSteps, 1);
    },
    highSingleElement () {
      this.$sfDriverJs.highlight('#welcome');
    },
    highSingleElement2 () {
      this.$sfDriverJs.highlight({
        element: '#welcome',
        popover: {
          title: 'Title for the Popover',
          description: 'Description for it',
          position: 'bottom',
          offset: 20
        }
      });
    }
  },
  ...
}

API

Driver选项

参数说明类型/回调参数可选值默认值
className包裹Driver弹窗的类名stringvue-js-driver
animate是否开启过渡动画booleantrue
opacity背景透明度,0 表示只弹窗无遮罩number0-10.75
padding元素与边缘的距离number10
allowClose是否允许点击遮罩时关闭booleantrue
overlayClickNext是否允许点击遮罩时移动到下一步booleanfalse
stageBackground高亮元素的背景颜色string#ffffff
doneBtnText最后一个按钮的文本string完成
closeBtnText当前步骤关闭按钮的文本string关闭
nextBtnText当前步骤下一步按钮的文本string下一步
prevBtnText当前步骤上一步按钮的文本string上一步
showButtons是否显示底部的控制按钮booleantrue
keyboardControl是否允许键盘控制,Esc关闭、操作键(←上一步、→下一步)用于移动booleantrue
scrollIntoViewOptionsscrollIntoView() 方法的选项objectnull
onHighlightStarted元素即将高亮时调用function(element){}
onHighlighted元素完全高亮时调用function(element){}
onDeselected取消选择时调用function(element){}
onReset遮罩将要关闭时调用function(element){}
onNext任何步骤中移动到下一步时调用function(element){}
onPrevious任何步骤中移动到上一步时调用function(element){}

Step步骤选项

参数说明类型/回调参数可选值默认值
element需高亮的选择器字符或Node,内部通过querySelector获取元素,还可通过DOM的方法获取string/Node
stageBackground高亮元素的背景颜色string#ffffff
padding弹窗与高亮元素的内边距,会扩大高亮元素的宽/高number
onNext从当前步骤移动到下一步时调用function(element){}
onPrevious从当前步骤移动到上一步时调用function(element){}
popover弹窗的配置项,具体参考以下选项,注:为空不会显示弹窗object
className除了Driver选项中的通用类名称之外,还可以指定包裹当前指定步骤弹窗的类名string''
title弹窗的标题,为空则不显示,注:支持HTMLstring
description弹窗的主体内容,注:支持HTMLstring
position弹窗的位置stringleft, left-center, left-bottom, top, top-center, top-right, right, right-center, right-bottom,bottom, bottom-center, bottom-right, mid-centerbottom
offset弹窗的平移距离,如弹窗在高亮元素下方,offet控制左右位移,margin控制上下number可负数
margin弹窗与高亮元素的外边距number可负数
padding弹窗与高亮元素的内边距number可负数
showButtons是否显示底部的控制按钮booleantrue
doneBtnText最后一个按钮的文本stringDone
closeBtnText当前步骤关闭按钮的文本stringClose
nextBtnText当前步骤下一步按钮的文本stringNext
prevBtnText当前步骤上一步按钮的文本stringPrevious

方法

事件名称说明参数
showDriver启用Driver(steps, index)steps所有步骤的参数,index开始高亮的索引
isActivated检查Driver是否激活,注:非事件,为Driver的属性true激活,false未激活
defineSteps设置要高亮显示的步骤数据(steps)高亮步骤的数组
start启用引导(stepNumber)开始高亮的位置,默认为0
moveNext移动到步骤列表中的下一步
movePrevious移动到步骤列表中的上一步
hasNextStep检查是否有可移动到的下一步的元素
hasPreviousStep检查是否有可移动到的上一步的元素
preventMove阻止当前移动,如果要执行某些异步任务并手动移动到下一步,则在onNextonPrevious中很有用
highlight使用查询选择器或步骤定义高亮显示的元素(string|stepDefinition)查询选择器或步骤数据
refresh重新定位弹出窗口和突出显示的元素
reset重置遮罩并且清屏(immediate)立即重置,不要动画,默认为false
hasHighlightedElement检查是否有高亮元素
const activeElement = $vueJsDriver.getHighlightedElement()获取当前高亮元素
activeElement.getCalculatedPosition获取当前高亮元素的坐标
activeElement.hidePopover隐藏弹窗
activeElement.showPopover显示弹窗
activeElement.getNode获取当前高亮元素后面的DOM元素
const lastActiveElement = $vueJsDriver.getLastHighlightedElement()获取最后一个高亮元素

您可以使用各种选项来实现您可能想要的任何选择

🔑 License

MIT

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago