༺࿈网页小地图插件࿈༻

背景

看到Axhub上面有这么一个小地图插件,不过鼠标拖拽事件有BUG且不能自定义,并且发现小地图中的元素和原页面元素不是相同的dom结构,需要额外生成一套,也就是说其他开发者即使把这个js库扒下来也是无法使用的,于是就自己写了一套js库,并且支持定制化。

注意事项

  1. 插件仅支持在客户端渲染,请勿在ssr项目的服务端代码中使用
  2. 初始化时小地图并不会立即显示,这跟小地图的使用特性有关,推荐初始化时指向一个全局变量,在项目中需要的地方使用变量.init()或者变量.reRender()函数来显示它
  3. 虽然initreRender的作用都是显示重绘后的小地图,不过首次显示时请务必执行一次init函数,它会进行一些额外的事件填充。

TODO

  1. 增加对移动端的支持,并自动识别是否为移动端,无需开发者传入额外参数
  2. 节省开发成本,页面内容变更时自动的实时更新小地图,无需开发者手动的频繁调用reRender函数
  3. 浏览器窗口大小发生变化时小地图的一些表现逻辑优化(主要体现为性能优化)

资源链接

Props

字段类型默认值说明
sizenumber300地图大小-宽度
borderColorString#328756预览框颜色
offsetArray[10, 10]距离顶部和右侧分别多少距离
extraStyleStringborder-radius: 8px;额外的自定义样式
removeScriptBooleantrue渲染为dom时是否移除副本中所有的script标签
renderDomBoolean/ElementNodefalse小地图是否渲染为dom元素,可以指定渲染元素,false代表渲染为canvas,为true则尝试渲染id为app的元素副本,为element-node时则渲染指定元素副本(如:document.getElementsByClassName('body')[0])

Events

事件名入参回参作用
init由于小地图的逻辑特殊性,可能会存在全局引入然后在个别页面显示的问题,所以初始化小地图后并不会立即渲染,需要开发者在需要的时刻手动调用一次`init函数
remove销毁小地图,移除dom节点小地图相关元素和事件,后面依旧可以通过初始化指向的全局变量显示,且配置保留
reRenderObject:Props重绘小地图内容,在页面内容更新后手动调用

npm方式

标签方式

使用示例

App.vue

test.vue