带滚动区域存图方案:双 DOM 隐藏 + canvas 转义下载
产品需求:将一个带有纵向滚动的区域,保存为图片并下载。
经过调研:
position: fixed;
z-index: -100;
right: -1000px
npm i html2canvas -S
或者:
yarn add html2canvas
import html2canvas from 'html2canvas';
/**
* dom转为图片并下载
* @param
dom:需要转移的DOM节点,如"#charts"
Filename: 下载图片的名称
*/
const saveAsImgLoad = async(dom: string = '#charts', Filename: string = '统计') => {
return html2canvas(document.querySelector(dom)!).then(canvas => {
const imgUrl = canvas.toDataURL('image/jpeg');
const image = document.createElement('img');
image.src = imgUrl;
const a = document.createElement('a');
a.href = imgUrl;
// 自定义图片的名称
a.download = Filename;
a.click();
});
};
export { saveAsImgLoad }
import { saveAsImgLoad } from '@/utils.ts';
const load = async() => {
await saveAsImgLoad('#chart', '分析统计');
};