CSS-функция `scale()`
Базовая поддержка Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна во всех браузерах с сентября 2015 года.
scale() CSS-функция определяет преобразование, которое изменяет размер элемента на двумерной плоскости. Поскольку величина масштабирования задаётся вектором [sx, sy], горизонтальный и вертикальный размеры можно изменять с разным масштабом. Результатом является тип данных <transform-function>.
Попробуйте
transform: scale(1);
transform: scale(0.7);
transform: scale(1.3, 0.4);
transform: scale(-0.5, 1);
<section id="default-example">
<img
class="transition-all"
id="example-element"
src="/shared-assets/images/examples/firefox-logo.svg"
width="200" />
</section>
Это масштабирование задаётся двумерным вектором. Его координаты определяют степень масштабирования в каждом направлении. Если обе координаты равны, масштабирование является равномерным (изотропным), а пропорции элемента сохраняются (это гомотетическое преобразование).
Если значение координаты выходит за пределы диапазона [-1, 1], элемент увеличивается в соответствующем измерении; если оно находится внутри диапазона, элемент уменьшается. Отрицательное значение приводит к центральной симметрии в соответствующем измерении. Значение 1 не оказывает эффекта.
Примечание: Функция scale() выполняет масштабирование только в 2D. Для масштабирования в 3D используйте scale3d().
Синтаксис
scale(sx) scale(sx, sy)
Значения
-
sx - Значение
<number>или<percentage>, представляющее абсциссу (горизонтальную координату, компоненту x) вектора масштабирования. -
syНеобязательно - Значение
<number>или<percentage>, представляющее ординату (вертикальную координату, компоненту y) вектора масштабирования. Если значение не задано, по умолчанию используетсяsx, что приводит к равномерному масштабированию с сохранением соотношения сторон элемента.
| Декартовы координаты в ℝ^2 | Однородные координаты в ℝℙ^2 | Декартовы координаты в ℝ^3 | Однородные координаты в ℝℙ^3 |
|---|---|---|---|
[sx 0 0 sy 0 0] |
Формальный синтаксис
<scale()> =
scale( [ <number> | <percentage> ]#{1,2} )
Доступность
Анимация масштабирования/изменения размера может создавать проблемы с доступностью, поскольку часто провоцирует некоторые виды мигрени. Если на вашем сайте необходима такая анимация, следует предусмотреть элемент управления, позволяющий пользователям отключить анимацию, предпочтительно на всём сайте.
Также рассмотрите возможность использования медиавозможности prefers-reduced-motion — с её помощью можно написать медиазапрос, отключающий анимацию, если в настройках системы пользователя указано предпочтение уменьшить анимацию.
Подробнее:
- Пояснения MDN к руководству WCAG 2.3
-
[Понимание критерия успеха 2.3.3 Руководство W3C по пониманию WCAG 2.1](https://www.w3.org/WAI/WCAG21/Understanding/animation-from-interactions)
Примеры
Совместное масштабирование измерений X и Y
HTML
<div>Normal</div> <div class="scaled">Scaled</div>
CSS
div {
width: 80px;
height: 80px;
background-color: skyblue;
}
.scaled {
transform: scale(0.7); /* Equal to scaleX(0.7) scaleY(0.7) */
background-color: pink;
}
Результат
Раздельное масштабирование измерений X и Y и смещение начала координат
HTML
<div>Normal</div> <div class="scaled">Scaled</div>
CSS
div {
width: 80px;
height: 80px;
background-color: skyblue;
}
.scaled {
transform: scale(2, 0.5); /* Equal to scaleX(2) scaleY(0.5) */
transform-origin: left;
background-color: pink;
}
Результат
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | |
scale |
1 |
12 |
3.5 |
10.5 |
3.1 |
18 |
4 |
11 |
3.2 |
1.0 |
2 |
3.2 |
См. также
transformscalezoom<transform-function>scale3d()- Другие отдельные свойства преобразования:
translateиrotate
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/transform-function/scale