# 定义

devicePixelRatio 是浏览器中 window 对象的一个属性,用于获取设备的物理像素和逻辑像素之间的比例,通常用于适配高分辨率设备(如 Retina 屏幕)。它的值定义为设备的物理像素与 CSS 像素的比例(即一个 CSS 像素采用几个实际屏幕像素绘制)。这个值影响图像和画布在不同设备上的显示效果。

在高分辨率(Retina)设备上,devicePixelRatio 通常为 2 或更高,而在标准显示屏上为 1。

# 常见用途

1. 画布绘图:在高分辨率设备上绘图时,可以使用 devicePixelRatio 来缩放 canvas,确保画布内容的清晰度。

2. 媒体查询:在 CSS 中,可以利用 devicePixelRatio 来定义不同的分辨率适配样式。

以下是一个在 canvas 上使用 devicePixelRatio 的示例:

const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");
// 获取 devicePixelRatio
const dpr = window.devicePixelRatio || 1;
// 设置 canvas 的宽高以适应设备的分辨率
canvas.width = canvas.clientWidth * dpr;
canvas.height = canvas.clientHeight * dpr;
// 缩放 context,以便在高分辨率设备上清晰显示
ctx.scale(dpr, dpr);
// 绘制内容
ctx.fillStyle = "blue";
ctx.fillRect(10, 10, 100, 100);

使用 devicePixelRatio 可以提高画面清晰度,但也会增加绘制的像素数量,可能导致性能开销。因此,在绘制复杂图形时需要平衡清晰度和性能。