Browserübergreifende Möglichkeit, HTML/Bild über Javascript/CSS zu spiegeln?

Lesezeit: 3 Minuten

Benutzer-Avatar
chakrit

Gibt es eine Bibliothek/einfache Möglichkeit, ein Bild zu spiegeln?

Flip-Bild wie folgt:

AABBCC      CCBBAA
AABBCC  ->  CCBBAA

Ich suche keine Animationendrehen Sie einfach das Bild um.

Ich habe nach keinem Avial gegoogelt und nur eine komplexe Version gefunden, die SVG verwendet MozillaZine von dem ich nicht überzeugt bin, dass es browserübergreifend funktioniert.

  • Gibt es einen Grund, warum Sie nicht einfach zwei Kopien des Bildes haben können?

    – cwallenpoole

    20. August 2009 um 21:59 Uhr

  • @Christopher W. Allen-Poole . Die Bilder werden vom Benutzer bereitgestellt und es gibt keine serverseitige Komponente … nur ein einzelnes HTML mit XML-Datendatei als Backend … also habe ich nur JS/CSS, um sie umzudrehen … wenn dies automatisiert werden kann, es wird eine Sache weniger sein, die sie ihnen beibringen müssen, als XMLs zu bearbeiten …

    – chakrit

    20. August 2009 um 22:17 Uhr

Benutzer-Avatar
Eli Grau

Das folgende CSS funktioniert in IE und modernen Browsern, die CSS-Transformationen unterstützen. Ich habe eine vertikale Flip-Klasse hinzugefügt, nur für den Fall, dass Sie sie vielleicht auch verwenden möchten.

.flip-horizontal {
    -moz-transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    -o-transform: scaleX(-1);
    transform: scaleX(-1);
    -ms-filter: fliph; /*IE*/
    filter: fliph;
}
.flip-vertical {
    -moz-transform: scaleY(-1);
    -webkit-transform: scaleY(-1);
    -o-transform: scaleY(-1);
    transform: scaleY(-1);
    -ms-filter: flipv; /*IE*/
    filter: flipv;
}

  • Bitte nicht vergessen -o-transform: scale(-1,0); und -o-transform: scale(0,-1); dev.opera.com/articles/view/css3-transitions-and-2d-transforms

    – Jakob Cosoroaba

    9. November 2010 um 19:13 Uhr


  • Vielen Dank. Ich habe Opera-Transformationen hinzugefügt.

    – Eli Gray

    10. November 2010 um 20:54 Uhr

  • Kein Bedarf für -ms-filter: "FlipH" ?

    – Ebrahim Mohammadi

    14. Mai 2011 um 2:00 Uhr

  • @EliGrey Könnte dies (oder etwas Ähnliches) auch über das Scratchpad von Firefox funktionieren? Das heißt, ich suche nach einer einfachen Möglichkeit, Live-HTML/CSS zu bearbeiten (ohne den ressourcenintensiven Firebug zu verwenden).

    – verrückt über nett

    21. März 2013 um 8:03 Uhr


  • Danke dafür. Beachten Sie, dass ich (mit Chrome) auch sicherstellen musste, dass es sich nicht um ein Inline-Element handelt. Die Verwendung von display:inline-block hat es für mich behoben.

    – Damien Sawyer

    23. September 2013 um 3:31 Uhr

Schauen Sie sich einen der vielen an Reflexion.js Typbibliotheken, Sie sind ziemlich einfach. Im IE werden sie den ‘flipv’-Filter nehmen und verwenden, es gibt auch einen ‘fliph’-Filter. In anderen Browsern wird ein Canvas-Tag erstellt und das drawImage verwendet. Obwohl Elijahs Antwort wahrscheinlich dieselben Browser unterstützt.

Ich habe diese Antwort gerade ausgegraben, während ich versuchte, einen Fehler zu beheben, obwohl die vorgeschlagene Antwort richtig ist, habe ich festgestellt, dass sie gegen die meisten modernen CSS-Linting-Regeln in Bezug auf die Einbeziehung aller Anbieterregeln für die Transformation verstößt. Das Einbeziehen der -ms-transform-Regel verursacht jedoch einen seltsamen Fehler in IE9, bei dem die Filter- und -ms-transform-Regeln angewendet werden, wodurch ein Bild gespiegelt und wieder zurückgespiegelt wird.

Hier ist mein Verbesserungsvorschlag, der auch CSS-Lint-Regeln unterstützt:

.flip-horizontal {
    -moz-transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    -o-transform: scaleX(-1);
    -ms-transform: scaleX(1); /* linting rule fix + IE9 fix */
    transform: scaleX(-1);
    -ms-filter: fliph;
    filter: fliph;
}
.flip-vertical {
    -moz-transform: scaleY(-1);
    -webkit-transform: scaleY(-1);
    -o-transform: scaleY(-1);
    -ms-transform: scaleY(1);  /* linting rule fix + IE9 fix */
    transform: scaleY(-1);
    -ms-filter: flipv;
    filter: flipv;
}

Wenn Sie nur ein Hintergrundbild umdrehen möchten, können Sie die Klasse für die internen Elemente innerhalb eines umgedrehten Div verwenden. Im Grunde spiegeln Sie die internen Elemente mit dem Haupt-Div um, aber spiegeln jedes von ihnen zurück. Funktioniert jedenfalls im Firefox.

So was:

<div id="container" class="flip-horizontal"> <!-- container would have your background image -->
<h3 class="flip-horizontal">Hello There!</h3>
<p class="flip-horizontal">Here is some text</p>
</div>

1085230cookie-checkBrowserübergreifende Möglichkeit, HTML/Bild über Javascript/CSS zu spiegeln?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy