我在使用html2canvas的时候出现一个生成的图片偏移不完整的情况
我在使用的时候遇到一个问题:在页面出现滚动条的时候,生成的图片会出现偏移不完整的情况,网上的方法大致都试过了,但是都没有作用,有哪位知道怎么解决吗?
import HTML2Canvas from 'html2canvas'
function getWinClientHeight() {
let clientHeight = 0
if (document.body.clientHeight && document.documentElement.clientHeight) {
clientHeight = (document.body.clientHeight < document.documentElement.clientHeight) ? document.body.clientHeight : document.documentElement.clientHeight
} else {
clientHeight = (document.body.clientHeight > document.documentElement.clientHeight) ? document.body.clientHeight : document.documentElement.clientHeight
}
return clientHeight
}
function getDocClientHeight() {
return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)
}
export default async function (el, beforeCallBack, afterCallBack) {
if (typeof el === 'undefined') {
console.error('必须传入一个元素')
return false
}
if (typeof beforeCallBack !== 'undefined') {
beforeCallBack()
}
const scale = 1.5
const scrollY = window.scrollY
const scrollX = getDocClientHeight() > getWinClientHeight() ? -8.3 : 0
const canvas = await HTML2Canvas(el, {
width: el.clientWidth,
height: el.clientHeight,
backgroundColor: null,
scale,
scrollX,
scrollY: -scrollY,
useCORS: true
})
if (typeof afterCallBack !== 'undefined') {
afterCallBack(canvas)
return false
}
const resolveUrl = canvas.toDataURL('image/png', 1.0)
return resolveUrl
}
原本没有设置scrollX和scrollY的时候,是向下偏移的,设置了之后就向上偏移了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
确实是滚动条问题,生成的时候需要滚动条top为0
这问题我以前碰到过, 发一下之前用的代码