Как отразить изображение?

Влад Мержевич

Internet Explorer Chrome Opera Safari Firefox Android iOS
10 26 23 7.1 16 4 ?

Задача

Отразить изображение по горизонтали или вертикали.

Решение

Для отражения изображения или другого элемента, в том числе текстового, применяется свойство transform и функция scale() с отрицательным значением. Варианты такие:

  • transform: scale(-1, 1) — отражение по горизонтали;
  • transform: scale(1, -1) — отражение по вертикали;
  • transform: scale(-1, -1) — одновременное отражение по горизонтали и вертикали.

Есть также отдельные функции scaleX() и scaleY(), они отвечают за масштабирование по соответствующим координатам.

Хотя функция scale() предназначена для изменения масштаба элемента, отрицательное значение также позволяет сделать отражение. В примере 1 добавляется обычное изображение, а затем оно же, но отражённое по вертикали. Для этого к <img> добавляется класс с именем mirrorY.

Пример 1. Отражение фотографии

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Отражение</title>
  <style>
   .mirrorY { transform: scale(1, -1); }
  </style>
 </head>
 <body>
  <img src="images/spam.jpg" alt="Спам">
  <img src="images/spam.jpg" alt="Спам" class="mirrorY">
 </body>
</html>

Результат данного примера показан на рис. 1.

Обычная фотография и отражённая по вертикали

Рис. 1. Обычная фотография и фотография, отражённая по вертикали

CSS по теме

Не выкладывайте свой код напрямую в комментариях, он отображается некорректно. Воспользуйтесь сервисом cssdeck.com или jsfiddle.net, сохраните код и в комментариях дайте на него ссылку. Так и результат сразу увидят.