tippy.js 插件是一个气泡框提示插件,非常好用,但是在light模式下,鼠标连续移入同一个内容后,你会发现气泡框周围的阴影的颜色逐渐加重,如下图:
通过打开控制台调试,发现是因为:每次弹出气泡框,tippy都是新建了一个实例,并且之前移入产生的实例并未销毁,所以就会出现实例重叠,阴影加深的情况,所以一种解决办法是 气泡框隐藏的时候,销毁这个实例,具体办法见这位大佬的博客https://juejin.cn/post/7172386909807706148
我用这个方法解决后发现,在慢慢的连续移入后,不会出现上述问题了,但是速度很快的移入还是会出现阴影加深的现象。所以,产生了另一种方法:
思路:使用一个变量myTippy将实例t1存储起来,如果移入的是同一个内容,那就显示t1,如果移入的不是同一个内容,就销毁变量中存储的实例,就重新创建一个实例t2,并将t2存储在变量中。这样每次都只会有一个实例被创建,不再会出现重叠的情况。
部分vue代码如下:
if(this.el == el){ // 如果鼠标移入的是同一个内容,el指的是当前元素,this.el指的是上次移入的元素
this.myTippy.show(); // 调用实例本身方法,使其显示
} else {
this.myTippy && this.myTippy.destroy();
this.el = el;
this.myTippy = tippy(el, {theme:'light', ........})
}