CSS свойство transform-origin позволяет задать местоположение точки, относительно которой происходит трансформация (смещение, деформация, вращение, масштабирование) элемента. По умолчанию значение свойства transform-origin равно center , поэтому все действия происходят относительно центра.

Свойство transform-origin на примере

CSS свойство transform-origin позволяет задать местоположение точки, относительно которой происходит трансформация (смещение, деформация, вращение, масштабирование) элемента. По умолчанию значение свойства transform-origin равно center, поэтому все действия происходят относительно центра.

transform-origin: center;

Но что делать, если нам нужно задать точку фиксации в другом месте? Сейчас рассмотрим на примере стикера, условно зафиксированного сверху магнитом к холодильнику.

Свойство transform-origin на примере.

HTML разметка

Наш стикер будет состоять из двух блоков наложенных друг на друга. Нижний блок темного цвета sticker выступает в роли неподвижной подложки для наглядности. Верхний блок sticker_move изображает сам стикер голубого цвета, который будет смещаться на 10 градусов при наведении мыши на объект. На стикере содержится список ингридиентов для пиццы, расположенных в тегах p.

   <section class="section">
  <div class="sticker">
    <div class="sticker_move">
      <div class="title">PIZZA INGREDIENTS</div>
      <div>
        <p>1 ball Best Homemade Pizza Dough</p>
        <p>1/3 cup Easy Pizza Sauce</p>
        <p>3 ounces fresh mozzarella cheese</p>
        <p>2 basil leaves</p>
        <p>Semolina flour</p>
      </div>
    </div>
  </div>
</section>

Свойство transform-origin на примере.

CSS код

Вся эта конструкция помещена в обертку section для позиционирования стикера в центре страницы.

.section {
    width: 100%;
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
}

Зададим размеры, цвет и отступы у подложки для стикера.

.sticker {
    height: 300px;
    width: 300px;
    background-color: #666;
    margin: 0 50px 50px 0;
    position: relative; // родитель для магнита
}

Свойство transform-origin на примере.

Нарисуем небольшой магнит с помощью псевдоэлемента after. Главная хитрость здесь - это размещение магнита. Позиция магнита должна совпасть с координатами свойства transform-origin, относительно которого будет поворачиваться стикер.

.sticker:after {     content: "";
    position: absolute; // позиция относительно родителя
    top: 0; // фиксация магнита сверху
    left: 50%; // фиксация магнита посередине верхнего края стикера
    width: 10px;
    height: 10px;
    background: rgb(123, 255, 0);
    border: 5px solid white;
    border-radius: 10px;
    margin: -10px 0 0 -10px;
}

Свойство transform-origin на примере.

Обратите внимание, что высота у голубого блока на 40 пикселей меньше, чем у темного за счет паддингов.

.title {
    padding-top: 30px;
    padding-bottom: 20px;
    text-decoration: underline;
}

.sticker_move {
    display: block;
    height: 260px;
    background: rgba(0, 174, 255, 0.692);
    padding: 20px;
    color: white;
    font-family: monospace;
    transition: rotate 5s linear; // плавный поворот
}

Свойство transform-origin на примере.

Чтобы создать впечатление, что стикер зафиксирован магнитом именно сверху, укажем у transform-origin значение top. Вы увидите как работает данное свойство, при наведении мыши на объект.

.sticker_move:hover {
    transform: rotate(10deg); // поворот на 10 градусов
    transform-origin: top;
}

Демонстрация свойства transform-origin


Уже хорошо освоив HTML/CSS, можно выходить на фриланс биржи. Основываясь на своем личный опыт, я записал полезное видео по Заработку на создании сайтов под заказ.