Enjoy the good life everyday!
关闭
欢迎来PyGo个人空间 ^_^
VUE插件driver.js闪一下问题 | PyGo²

VUE插件driver.js闪一下问题

背景

前几天搞了一个VUE页面功能向导,那个是在单独的页面,今天把driver.js引入到一些有功能的页面,启动的时候页面就闪了一下,没有向导功能,google了一下,发现原来是VUE渲染的问题。

VUE 插件

解决方案

解决问题的代码,在启动的时候加上setTimeout延迟,就可以了。

1
2
3
setTimeout(() => {
this.startGuide()
}, 900)

因为我把向导封装成组件了,其他的页面也可以进行引用,所以我用watch监听父组件传递的值,详细的请参考完整代码。

新问题

解决上面闪一下不加载的问题,但是浏览器控制台会有警告日志:
[Violation] Forced reflow while executing JavaScript took 131ms
还没解决,后续解决了更新。

完成代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<template>
<div class="app-container" />
</template>

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

export default {
name: 'Guide',
emits: ['close-guide'],
components: {},
props: {
guide: {
type: Boolean,
require: true,
default: false,
validator(value) {
return [true, false].includes(value)
}
},
content: {
type: String,
require: true,
default: ''
}
},
data() {
return {
driver: null
}
},
computed: {},
watch: {
guide: function() {
if (this.guide) {
setTimeout(() => {
this.startGuide()
}, 900)
}
}
},
created() {},
mounted() {
// parameter config
// 官网API:https://www.npmjs.com/package/driver.js
this.driver = new Driver({
className: 'scoped-class', // className to wrap driver.js popover
animate: true, // 是否设置动画
opacity: 0.7, // 背景不透明度(0表示只有弹出框,没有覆盖)
padding: 0, // 元素与边缘之间的距离
allowClose: true, // 单击覆盖是否应关闭
overlayClickNext: false, // 点击覆盖是否应该下一步移动
stageBackground: '#ffffff', // default: #ffffff,突出显示元素的背景色
showButtons: true, // 页脚中是否显示控制按钮
keyboardControl: true, // 允许通过键盘进行控制(退出关闭,箭头键移动)
doneBtnText: '完成', // 完成按钮文本
closeBtnText: '关闭', // 关闭按钮文本
prevBtnText: '上一步', // 上一步按钮文本
nextBtnText: '下一步', // 下一步按钮文本
onHighlightStarted: (Element) => {}, // 当元素即将高亮显示时调用
onHighlighted: (Element) => {}, // 当元素完全高亮显示时调用
onDeselected: (Element) => { // 取消选择元素时调用
this.onDeselected(Element)
},
onReset: (Element) => {}, // 将要清除覆盖时调用
onNext: (Element) => {}, // 在任何步骤上移动到下一步时调用
onPrevious: (Element) => {} // 在任何步骤上移动到上一步时调用
})
},
methods: {
startGuide() {
let data = {}
if (this.content === 'excelMerge') {
data = excelMergeSteps
} else {
return false
}
this.driver.defineSteps(data)
this.driver.start()
},
onDeselected(element) {
this.$emit('close-guide')
}
}
}
</script>

<style scoped>
</style>
  • 本文作者:mingliang.gao【一个爱老婆Python程序猿。。。。。。】
  • 本文链接: http://pygo2.top/articles/2813/
  • 版权声明: 本博客所有文章欢迎转载,转载请注明出处!
觉得有帮助 请偶坐个公交车
0%