Dies ist eine kleine Erinnerung daran, dass es eine CSS-Eigenschaft gibt, die dabei hilft zu steuern, was mit Bildern geschieht, wenn sie skaliert werden: image-rendering.
Wir sind es gewohnt, dass das Vergrößern eines Bildes über seine natürliche Größe hinaus (Upscaling) zu Unschärfe führt. So schlimm das auch ist, der Browser versucht sein Bestes, um ein Bild algorithmisch über mehr Pixel als Daten auszugleichen. Aber nehmen wir an, Sie möchten das wirklich *lieber nicht* tun. Angenommen, das Bild ist bereits pixelig (Pixel-Art) oder Sie bevorzugen das Aussehen eines pixeligen Upscalings.
Das können Sie tun!
img {
image-rendering: pixelated;
image-rendering: -moz-crisp-edges;
image-rendering: crisp-edges;
}
Es ist etwas umständlich, da die Spezifikation drei Werte bietet: auto, pixelated und crisp-edges. Sowohl pixelated als auch crisp-edges scheinen für Pixel-Art für mich dasselbe zu tun, obwohl die Spezifikation sie etwas anders beschreibt (pixelated empfiehlt den "Nearest-Neighbor"- oder einen ähnlichen Algorithmus, während crisp-edges nicht so spezifisch ist).
Zur Umständlichkeit trägt bei, dass Chrome nur pixelated und Firefox nur crisp-edges unterstützt, und für die tiefste Browserunterstützung müssen Sie es mit -moz-crisp-edges präfixen. Glücklicherweise können Sie sie alle zusammenfügen und es scheint in Ordnung zu sein.
Hier ist ein Beispiel mit und ohne, unter Verwendung eines Bildes von James T., das ich auf Tumblr gefunden habe
Siehe den Pen pixelated images von Chris Coyier (@chriscoyier) auf CodePen.
Das ist lustig. Das funktioniert in fast allen Browsern und kann in IE mit -ms-interpolation-mode: nearest-neighbor emuliert werden, aber es funktioniert nicht in Edge.
Anscheinend kann man das auch für Hintergründe und Canvas verwenden. (Zellulare Automaten, irgendjemand?) Außer, natürlich, bei MS-Produkten.
Beachten Sie, dass
image-rendering: pixelatedbereits von Autoprefixer behandelt wird; der generierte Code lautetWenn jemand ein Problem mit dieser Ausgabe bemerkt, melden Sie bitte ein Problem im GitHub-Repository von Autoprefixer.
Ist das auch mit Hintergrundbildern möglich?
Ja, auf das Element anwenden
In der Dokumentation steht "Diese Eigenschaft gilt für das Element selbst sowie für alle Bilder, die in anderen Eigenschaften für das Element angegeben sind." Also nehme ich an, ja, aber Testen ist der beste Weg, um es zu wissen
Jetzt möchte ich damit eine Pixel-Art-Website bauen. :D