总的思路,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目录里面。
类似:
其他思路
- 在网页中实现minimap效果
- 为网页实现mini-map效果
- 提到在firefox下可用element这个CSS函数来从任意HTML元素获得对应的
<image>
值,可惜其他浏览器上不可用 - 提到可以使用iframe作为minimap,需要把HTML元素赋值到iframe
- 用两个div,分别是slider__size和slider__controller,用来做控制。
- 从示例https://codepen.io/shshaw/pen/wGPpqL看,minimap内似乎无法显示内容。
基础学习
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。
~~太长了,不读了。