SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
22.11.2024

CSS: Reflexão Horizontal e Vertical de Imagens

Resposta Rápida

Para realizar a reflexão horizontal de uma imagem em CSS, utilize transform: scaleX(-1); e para a reflexão vertical, use transform: scaleY(-1);. Para refletir uma imagem simultaneamente nas direções horizontal e vertical, criando uma imagem espelho, utilize transform: scale(-1, -1);.

/* Para reflexão horizontal de uma imagem */
.img-flip-h { transform: scaleX(-1); }

/* Para reflexão vertical de uma imagem */
.img-flip-v { transform: scaleY(-1); }

/* Para reflexão simultânea de uma imagem em ambos os eixos */
.img-flip-both { transform: scale(-1, -1); }

Atribua a classe apropriada à sua imagem:

<img src="imagem.jpg" class="img-flip-h">
<img src="imagem.jpg" class="img-flip-v">
<img src="imagem.jpg" class="img-flip-both">

Compatibilidade entre Navegadores

Certifique-se de que o efeito de reflexão é suportado em todos os navegadores. Em versões mais antigas do Internet Explorer, utilize -ms-transform ou filter como uma solução alternativa. Aqui estão os exemplos de código:

/* Para Internet Explorer 9 */
.img-flip-h { -ms-transform: scaleX(-1); }
.img-flip-v { -ms-transform: scaleY(-1); }
.img-flip-both { -ms-transform: scale(-1, -1); }

/* Para Internet Explorer 8 e versões anteriores */
.img-flip-h { filter: fliph; }
.img-flip-v { filter: flipv; }
.img-flip-both { filter: fliph flipv; }

Importante: A propriedade filter não está em conformidade com os padrões CSS.

Equivalentes do Tailwind CSS

Se você está trabalhando com TailwindCSS, a reflexão pode ser simplificada usando classes utilitárias:

<!-- Reflexão horizontal -->
<img src="imagem.jpg" class="transform -scale-x-100">

<!-- Reflexão vertical -->
<img src="imagem.jpg" class="transform -scale-y-100">

<!-- Reflexão em ambos os eixos -->
<img src="imagem.jpg" class="transform -scale-x-100 -scale-y-100">

Entendendo Rotação e Reflexão

A reflexão de imagens pode, às vezes, ser alcançada através da rotação. Visualmente, uma rotação de 180 graus (transform: rotate(180deg);) é semelhante a refletir tanto horizontal quanto verticalmente, mas tecnicamente são operações diferentes.

/* Rotacionar imagem 180 graus */
.img-rotate-180 { transform: rotate(180deg); }

Técnicas para Reflexão Complexa

Para criar efeitos de reflexão mais complexos, especialmente quando uma transformação já está aplicada a um elemento, usar transformações matriciais pode ser útil:

/* Reflexão complexa usando uma matriz */
.img-advanced-flip {
  transform: matrix(-1, 0, 0, -1, 0, 0);
}

A transformação matricial permite combinar efeitos sem conflitos com propriedades transform anteriores.

Visualização

Refletir uma imagem usando CSS pode ser imaginado como virar uma panqueca em uma frigideira:

Imagem original 🖼️ :  [🌅]

Reflexão horizontal (css: `scaleX(-1)`):
Antes: [🌅] => Depois: [🌄]

Reflexão vertical (css: `scaleY(-1)`):
Antes: [🌅] => Depois: [🔃]

Ambas as reflexões (css: `scale(-1, -1)`):
Antes: [🌅] => Depois: [🔄]

Problemas ao Combinar Reflexões

Ao combinar reflexões horizontais e verticais, problemas podem surgir, geralmente relacionados à ordem incorreta da aplicação das transformações. Verifique seu código CSS para evitar situações semelhantes.

Reflexão de Imagens de Fundo

Para refletir uma imagem de fundo, pode ser necessária uma abordagem diferente:

/* Refletindo um elemento com uma imagem de fundo */
.flip-background {
  background-image: url('sua-imagem.jpg');
  transform: scale(-1, -1);
  background-size: cover;
  background-repeat: no-repeat;
}

Essa abordagem reflete o elemento inteiro, incluindo a imagem de fundo.

Recursos Úteis

  1. transform | CSS-Tricks — um guia detalhado sobre a propriedade transform.
  2. transform - CSS: Folhas de Estilo em Cascata | MDN — documentação oficial do MDN sobre transform.
  3. Propriedade CSS transform — material de tutorial e exemplos de uso para transform.
  4. Can I use... Tabelas de suporte para HTML5, CSS3, etc — tabelas de suporte ao navegador para transformações 2D do CSS.
  5. Como aplicar transformações CSS3 em imagens de fundo — SitePoint — um guia sobre como aplicar transformações a imagens de fundo.
  6. Como criar uma animação de cartão flip com CSS — instruções para criar uma animação de cartão flip usando CSS.

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!