Функция scale()

Стилевая функция scale() масштабирует элемент в двумерном пространстве по горизонтали и вертикали или одновременно в двух направлениях. Изменение масштаба может происходить как в большую, так и в меньшую сторону.

Масштабирование с помощью scale(sx, xy) продемонстрировано в табл. 1.

Табл. 1. Масштабирование картинки
transform: scale(1) Исходное изображение.
transform: scale(1.2) Увеличение масштаба в 1,2 раза.
transform: scale(1.2, 1) Увеличение масштаба только по горизонтали в 1,2 раза.
transform: scale(0.5) Уменьшение масштаба в два раза.
transform: scale(-1, 1) Зеркальное отражение по горизонтали.
transform: scale(1, -1) Зеркальное отражение по вертикали.
transform: scale(-1) Зеркальное отражение по горизонтали и вертикали.

Синтаксис

transform: scale(sx);
transform: scale(sx, xy);
Описание Пример
<тип> Указывает тип значения. <размер>
A && B Значения должны выводиться в указанном порядке. <размер> && <цвет>
A | B Указывает, что надо выбрать только одно значение из предложенных (A или B). normal | small-caps
A || B Каждое значение может использоваться самостоятельно или совместно с другими в произвольном порядке. width || count
[ ] Группирует значения. [ crop || cross ]
* Повторять ноль или больше раз. [,<время>]*
+ Повторять один или больше раз. <число>+
? Указанный тип, слово или группа не является обязательным. inset?
{A, B} Повторять не менее A, но не более B раз. <радиус>{1,4}
# Повторять один или больше раз через запятую. <время>#

Значения

sx
Масштаб элемента по горизонтали.
  • значение больше 1 (например: 1.5) приводит к увеличению масштаба;
  • значение меньше 1 (например: 0.8) приводит к уменьшению масштаба;
  • отрицательное значение (например: -1) зеркально отражает элемент по горизонтали;
  • значение 1 оставляет размер элемента исходным и не даёт видимого эффекта.
sy
Масштаб элемента по вертикали. Если значение не указано, то по умолчанию принимается равным sx.

Одно значение задаёт масштабирование элемента одновременно по горизонтали и вертикали, с сохранением пропорций сторон элемента. Два значения задают масштаб элемента по горизонтали и вертикали независимо, что может привести к искажению пропорций сторон.

Песочница

img {
  transform: scale({{ playgroundValue }});
}

Пример

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>scale()</title> <style> div { display: inline-block; /* Выстраиваем по горизонтали */ overflow: hidden; /* Обрезаем */ } div img { display: block; /* Убираем отступ снизу */ transition: 1s; /* Время перехода */ } div img:hover { transform: scale(1.4); /* Масштабируем */ } </style> </head> <body> <div><img src="image/meduza1.jpg" alt=""></div> <div><img src="image/meduza2.jpg" alt=""></div> <div><img src="image/meduza3.jpg" alt=""></div> </body> </html>

В данном примере при наведении указателя на картинку она плавно увеличивает свой масштаб. Чтобы размеры блока оставались исходными используется свойство overflow со значением hidden.

Спецификация

CSS Transforms Module Level 1

Браузеры

9 12 4 11.5 3.1 3.5
2.1 3.5 12 3.2

В таблице браузеров применяются следующие обозначения.

  • — элемент полностью поддерживается браузером;
  • — элемент браузером не воспринимается и игнорируется;
  • — при работе возможно появление различных ошибок, либо элемент поддерживается с оговорками.

Число указывает версию браузреа, начиная с которой элемент поддерживается.