scale()

scale() (масштабувати) - це функція CSS, що визначає перетворення, яке змінює розмір елемента на двовимірній площині. Оскільки ступінь масштабування визначається вектором [sx, sy], це впливає на вертикальні та горизонтальні розміри. Результат – тип даних <transform-function>.

Спробуйте його в дії

Перетворення масштабування характеризується двовимірним вектором. Його координати визначають ступінь масштабування в кожному напрямку. Якщо обидві координати рівні, масштабування рівномірне (ізотропне), а співвідношення сторін зберігається (це гомотетичне перетворення).

Якщо значення координати знаходиться поза межами діапазону [-1, 1], елемент збільшується відповідно до значення; якщо всередині діапазону - зменшується. Відʼємне значення у цьому вимірі призводить до центрально-симетричного відображення. Значення 1 - ніяк не діє.

[!NOTE] Функція scale() працює лише на площині. Для тривимірного масштабування користуйтеся scale3d().

Синтаксис

Функція scale() може приймати одне або два значення, які показують величину масштабування у кожному напрямку.

scale(sx)

scale(sx, sy)

Значення

sx

<number> або <percentage>, що представляє абсцису (горизонталь, x-компоненту) вектора масштабування.

sy

<number> або <percentage>, що представляє ординату (вертикаль, y-компоненту) вектора масштабування. Якщо цей параметр не визначено, то усталене його значення – sx, що дає масштабування зі збереженням співвідношення сторін.

Декартові координати на ℝ^2 Однорідні координати на ℝℙ^2 Декартові координати на ℝ^3 Однорідні координати на ℝℙ^3
(sx00sy)\left( \begin{array}{cc} sx & 0 \\ 0 & sy \end{array} \right) (sx000sy0001)\left( \begin{array}{ccc} sx & 0 & 0 \\ 0 & sy & 0 \\ 0 & 0 & 1 \end{array} \right) (sx000sy0001)\left( \begin{array}{ccc} sx & 0 & 0 \\ 0 & sy & 0 \\ 0 & 0 & 1 \end{array} \right) (sx0000sy0000100001)\left( \begin{array}{cccc} sx & 0 & 0 & 0 \\ 0 & sy & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array} \right)
[sx 0 0 sy 0 0]

Доступність

Анімації масштабування/збільшення викликають проблеми із доступністю, тому що вони є звичним тригером певних типів труднощів. Якщо потрібно додати такі анімації на свій вебсайт, бажано надати користувачам можливість відключати їх, і краще зразу на рівні цілого сайту.

Також подумайте про можливість використання медійної можливості prefers-reduced-motion: за її допомогою можна написати медіазапит, що вимикатиме анімацію, якщо в налаштуваннях користувача обрано зменшення кількості анімації.

Дізнайтеся більше:

Приклади

Масштабування за осями X та Y разом

HTML

<div>Звичайний</div>
<div class="scaled">Масштабований</div>

CSS

div {
  width: 80px;
  height: 80px;
  background-color: skyblue;
}

.scaled {
  transform: scale(0.7); /* Еквівалентно scaleX(0.7) scaleY(0.7) */
  background-color: pink;
}

Результат

Масштабування за осями X та Y окремо, а також перенесення початку координат

HTML

<div>Звичайний</div>
<div class="scaled">Масштабований</div>

CSS

div {
  width: 80px;
  height: 80px;
  background-color: skyblue;
}

.scaled {
  transform: scale(2, 0.5); /* Еквівалентно scaleX(2) scaleY(0.5) */
  transform-origin: left;
  background-color: pink;
}

Результат

Специфікації

Сумісність із браузерами

desktop mobile
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet
scale()
Chrome Full support 1
Edge Full support 12
Firefox Full support 3.5
Internet Explorer Full support 9
Opera Full support 10.5
Safari Full support 3.1
WebView Android Full support 2
Chrome Android Full support 18
Firefox for Android Full support 4
Opera Android Full support 11
Safari on iOS Full support 3.2
Samsung Internet Full support 1.0

Дивіться також