当前位置:首页 > VUE

vue 实现引导页面

2026-02-18 22:08:00VUE

Vue 实现引导页面的方法

使用 vue-tour 插件

安装 vue-tour 插件:

npm install vue-tour

在 main.js 中引入并注册:

import Vue from 'vue'
import VueTour from 'vue-tour'

Vue.use(VueTour)
require('vue-tour/dist/vue-tour.css')

在组件中使用:

vue 实现引导页面

<template>
  <div>
    <v-tour name="myTour" :steps="steps"></v-tour>
    <button @click="$tours['myTour'].start()">Start Tour</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      steps: [
        {
          target: '#element1',
          content: 'This is the first step'
        },
        {
          target: '#element2',
          content: 'This is the second step'
        }
      ]
    }
  }
}
</script>

使用 driver.js 库

安装 driver.js:

npm install driver.js

在组件中使用:

vue 实现引导页面

<template>
  <div>
    <button @click="startTour">Start Tour</button>
  </div>
</template>

<script>
import Driver from 'driver.js'
import 'driver.js/dist/driver.min.css'

export default {
  methods: {
    startTour() {
      const driver = new Driver()
      driver.defineSteps([
        {
          element: '#element1',
          popover: {
            title: 'Title',
            description: 'Description',
            position: 'bottom'
          }
        },
        {
          element: '#element2',
          popover: {
            title: 'Title',
            description: 'Description',
            position: 'top'
          }
        }
      ])
      driver.start()
    }
  }
}
</script>

自定义实现引导页面

创建引导组件:

<template>
  <div v-if="isActive" class="tour-overlay">
    <div class="tour-step" :style="stepStyle">
      <div class="tour-content">
        <h3>{{ currentStep.title }}</h3>
        <p>{{ currentStep.content }}</p>
        <button @click="nextStep">Next</button>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  props: {
    steps: Array,
    isActive: Boolean
  },
  data() {
    return {
      currentIndex: 0
    }
  },
  computed: {
    currentStep() {
      return this.steps[this.currentIndex]
    },
    stepStyle() {
      const element = document.querySelector(this.currentStep.target)
      if (element) {
        const rect = element.getBoundingClientRect()
        return {
          top: `${rect.top}px`,
          left: `${rect.left}px`,
          width: `${rect.width}px`,
          height: `${rect.height}px`
        }
      }
      return {}
    }
  },
  methods: {
    nextStep() {
      if (this.currentIndex < this.steps.length - 1) {
        this.currentIndex++
      } else {
        this.$emit('complete')
      }
    }
  }
}
</script>

<style>
.tour-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.5);
  z-index: 9999;
}
.tour-step {
  position: absolute;
  box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.5);
}
.tour-content {
  position: absolute;
  background: white;
  padding: 20px;
  border-radius: 5px;
}
</style>

在父组件中使用:

<template>
  <div>
    <Tour :steps="steps" :isActive="isTourActive" @complete="isTourActive = false" />
    <button @click="isTourActive = true">Start Tour</button>
  </div>
</template>

<script>
import Tour from './Tour.vue'

export default {
  components: { Tour },
  data() {
    return {
      isTourActive: false,
      steps: [
        {
          target: '#element1',
          title: 'Step 1',
          content: 'This is the first step'
        },
        {
          target: '#element2',
          title: 'Step 2',
          content: 'This is the second step'
        }
      ]
    }
  }
}
</script>

注意事项

确保引导步骤中的目标元素在 DOM 中存在并且可见 考虑移动端响应式设计 提供跳过或关闭引导的选项 引导步骤不宜过多,保持简洁明了 可以在 localStorage 中存储用户是否已完成引导的状态

标签: 页面vue
分享给朋友:

相关文章

项目基于vue实现

项目基于vue实现

基于Vue实现项目的关键方法 搭建基础环境 安装Node.js和npm/yarn,确保开发环境具备运行Vue的能力。通过Vue CLI快速初始化项目结构,选择所需配置(如Babel、Router、Vu…

vue广告实现

vue广告实现

Vue 广告实现方法 在 Vue 项目中实现广告功能可以通过多种方式完成,具体取决于广告类型和需求。以下是几种常见的实现方法: 使用第三方广告平台 许多广告平台如 Google AdSense…

vue实现管道

vue实现管道

Vue 中实现管道(Pipe)功能 在 Vue 中可以通过过滤器(Filters)或计算属性(Computed Properties)实现类似管道的功能,将数据经过多个处理步骤后输出。 使用过滤器(…

vue slot实现

vue slot实现

vue slot 的实现方法 在 Vue 中,slot 是一种内容分发机制,允许父组件向子组件传递模板内容。以下是几种常见的 slot 实现方式: 默认 slot 默认 slot 是最基础的 slo…

实现.vue文件

实现.vue文件

创建.vue文件的基本结构 一个标准的.vue文件包含三个部分:模板(template)、脚本(script)和样式(style)。这种结构允许开发者在一个文件中管理组件的HTML、JavaScrip…

vue 实现过滤

vue 实现过滤

Vue 实现过滤的方法 在 Vue 中实现过滤功能可以通过多种方式完成,包括使用计算属性、自定义过滤器、第三方库等。以下是几种常见的实现方法: 使用计算属性进行过滤 计算属性是 Vue 中最常用的过…