CSS свойство transform-origin

Свойство ttransform-origin позволяет изменить позицию трансформации элемента.

Transform-origin работает только вместе со свойством transform.

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

Для максимальной совместимости браузера могут быть использованы такие расширения, как -webkit- для Safari, Google Chrome и Opera (новые версии).
Значение по умолчанию 50% 50% 0
Применяется К трансформируемым элементам.
Наследуется Нет
Анимируемое Да. Градус анимируем.
Версия CSS3
DOM синтаксис Object.style.transform-origin = "10% 30%";

Синтаксис

transform-origin: x-offset y-offset z-offset | initial | inherit;

Пример

<!DOCTYPE html>
<html>
  <head>
    <title>Заголовок документа</title>
    <style>
      .big {
      position: relative;
      height: 300px;
      width: 300px;
      margin: 80px;
      padding: 5px;
      border: 2px solid #666;
      background-color: #eee;
      }
      .little {
      padding: 60px;
      position: absolute;
      border: 2px solid #666;
      background-color: #8ebf42;
      -ms-transform: rotate(35deg); /* IE 9 */
      -ms-transform-origin: 70% 90%; /* IE 9 */
      -webkit-transform: rotate(35deg); /* Safari 3-8 */
      -webkit-transform-origin: 70% 90%; /* Safari 3-8 */
      transform: rotate(35deg);
      transform-origin: 70% 90%;
      }
    </style>
  </head>
  <body>
    <h2>Пример свойства transform-origin</h2>
    <div class="big">
      <div class="little">Box</div>
    </div>
  </body>
</html>

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

Пример

<!DOCTYPE html>
<html>
  <head>
    <title>Заголовок документа</title>
    <style>
      body {
      background-color: #eee;
      font-size: 1.1em;
      font-family: 'Roboto', Helvetica, sans-serif;
      }
      .container {
      margin: 10px auto;
      max-width: 700px;
      }
      .wrap {
      width: 150px;
      height: 150px;
      border: 2px solid #666;
      display: inline-block;
      margin: 100px;
      }
      .box {
      width: 150px;
      height: 150px;
      position: relative;
      color: #eee;
      text-align: center;
      line-height: 150px;
      -webkit-transform: rotate(25deg);
      -ms-transform: rotate(25deg);
      transform: rotate(25deg);
      }
      .a {
      background-color: #0747af;
      }
      .b {
      background-color: #40b530;
      -webkit-transform-origin: top left;
      -ms-transform-origin: top left;
      transform-origin: top left;
      }
      .c {
      background-color: #666;
      -webkit-transform-origin: 90% 120%;
      -ms-transform-origin: 90% 120%;
      transform-origin: 90% 120%;
      }
      .d {
      background-color: #ffdb11;
      -webkit-transform-origin: 80px 40px;
      -ms-transform-origin: 80px 40px;
      transform-origin: 80px 40px;
      }
    </style>
  </head>
  <body>
    <h2>Пример свойства transform-origin</h2>
    <div class="container">
      <div class="wrap">
        <div class="box a">
          50% 50%
        </div>
      </div>
      <div class="wrap">
        <div class="box b">
          top left      
        </div>
      </div>
      <div class="wrap">
        <div class="box c">
          90% 120%       
        </div>
      </div>
      <div class="wrap">
        <div class="box d">
          80px 40px       
        </div>
      </div>
    </div>
  </body>
</html>

Значения

Значение Описание
x-offset Указывает положение на оси x. Может иметь следующие значения:
  • left
  • right
  • center
  • length
  • percentage
y-offset Указывает положение на оси y. Может иметь следующие значения:
  • top
  • center
  • bottom
  • length
  • percentage
z-offset Указывает положение на оси z для трехмерных трансформаций. Может иметь следующие значения:
  • length
initial Устанавливает свойство в значение по умолчанию.
inherit Значение элемента наследуется от родительского элемента.

Поддержка браузера

chrome firefox safari opera
36.0+
12.0-35.0 -webkit-
16.0+
10.0-15.0 -moz-
4.0+
-webkit-
23.0+
15.0-22.0 -webkit-

Практикуйте свои знания

Какие значения может принять свойство css 'transform-origin'?
Считаете ли это полезным?