溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

html2中canvas生成的圖片偏移不完整怎么辦

發(fā)布時間:2021-04-30 15:11:59 來源:億速云 閱讀:847 作者:小新 欄目:web開發(fā)

這篇文章將為大家詳細(xì)講解有關(guān)html2中canvas生成的圖片偏移不完整怎么辦,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

html是什么

html的全稱為超文本標(biāo)記語言,它是一種標(biāo)記語言,包含了一系列標(biāo)簽.通過這些標(biāo)簽可以將網(wǎng)絡(luò)上的文檔格式統(tǒng)一,使分散的Internet資源連接為一個邏輯整體,html文本是由html命令組成的描述性文本,html命令可以說明文字,圖形、動畫、聲音、表格、鏈接等,主要和css+js配合使用并構(gòu)建優(yōu)雅的前端網(wǎng)頁。

情景一:

問題背景:生成的圖片在一個彈窗里面,如果頁面沒有滾動條就是正常的,但是一旦出現(xiàn)滾動條并且頁面發(fā)生滾動時html2canvas繪制成的圖片就會偏移出對應(yīng)滾動高度的白邊,如下:

html2中canvas生成的圖片偏移不完整怎么辦
 

解決辦法
 

樓主查了很多資料,也用了很多方法都沒能解決這個問題,一氣之下打算研究研究html2canvas的配置參數(shù),果不其然,在配置參數(shù)RenderOptions下找到如下配置

html2中canvas生成的圖片偏移不完整怎么辦
 

眼尖的樓主立馬發(fā)現(xiàn)了scrollY這個東西。沒錯,這個肯定是配置偏移量的對吧,既然你是向下偏移我頁面滾動的高度,那我把scrollY設(shè)置為負(fù)的那不就好了嗎,說干就干。于是樓主設(shè)置了{scrollY: -window.pageYOffset},結(jié)果發(fā)生詭異的事,它倒是不向下偏移了,卻開始向上偏移,如下

html2中canvas生成的圖片偏移不完整怎么辦
 

這個世界是怎么了,于是樓主又設(shè)置{scrollY: 0},再次查看,解決了。
 

html2中canvas生成的圖片偏移不完整怎么辦
 

原來,是因?yàn)樵诓辉O(shè)置scrollY的情況下,canvas繪制頁面時會根據(jù)全局頁面的滾動情況自動向下偏移。當(dāng)然了,scrollX也是一樣的道理。

奉上代碼:
 

scrollY: 0, 其他的參數(shù)根據(jù)自己情況配置,這個參數(shù)一定不能少

var htmlDom = document.getElementsByClassName('dialog_content')[0];

html2canvas(htmlDom, {
    logging: false, //日志開關(guān),便于查看html2canvas的內(nèi)部執(zhí)行流程
    width: htmlDom.clientWidth, //dom 原始寬度
    height: htmlDom.clientHeight,
    scrollY: 0, 
    scrollX: 0,
    useCORS: true // 【重要】開啟跨域配置
}).then(canvas => {
    var url = canvas.toDataURL();//圖片地址
    htmlDom.appendChild(canvas);
});

情景二:
 

用html2canvas繪制完圖片后,始終會有個偏移距離,之前的解決辦法是設(shè)scrollY: 0,scrollX: 0這兩個參數(shù)為0,但是這次怎么弄都不行,最后排查出的原因是因?yàn)槔L制的box上加了transform:translateX(-50%)這個樣式。

解決辦法:

用戶繪圖的區(qū)域不用transform來定位,換一種沒有偏移的方式,比如設(shè)置百分比或者固定寬高。

關(guān)于“html2中canvas生成的圖片偏移不完整怎么辦”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI