Figma导出的切图在Retina屏上模糊怎么办?
我在Figma里把设计稿切图导出成2x的PNG,放到网页里在MacBook的Retina屏上看还是有点模糊,明明已经用了@2x的图片了啊?
我试过用img标签直接引用,也试过用background-image,效果都差不多。是不是我导出设置有问题,还是前端写法不对?
const icon = new Image();
icon.src = './assets/icon@2x.png';
icon.style.width = '24px';
icon.style.height = '24px';
document.body.appendChild(icon);
首先要做的是在img标签上添加
srcset属性来指定不同分辨率的图像资源。这样浏览器才能根据设备的DPR(设备像素比)选择合适的图像。可以这样修改你的代码:
如果不想准备两套图,也可以只用@2x图,但要通过CSS明确设置图像的实际尺寸:
然后把图片类名加上:
icon.className = 'retina-image';另外检查下Figma导出设置,确保选择了正确的倍率,而且别忘了勾选"约束比例"选项,不然导出的图片可能会变形。
这个方法我试过好多次了,一般都能解决Retina屏模糊的问题,希望对你有帮助。说真的,处理这种跨设备适配问题有时候挺烦人的,但这就是前端开发的一部分啊。
解决这个问题主要有两个步骤:
第一步,确保你在Figma中导出的图片确实是2x的分辨率。你提到已经导出了2x的PNG,这是正确的做法,但需要确认导出的尺寸是你设计稿尺寸的两倍。
第二步,你需要告诉浏览器如何正确使用这张2x的图片。可以通过CSS中的
image-set函数或者HTML的srcset属性来实现。我们先来看看CSS的
image-set方法。你需要为你的元素设置背景图像,并指定高分辨率版本。例如:这段CSS的意思是:当设备像素比为2时,使用icon@2x.png;否则使用icon.png。
接下来是HTML的
srcset属性方法。这种方法适用于使用![]()
标签的情况。你可以这样写:这里,
src属性提供了默认的图片,而srcset属性则提供了不同分辨率的图片选项。浏览器会根据设备的像素密度自动选择合适的图片。现在我们把这两种方法应用到你的JavaScript代码中。我们可以使用CSS的方法来修改你的JavaScript代码:
然后记得在CSS中添加相应的样式规则:
这样处理之后,你的图片在Retina屏幕上的显示应该会清晰很多。
希望这些步骤能帮到你!如果有其他问题,尽管问我。有时候前端的这些问题真是让人头疼,但也正因为如此,才能让我们不断学习和进步。