269 votes

Pouvez-vous utiliser les CSS pour inverser le texte ?

Est-il possible d'utiliser les CSS/CSS3 pour mettre le texte en miroir ?

Plus précisément, j'ai ce char de ciseaux "✂" ( ✂ ) que j'aimerais afficher en pointant vers la gauche et non vers la droite.

10 votes

Si, pour une raison ou une autre, l'image des ciseaux ne vous convient pas, je l'ai vue simulée avec %< et >%.

1 votes

3 votes

La réponse de Micheal est plus précise. Pouvez-vous s'il vous plaît mettre à jour la réponse correcte ? Parce que la réponse que vous avez marquée comme correcte n'est pas un miroir mais une rotation de 180 degrés.

473voto

Duopixel Points 27962

Vous pouvez utiliser des transformations CSS pour y parvenir. Un retournement horizontal impliquerait de mettre à l'échelle le div comme ceci :

-moz-transform: scale(-1, 1);
-webkit-transform: scale(-1, 1);
-o-transform: scale(-1, 1);
-ms-transform: scale(-1, 1);
transform: scale(-1, 1);

Et un retournement vertical impliquerait de mettre à l'échelle le div comme ceci :

-moz-transform: scale(1, -1);
-webkit-transform: scale(1, -1);
-o-transform: scale(1, -1);
-ms-transform: scale(1, -1);
transform: scale(1, -1);

DEMO :

span{ display: inline-block; margin:1em; } 
.flip_H{ transform: scale(-1, 1); color:red; }
.flip_V{ transform: scale(1, -1); color:green; }

<span class='flip_H'>Demo text &#9986;</span>
<span class='flip_V'>Demo text &#9986;</span>

0 votes

C'est certainement la réponse la plus conforme aux normes, malheureusement nous ne vivons pas encore dans un monde où cela fonctionne pour tous les cas d'utilisation.

0 votes

Pourriez-vous inclure les préfixes réels du navigateur dans votre réponse, avec le dernier non préfixé ? Le CSS tel que vous l'avez donné ne fonctionne pas.

0 votes

@SerranoPereira en effet, merci pour la suggestion. Réponse modifiée.

69voto

Chris Sobolewski Points 5770
-moz-transform: scale(-1, 1);
-webkit-transform: scale(-1, 1);
-o-transform: scale(-1, 1);
-ms-transform: scale(-1, 1);
transform: scale(-1, 1);

Les deux paramètres sont l'axe X et l'axe Y. L'axe -1 sera un miroir, mais vous pouvez le mettre à l'échelle de votre choix en fonction de vos besoins. A l'envers et en arrière, ce serait (-1, -1) .

Si vous êtes intéressé par la meilleure option disponible pour la prise en charge des navigateurs croisés en 2011, voir ma réponse plus ancienne .

22 votes

Techniquement, ce n'est pas un miroir, c'est une rotation. Donc ça ne fonctionnera qu'avec certains types d'éléments.

4 votes

J'ai eu des problèmes dans Chrome jusqu'à ce que j'ajoute display : inline-block à mon span (en utilisant des polices pictos).

1 votes

Étant donné qu'à l'époque où cette question a été posée, les transformations du navigateur n'étaient pas largement prises en charge, je dirais que c'était la bonne réponse. En fait, les transformations ne sont pas prises en charge avant IE 9, donc je dirais que c'est TOUJOURS la bonne réponse, pour au moins un peu plus longtemps.

66voto

Un vrai miroir :

.mirror{
    display: inline-block; 
    font-size: 30px;

    -webkit-transform: matrix(-1, 0, 0, 1, 0, 0);
    -moz-transform: matrix(-1, 0, 0, 1, 0, 0);
    -o-transform: matrix(-1, 0, 0, 1, 0, 0);
    transform: matrix(-1, 0, 0, 1, 0, 0);
}

<span class='mirror'>Mirror Text<span>

17 votes

Vous devez toujours placer la propriété conforme aux normes (non préfixée) en dernier, de sorte que lorsque la norme sera adoptée par un navigateur, celui-ci utilisera la version conforme aux normes au lieu de la version préfixée (plus ancienne et plus buggée). Dans ce cas, cela signifie que "transform : matrix(-1, 0, 0, 1, 0, 0) ;" devrait être la propriété "transform". dernier la propriété. (J'ai modifié la réponse pour refléter cela).

7 votes

Je ne sais pas si cela doit figurer dans la réponse correcte ou dans la question, mais je veux informer les utilisateurs de fontawesome / bootstrap de la fa-flip-horizontal y fa-flip-vertical propriétés

2 votes

Excellente réponse réelle. Toutefois, display:block ; n'est pas nécessairement nécessaire.

8voto

Jay Dansand Points 370

J'ai bricolé cette solution en parcourant l'Internet, y compris les sites suivants

Cette solution semble fonctionner dans tous les navigateurs, y compris IE6+, en utilisant les éléments suivants scale(-1,1) (un miroir approprié) et des filter / -ms-filter si nécessaire (IE6-8) :

/* Cross-browser mirroring of content. Note that CSS pre-processors
  like Less cough on the media hack. 

  Microsoft recommends using BasicImage as a more efficent/faster form of
  mirroring, instead of FlipH or some kind of Matrix scaling/transform.
  @see http://msdn.microsoft.com/en-us/library/ms532972%28v=vs.85%29.aspx
  @see http://msdn.microsoft.com/en-us/library/ms532992%28v=vs.85%29.aspx
*/

/* IE8 only via hack: necessary because IE9+ will also interpret -ms-filter,
  and mirroring something that's already mirrored results in no net change! */
@media \0screen {
  .mirror {
    -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(mirror=1)";
  }
}
.mirror {
  /* IE6 and 7 via hack */
  *filter: progid:DXImageTransform.Microsoft.BasicImage(mirror=1);
  /* Standards browsers, including IE9+ */
  -moz-transform: scale(-1,1);
  -ms-transform: scale(-1,1);
  -o-transform: scale(-1,1); /* Op 11.5 only */
  -webkit-transform: scale(-1,1);
  transform: scale(-1,1);
}

6voto

Michael Points 59

Pour la compatibilité entre navigateurs, créez cette classe

.mirror-icon:before {
    -webkit-transform: scale(-1, 1);
    -moz-transform: scale(-1, 1);
    -ms-transform: scale(-1, 1);
    -o-transform: scale(-1, 1);
    transform: scale(-1, 1);
}

Et ajoutez-la à votre classe d'icônes, c'est à dire

<i class="icon-search mirror-icon"></i>

pour obtenir une icône de recherche avec la poignée à gauche

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X