总的思路,Minipap如果要显示整个网页的缩略图,必定渲染上要高性能,需要图形技术支持。

调查

VSCode的实现

简单用开发工具查看了下VSCode的实现,主要是基于Canvas的,上面套一层div用于拖拉。

稍微看了一些相关的议题:

pagemap的实现

把页面元素在缩略图上显示为方块。

https://github.com/devyujie/page-minimap看起来用到了pagemap,算一个例子吧。

atom-minimap/minimap的实现

https://github.com/atom-minimap/minimap配置项蛮多蛮丰富的,还没有仔细研究。

zorgzerg/brackets-minimap的实现

https://github.com/zorgzerg/brackets-minimap是给Bracket用的。

alterfan/minimap的实现

https://github.com/alterfan/minimap,代码貌似在dist目录里面。

类似:

其他思路

基础学习

4.12.5 The canvas element

属性不多,只有width和height,以及全局属性。默认值,width是300,height是150。

默认是透明的,交互性上有所限制,允许某些类型的子元素具有交互性。

canvas元素提供的是跟解析度相关的点阵图(bitmap),可以绘制更通用的图形,而不限于专用目的传统web元素,比如文本或者图片。

canvas标签的内容是作为候补(fallback)的。交互情境下其内容是通过脚本动态创建的,非交互情境下其内容是所嵌入的元素的内容,否则显示候补内容。

canvas可以有一个origin-clean旗标。

一个canvas元素可以有一个渲染上下文,默认为空(none),通过canvas context mode来跟踪。可以设置为placeholder, 2d, bitmaprenderer, webgl, webgl2, 或者webgpu。

~~太长了,不读了。