最近我遇到了这个网站: http://www.nicalis.com/
我很好奇: 是否有办法用更小的图像实现这种效果呢?我的意思是,它是像素艺术,而不是使用每个像素四倍大小的图像,我们能否通过代码来拉伸它们? 所以我开始尝试让它发生。
我尝试了CSS,Javascript,甚至HTML,但都没有成功。它们都会模糊得很厉害(就像这样: http://jsfiddle.net/nUVJt/2/),这就带来了我的问题: 你能在浏览器中拉伸图像而不进行任何抗锯齿处理吗?
我对任何建议都持开放态度,无论是使用画布、jQuery、CSS3或其他方法。
感谢您的帮助!
编辑: 现在有更好的方法了! 一个稍微不那么hackish的方法! 这里是魔法:
.pixelated {
image-rendering: -moz-crisp-edges;
image-rendering: -o-crisp-edges;
image-rendering: -webkit-optimize-contrast;
-ms-interpolation-mode: nearest-neighbor;
image-rendering: pixelated;
}
这将停止所有现代浏览器中的抗锯齿。它甚至适用于IE7-8,但不适用于9,并且我不知道在9中如何实现它,不幸的是(除了下面概述的画布hack)。用这种方式做比用JS快得多,这真的很有趣。这里有更多关于它们的信息:https://developer.mozilla.org/en-US/docs/CSS/Image-rendering
编辑2:因为这还不是一个官方规范,所以它不是非常可靠。自从我写上面的内容以来,Chrome和FF似乎都停止支持它(根据下面提到的this article),这真的很烦人。我们可能需要再等几年才能真正开始在CSS中使用它,这真的很不幸。
最终编辑:现在有一种官方的方法可以做到这一点!有一个叫做image-rendering
的新属性。它在CSS3规范中。目前支持非常不稳定,但是Chrome刚刚添加了支持,所以不久之后我们就可以只说image-rendering: pixelated;
,它将在所有地方起作用(耶,永远绿色的浏览器!)
scale()
方法怎么样?http://www.w3schools.com/TAGS/canvas_scale.asp。那个行得通吗? - Jess