vue-introjs实现网站引导功能
就是进入网站前的功能介绍引导功能
文章目录
说明
本文首发地址:vue-introjs实现网站引导功能
效果展示
静态
动态演示
相关技术
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
配置
-
在项目的
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主题
-
把
intro.js
加入到vue
的prototype
中,方便使用,就可以直接通过this.$intro()
来调用了// 加到prototype中,直接通过vue实例就能调用intro了 Vue.prototype.$intro = intro
关于
prototype
的说明:https://cn.vuejs.org/v2/cookbook/adding-instance-properties.html
使用
-
选定一个
html
标签,加上data-intro
属性,赋值内容,以下面为例<img data-intro="这是一张普通的图片" data-step="1" src="./assets/logo.png">
data-step
是展示的步骤设置,填写数字即可 -
在
script
中,加入mounted
方法,启动intro
mounted () { this.$intro().start() },
-
刷新页面即可看到效果
一些问题
只首次进入的时候显示引导
新手引导一般只有我们第一次进入这个网站的时候才会出现引导内容,后续都不会再显示,我们这里如何实现?
可以通过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
源代码
更多推荐
所有评论(0)