我有一张100x100像素的图片,我想通过CSS将其显示成两倍大小,即200x200,并且(明确地)不通过服务器来实现。
自几年前开始,所有浏览器都使用抗锯齿技术代替像素缩放。
Mozilla允许指定算法:image-rendering: -moz-crisp-edges; IE也可以使用:-ms-interpolation-mode: nearest-neighbor;
是否有任何已知的WebKit替代方案?
WebKit现在支持CSS指令:
image-rendering:-webkit-optimize-contrast;
你可以使用Chrome并在此页面的最后一张图片中看到其运作:
http://phrogz.net/tmp/canvas_image_zoom.html
该页面使用的规则是:
.pixelated {
image-rendering:optimizeSpeed; /* Legal fallback */
image-rendering:-moz-crisp-edges; /* Firefox */
image-rendering:-o-crisp-edges; /* Opera */
image-rendering:-webkit-optimize-contrast; /* Safari */
image-rendering:optimize-contrast; /* CSS3 Proposed */
image-rendering:crisp-edges; /* CSS4 Proposed */
image-rendering:pixelated; /* CSS4 Proposed */
-ms-interpolation-mode:nearest-neighbor; /* IE8+ */
}
很遗憾,看起来这个功能在WebKit中不存在。请查看最近的Bug报告:
除了 @Phrogz 的非常有用的回答之外,阅读了这篇文章后:https://developer.mozilla.org/zh-CN/docs/Web/CSS/image-rendering
看起来最好的 CSS 是这样的:
image-rendering:optimizeSpeed; /* Legal fallback */
image-rendering:-moz-crisp-edges; /* Firefox */
image-rendering:-o-crisp-edges; /* Opera */
image-rendering:-webkit-optimize-contrast; /* Chrome (and eventually Safari) */
image-rendering:crisp-edges; /* CSS3 Proposed */
-ms-interpolation-mode:bicubic; /* IE8+ */
image-rendering:pixelated
在Chrome v38中可用。请参见:http://blog.chromium.org/2014/08/chrome-38-beta-new-primitives-for-next.html。另请参阅:https://www.chromestatus.com/feature/5118058116939776。 - Phrogz