Spec-Zone.ru › CSS

Функция CSS `scale3d()`

Базовая поддержка Широко доступна

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и во многих версиях браузеров. Она доступна во всех браузерах с марта 2022 года.

scale3d() CSS-функция задаёт преобразование, которое изменяет размер элемента в трёхмерном пространстве. Поскольку масштабирование задаётся вектором [sx, sy, sz], разные измерения можно масштабировать по-разному. Результат имеет тип данных <transform-function>.

Попробуйте

transform: scale3d(1, 1, 1);
transform: scale3d(1.3, 1.3, 1.3);
transform: scale3d(0.5, 1, 1.7);
transform: scale3d(-1.4, 0.4, 0.7);
<section class="default-example" id="default-example">
  <div class="transition-all" id="example-element">
    <div class="face front">1</div>
    <div class="face back">2</div>
    <div class="face right">3</div>
    <div class="face left">4</div>
    <div class="face top">5</div>
    <div class="face bottom">6</div>
  </div>
</section>
#default-example {
  background: linear-gradient(skyblue, khaki);
  perspective: 800px;
  perspective-origin: 150% 150%;
}

#example-element {
  width: 100px;
  height: 100px;
  perspective: 550px;
  transform-style: preserve-3d;
}

.face {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  position: absolute;
  backface-visibility: inherit;
  font-size: 60px;
  color: white;
}

.front {
  background: rgb(90 90 90 / 0.7);
  transform: translateZ(50px);
}

.back {
  background: rgb(0 210 0 / 0.7);
  transform: rotateY(180deg) translateZ(50px);
}

.right {
  background: rgb(210 0 0 / 0.7);
  transform: rotateY(90deg) translateZ(50px);
}

.left {
  background: rgb(0 0 210 / 0.7);
  transform: rotateY(-90deg) translateZ(50px);
}

.top {
  background: rgb(210 210 0 / 0.7);
  transform: rotateX(90deg) translateZ(50px);
}

.bottom {
  background: rgb(210 0 210 / 0.7);
  transform: rotateX(-90deg) translateZ(50px);
}

Это преобразование масштабирования задаётся трёхмерным вектором. Его координаты определяют степень масштабирования в каждом направлении. Если все три координаты равны, масштабирование равномерное (изотропное), а соотношение сторон элемента сохраняется (это гомотетическое преобразование).

Если значение координаты выходит за пределы диапазона [-1, 1], элемент увеличивается вдоль соответствующего измерения; если находится внутри диапазона — уменьшается. Отрицательное значение приводит к центральной симметрии относительно соответствующего измерения. Значение 1 не оказывает эффекта.

Синтаксис

scale3d(sx, sy, sz)

Значения

sx
Значение типа <number>, представляющее абсциссу (горизонтальную координату, компоненту x) вектора масштабирования.
sy
Значение типа <number>, представляющее ординату (вертикальную координату, компоненту y) вектора масштабирования.
sz
Значение типа <number>, представляющее компоненту z вектора масштабирования.
Декартовы координаты в ℝ^2 Однородные координаты в ℝℙ^2 Декартовы координаты в ℝ^3 Однородные координаты в ℝℙ^3
Это преобразование применяется к трёхмерному пространству и не может быть представлено на плоскости. (sx000sy000sz)\left( \begin{array}{ccc} sx & 0 & 0 \\ 0 & sy & 0 \\ 0 & 0 & sz \end{array} \right) (sx0000sy0000sz00001)\left( \begin{array}{cccc} sx & 0 & 0 & 0 \\ 0 & sy & 0 & 0 \\ 0 & 0 & sz & 0 \\ 0 & 0 & 0 & 1 \end{array} \right)

Формальный синтаксис

<scale3d()> = 
  scale3d( [ <number> | <percentage> ]#{3} )

Примеры

Без изменения начала координат

HTML

<div>Normal</div>
<div class="scaled">Scaled</div>

CSS

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

.scaled {
  transform: perspective(500px) scale3d(2, 0.7, 0.2) translateZ(100px);
  background-color: pink;
}

Результат

Смещение начала координат преобразования

HTML

<div>Normal</div>
<div class="scaled">Scaled</div>

CSS

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

.scaled {
  transform: perspective(500px) scale3d(2, 0.7, 0.2) translateZ(100px);
  transform-origin: left;
  background-color: pink;
}

Результат

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

Спецификация
Модуль CSS Transforms, уровень 2
# funcdef-scale3d

Совместимость с браузерами

Настольные устройства Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari для iOS Samsung Internet WebView Android WebView для iOS
scale3d
12
12
10
15
4
18
10
14
3.2
1.0
3
3.2

См. также

  • transform
  • <transform-function>
  • scaleZ()
  • translate3d()
  • rotate3d()
  • Отдельные свойства преобразования:
    • translate
    • scale
    • 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/scale3d

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API