最近开发过程中使用 html2canvas 将html代码生成canvas的时候发现预览出现的canvas图片中间被截断了 如图
期间以为是跨域图片没有加载,使用了useCORS:true,allowTaint:两个html2canvas的配置项,然而并没有什么卵用。
然后以为标签非块元素的问题,尝试了给img标签添加display:block,object-fit并没有生效
由于是富文本组件自定义功能按钮添加的图片生成的html代码,要考虑到富文本组件编辑时候的美观,所以没有加固定宽高,由于之前画canvas并没有添加过img标签,导致变成了瞎子过河。
然后把html代码截取出来用控制变量法发现仅文字输出是没有问题的,带上图片就出现了问题,
尝试了文字---图片---文字的结构 发现比文字----图片被截断的位置不一样,得出结论 img标签在html2canvas里面被默认当做一行行高的元素,且display:block并不生效,所以 只需要在调用html2canvas的方法之前 将所有的img标签加上固定高度即可保证导出的canvas正常渲染~