“html2canvas”: “^1.3.2”,最新版已经支持scale,网上搜索的图片模糊解决方案均已过时
一般使用:
1 | // "html2canvas": "^1.3.2" |
元素里面的图片渲染不清晰问题
有两点需要特别注意,这关系到生成图片的质量
1、img元素不要使用object-fit,html2canvas生成的图片不支持object-fit
2、不要使用background或background-image来渲染图片,会导致html2canvas生成的图片background区域内的图片很模糊,必须使用img
有以下场景:图片大小不固定,需要自适应显示,对应object-fit的contain和background-size的contain,如今html2canvas对object-fit不支持,且使用background会使图片模糊,只能额外借助js解决
不使用object-fit和background-size模拟contain的效果,但只能一个方向,要判断两个方向需要额外判断图片的渲染大小,写在行内样式里
1 | .image-wrapper { |
配合js实现图片contain自适应,vue解决方案
template
1 | <div class="image-wrapper"> |
1 | { |
这样的html2canvas渲染出来里面的图片具有自适应contain的效果且清晰
渲染文字错位渲染不全的问题
有时候渲染的容器需要有预留空位,不要使用margin作为预留左右空位,且overflow:hidden的手段,使用padding代替,这样就不会出现错误渲染字体的情况
非视野区域截图
opacity为0,或者visibility为hidden,display:none,这样都无法解决非视野区域截图的问题
使用top: -9999px,这样也是无法解决的
只有使用层级最低的手段下才能做到非视野区域的截图
1 | top: 0px; |