JavaRush /Курсы /Модуль 1: Web Core /Центр трансформаций

Центр трансформаций

Модуль 1: Web Core
12 уровень , 1 лекция
Открыта

2.1 Свойство transform-origin

Свойство transform-origin в CSS определяет точку, относительно которой применяются трансформации, такие как rotate, scale, skew, и translate. По умолчанию эта точка находится в центре элемента, но вы можете изменить ее положение, чтобы добиться нужных визуальных эффектов.

Основы transform-origin

Синтаксис свойства transform-origin:

    
      element {
        transform-origin:  x-axis y-axis z-axis;
      }
    
  

Где:

  • x-axis: определяет положение точки по горизонтальной оси
  • y-axis: определяет положение точки по вертикальной оси
  • z-axis: определяет положение точки по оси Z (используется для 3D-трансформаций)

Возможные значения:

  • Ключевые слова: top, right, bottom, left, center
  • Процентные значения: задают точку происхождения в процентах от размера элемента
  • Абсолютные значения: задают точку происхождения в пикселях или других единицах измерения

Примеры значений:

  • transform-origin: 50% 50%; — центр элемента (значение по умолчанию)
  • transform-origin: 0 0; — верхний левый угол элемента
  • transform-origin: 100% 100%; — нижний правый угол элемента
  • transform-origin: 50px 100px; — смещение на 50 пикселей вправо и 100 пикселей вниз от верхнего левого угла

Центрирование точки происхождения (по умолчанию)

В этом примере трансформация rotate будет происходить вокруг центра элемента.

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Центрирование точки происхождения</title>
          <style>
            .box {
              width: 100px;
              height: 100px;
              background-color: #3498db;
              transform: rotate(45deg);
            }
          </style>
        </head>
        <body>
          <div class="box"></div>
        </body>
      </html>
    
  

2.2 Смещение точки

Смещение точки происхождения в левый верхний угол

В этом примере точка происхождения трансформации смещена в левый верхний угол элемента.

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Точка происхождения в левом верхнем углу</title>
          <style>
            .box {
              width: 100px;
              height: 100px;
              background-color: #e74c3c;
              transform: rotate(45deg);
              transform-origin: top left;
            }
          </style>
        </head>
        <body>
          <div class="box"></div>
        </body>
      </html>
    
  

Смещение точки происхождения в нижний правый угол

В этом примере точка происхождения трансформации смещена в нижний правый угол элемента.

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Точка происхождения в нижнем правом углу</title>
          <style>
            .box {
              width: 100px;
              height: 100px;
              background-color: #2ecc71;
              transform: rotate(45deg);
              transform-origin: bottom right;
            }
          </style>
        </head>
        <body>
          <div class="box"></div>
        </body>
      </html>
    
  

2.3 Задание значений

Использование процентных значений

В этом примере точка происхождения трансформации находится на 25% по горизонтали и 75% по вертикали.

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Точка происхождения с процентными значениями</title>
          <style>
            .box {
              width: 100px;
              height: 100px;
              background-color: #9b59b6;
              transform: rotate(45deg);
              transform-origin: 25% 75%;
            }
          </style>
        </head>
        <body>
          <div class="box"></div>
        </body>
      </html>
    
  

Использование абсолютных значений

В этом примере точка происхождения трансформации смещена на 50 пикселей по горизонтали и 20 пикселей по вертикали.

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Точка происхождения с абсолютными значениями</title>
          <style>
            .box {
              width: 100px;
              height: 100px;
              background-color: #f1c40f;
              transform: rotate(45deg);
              transform-origin: 50px 20px;
            }
          </style>
        </head>
        <body>
          <div class="box"></div>
        </body>
      </html>
    
  

2.4 Практическое применение

Вращение элемента вокруг конкретной точки

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

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Вращение стрелки часов</title>
          <style>
            .clock {
              position: relative;
              width: 200px;
              height: 200px;
              border: 5px solid #333;
              border-radius: 50%;
              margin: 50px auto;
            }

            .hand {
              position: absolute;
              bottom: 50%;
              left: 50%;
              width: 5px;
              height: 50%;
              background-color: #333;
              transform-origin: bottom center;
            }

            .hour-hand {
              transform: rotate(30deg); /* Пример для позиции на 1 час */
            }
          </style>
        </head>
        <body>
          <div class="clock">
            <div class="hand hour-hand"></div>
          </div>
        </body>
      </html>
    
  

Создание масштабируемого элемента

Изменение точки происхождения также полезно для масштабирования элементов относительно различных точек, что может быть полезно для создания динамических интерфейсов.

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Масштабируемый элемент</title>
          <style>
            .box {
              width: 100px;
              height: 100px;
              background-color: #1abc9c;
              transition: transform 0.5s;
              transform-origin: top left;
            }

            .box:hover {
              transform: scale(1.5);
            }
          </style>
        </head>
        <body>
          <div class="box"></div>
        </body>
      </html>
    
  
1
Задача
Модуль 1: Web Core, 12 уровень, 1 лекция
Недоступна
Центрированное вращение
Центрированное вращение
1
Задача
Модуль 1: Web Core, 12 уровень, 1 лекция
Недоступна
Вращение у угла
Вращение у угла
Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
No Name Уровень 48
24 мая 2025
+ лекция в копилке
Maxim Kulikov Уровень 36
1 мая 2025
В предыдущей лекции примеры были намного нагляднее с анимацией наведения