美文网首页
html2Canvas踩屎日记

html2Canvas踩屎日记

作者: LastStranger | 来源:发表于2019-10-08 20:57 被阅读0次

    图像不清晰?

    1. scale设置成了2或者完全就没加这玩意,scale: 4应该能解决问题.并不是值越大越好,有上限的,大于这个值是没法继续提升清晰度的;越大会导致base64图片越大,微信识别二维码等操作会很耗时间(这个有待确认)。
    2. dpi: window.devicePixelRatioscale混用是有问题的。
    3. 我尝试过很多方式,貌似无法还原到100%原图的,我只能达到90%左右。

    渲染出来的一直是一片空白?

    1. 多数情况是跨域了,useCORS: true,就好了.还是跨域的话把后端打一顿就好了.
    2. 图片太小了,小于10kb的本地图片在iOS上是一片空白的,在base64阶段就已经是空白的了.如果实在是穷的不到10kb, 换成url版本的图片试试吧.
    3. 被渲染的元素之前是invisible不可见的,这种情况就只能用transform: translateX(10000px),然后再tansform: translate(-50%, -50%)回来就好了。

    偶发性出现渲染空白?

    1. 目测是采用了
    import XXX from "./images/XXX.png"  
    <img src={XXX} />
    

    这种本地图片的方式,在iOS上会出现偶发性空白现象,获取后端接口图片url,插入src中就能解决问题; 当有本地图片和url图片混合的时候特别容易出现这种问题.

    1. 不要重复渲染图片,重复性的合成图片会导致在iOS上渲染局部失效问题。

    图像错位?

    1. 很正常,我也经常遇到,习惯就好,土办法就是手动复位,几种常见位移.
    html2canvas(targetEle,
                {
                    width: canWidth+100,
                    height: canHeight-100,
                    y: targetEle.offsetTop,
                })
    
    1. 一些css属性在html2canvas中是不支持,建议查文档了解一下http://html2canvas.hertzen.com/features
    2. 还有一种情况出现在你页面向下滑动的时候,你的容器或者容器父节点使用了fixed定位,这时候就需要加scrollY: 0,就好了,同理scrollX.

    排除某些DOM元素?

    1. 给需要被排除的元素添加 data-html2canvas-ignore='true'属性就行了,文档里面也有 http://html2canvas.hertzen.com/configuration

    相关链接

    html2canvas踩坑记录

    I believe your apartment is on fire

    相关文章

      网友评论

          本文标题:html2Canvas踩屎日记

          本文链接:https://www.haomeiwen.com/subject/yjsipctx.html