Sind Photoshop-ähnliche Mischmodi in HTML5 möglich?
Lesezeit: 4 Minuten
Ernst Karlsons
Ich möchte ein rotes Rechteck setzen <div> Element über meine Webseite, sodass es nicht nur transparent aussieht, sondern im Multiplizieren-Modus von Photoshop auch wie gemischt aussieht.
Das <div> hätte position: fixedsodass sich der Inhalt darunter schnell ändern würde.
Geht das mit jedem HTML5/CSS3/Canvas/SVG-Trick?
Ich habe eine separate, leichtgewichtige Open-Source-Bibliothek erstellt, um Mischmodi im Photoshop-Stil von einem HTML-Canvas-Kontext zu einem anderen auszuführen: Kontext-Blender. Hier ist die Beispielnutzung:
// Might be an 'offscreen' canvas
var over = someCanvas.getContext('2d');
var under = anotherCanvas.getContext('2d');
over.blendOnto( under, 'screen', {destX:30,destY:15} );
Siehe die Liesmich für weitere Informationen, einschließlich der derzeit unterstützten Mischmodi.
Sie könnten dies verwenden, um eine Multiplikation von einer Leinwand zur anderen durchzuführen, jedoch nicht über Standard-HTML-Elemente.
+1; Ihre Entwurfsspezifikation könnte genau das sein, was ich brauchte, um 100 % Photoshop-kompatible Mischmodi in Gegenwart von verringertem Alpha zu erhalten! (Und hoffentlich wird die Bibliothek irgendwann gar nicht mehr benötigt.)
– Phrogz
30. Mai 2012 um 21:35 Uhr
Funktioniert in Chrome Beta, wenn Sie experimentelle Webplattformfunktionen aktivieren . jsfiddle.net/X4GyF
– geiler Arsch
4. April 2014 um 19:16 Uhr
Nur fürs Protokoll, jetzt im Standardmodus in Chrome, FF und Opera
Überprüfen Sie die Quelle für die Formeln der Mischmodi und wie Sie sie anwenden (Formeln sind viel besser lesbar als in Pixastic oder Context-Blender).
Das ist ein toller Demomann! Hast du es gemacht? Kann ich den Code bitte für normales Mischen in meiner eigenen Arbeit verwenden? Ich habe versucht, das Stammverzeichnis zu besuchen, um den Autor zu kontaktieren, aber es hat eine 404 ausgelöst!
– Rutwick Gangurde
20. Dezember 2012 um 6:26 Uhr
Nein, das bin nicht ich, das ist von dem berühmten russischen Front-End-Mann Sergey Chikuyonok (der Mann hinter Zen Coding, übrigens) 🙂 In the Artikel er ruft gerne mit dem code in der demo an, jedoch kann man ihn per kontaktieren Kommentareoder sehen Sie sich die Fußzeile der Seite für seine E-Mail an.
– Georgij Iwankin
20. Dezember 2012 um 12:19 Uhr
Danke Kumpel! Ich schicke ihn! Dieser Artikel enthält viele gute Sachen für Canvas! 🙂
– Rutwick Gangurde
20. Dezember 2012 um 19:11 Uhr
Dies ist kein HTML5, aber es kommt dem, was Sie fragen, so nahe, wie ich es finden kann.
Ich glaube nicht, dass “Mischmodi” wie Photoshop nur mit reinem HTML emuliert werden könnten, es sei denn, die Sprache nahm eine scharfe Wendung in eine andere Richtung. Aber es wäre toll, einen einfacheren Weg zu sehen, dies zu tun.
Irae Carvalho
Daran habe ich auch großes Interesse. Viele Layouts, die ich für visuelle Designer programmiert habe, hätten das verwenden können. Abgesehen von den anderen Beiträgen in diesem Thread gibt es eine Möglichkeit, dies zu tun, derzeit nur in Firefox 4, ohne Verwendung von OpenGl oder Canvas. Dies geschieht durch die Verwendung von SVG-Filtern. Anscheinend ist es auch auf Nachthemden von Webkit und Chrome, aber ich konnte noch nichts sehen, das funktioniert.
IMHO ist irgendetwas in der Nähe von Mischmodi im Moment zu schwer zu erreichen. Es ist sehr schwer, Referenzen zu finden feConvolveMatrix, feSpecularLightingoder feColorMatrix, und die Beispiele sind einfach unmöglich, für mich herauszufinden. Sie könnten funktionieren, aber ich weiß nicht wie.
Dies wäre ein viel besserer Ansatz. Vielleicht könnte uns ein Ninja mit Mathematikkenntnissen dazu verhelfen.
BEARBEITEN: Es gibt eine einfachere SVG-Spezifikation, um genau Mischmodi auszuführen. Aber kein Browser, den ich getestet habe, funktioniert so (FF4, IE9, Opera11, Webkit Nightly): http://dev.w3.org/SVG/modules/compositing/master/SVGCompositingPrimer.html – Aber ich weiß auch nicht, ob dies in HTML-DOM-Elementen verwendet werden kann.
Luis
Dies ist das nächste, was ich gesehen habe, und ja, alle Assets müssen sich im Canvas befinden. Beachten Sie, dass Internet Explorer Canvas in Version 9 unterstützt, die noch nicht veröffentlicht ist. Wenn Sie also IE<9 unterstützen müssen, müssen Sie eine Problemumgehung verwenden.