html2canvas与window.devicePixelRatio

本文探讨了window.devicePixelRatio的概念及其在不同设备上的应用,特别是在视网膜屏幕上。接着,文章深入讨论了html2canvas截图时遇到的问题,如box-shadow的渲染问题和max-height造成的滚动问题,并提供了相应的解决策略。最后,介绍了如何将canvas转换成Blob并上传到OSS,以及html2canvas截图的原理,涉及foreignObject元素在SVG中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官方文档

html2canvas(document.querySelector('.content')).then(canvas => {
   
   
    console.log(canvas);
    // document.body.append(canvas)
    const img = document.querySelector('.img');
    img.src = canvas.toDataURL();
})

实现截图过程:

  1. 通过

关于window.devicePixelRatio

  • 设备像素/物理像素
    设备像素也被称为物理像素,它是显示设备中最小的物理部件。在同一设备中,物理像素的总数是固定的。

  • 独立像素/CSS像素
    CSS像素是一个抽象的单位,主要使用在浏览器上,用来精确的度量(确定)web页面上的内容。CSS像素被称为与设备无关的像素(device-independent像素),简称DIPs

在一个标准的显示密度下,一个CSS像素对应着一个设备像素。

window.devicePixelRatio

https://developer.mozilla.org/zh-CN/docs/Web/API/Window/devicePixelRatio
返回当前显示设备的物理像素分辨率与CSS像素分辨率之比。简单来说,它告诉浏览器应使用多少屏幕实际像素来绘制单个CSS像素。

所以在标准屏幕下,devicePixelRatio应该为1。

特例

视网膜(Retina)显示屏,它会使用更多的屏幕像素绘制相同的对象,从而获得更清晰的图形。devicePixelRatio为2.

所以虽然一个DOM元素的CSS尺寸是375px,但是因为Apple是视网膜屏幕,所以使用了两倍于CSS尺寸的设备像素来渲染它,所以图片会变成750px。

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

. . . . .

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值