
Свойство transform в CSS позволяет поворачивать элементы на странице без использования изображений или скриптов. Основной инструмент для этого – функция rotate(), которая принимает значение угла в градусах, радианах или градусах с дробной частью. Например, transform: rotate(45deg); повернет элемент на 45 градусов по часовой стрелке.
Для управления направлением используется знак: положительное значение угла задает поворот по часовой стрелке, отрицательное – против. Если необходимо задать поворот относительно определенной точки, применяется свойство transform-origin. По умолчанию вращение происходит вокруг центра объекта, но его можно сместить, например: transform-origin: top left;.
В сложных интерфейсах часто комбинируют несколько функций трансформаций. Например, transform: rotate(30deg) scale(1.2); одновременно увеличивает элемент и поворачивает его. Такой подход особенно полезен для анимаций, когда вращение сочетается с изменением размера или положения.
Для плавного эффекта рекомендуется использовать transition. Комбинация transition: transform 0.3s ease; и transform: rotate(180deg); позволяет получить аккуратный разворот при взаимодействии с пользователем, например при наведении курсора.
Синтаксис свойства transform с функцией rotate()

Функция rotate() задаёт вращение элемента вокруг его центра или другой заданной точки трансформации. Угол указывается в градусах (deg), радианах (rad), градах (grad) или оборотах (turn).
Базовый синтаксис:
transform: rotate(угол);
Примеры:
| Запись | Результат |
|---|---|
transform: rotate(45deg); |
Поворот на 45 градусов по часовой стрелке |
transform: rotate(-90deg); |
Поворот на 90 градусов против часовой стрелки |
transform: rotate(0.5turn); |
Поворот на пол-оборота (180 градусов) |
transform: rotate(1rad); |
Поворот примерно на 57.3 градуса |
При указании положительного значения вращение происходит по часовой стрелке, отрицательного – против. Для изменения точки вращения используется свойство transform-origin, например: transform-origin: top left;.
Рекомендуется использовать градусы для читаемости и turn для работы с целыми оборотами, чтобы упростить понимание кода.
Поворот на фиксированный угол в градусах

Для поворота элемента используется свойство transform с функцией rotate(). Угол задаётся в градусах, например rotate(45deg) повернёт объект по часовой стрелке на 45°.
Пример: transform: rotate(90deg); разворачивает элемент вертикально. Значение 180deg создаёт переворот, а 270deg возвращает его в вертикальное положение, но с обратным направлением.
Отрицательные значения поворачивают против часовой стрелки. Так, rotate(-30deg) наклонит элемент влево на 30°.
По умолчанию точкой вращения является центр элемента. Изменить её можно через transform-origin, например transform-origin: left top; повернёт объект вокруг верхнего левого угла.
Для резких изменений используется только rotate(), а плавные анимации достигаются добавлением transition к свойству transform.
Использование единиц измерения deg, turn и rad

Свойство transform: rotate() принимает угол поворота в различных единицах. На практике применяются три варианта: deg, turn и rad.
deg – наиболее распространённый формат. Один полный оборот равен 360deg. Для поворота на четверть окружности достаточно указать 90deg, половина оборота – 180deg.
turn удобно использовать при работе с долями оборота. Например, 0.25turn соответствует 90deg, а 1turn всегда означает полный круг. Такой формат облегчает вычисления, если необходимо указать часть оборота.
rad применяется реже, но полезен при интеграции с тригонометрическими функциями в JavaScript или математическими вычислениями. Полный круг равен 2rad * π (около 6.283rad), четверть – π/2rad.
Для удобства: 90deg = 0.25turn = 1.5708rad, 180deg = 0.5turn = 3.1416rad, 360deg = 1turn = 6.2832rad. При проектировании анимаций лучше выбирать deg или turn, а rad использовать в случаях, где требуется математическая точность.
Задание центра поворота с помощью transform-origin

transform-origin: left top;– поворот относительно верхнего левого угла.transform-origin: right bottom;– вращение вокруг правого нижнего угла.transform-origin: 0 100%;– использование процентных значений для смещения относительно размеров элемента.transform-origin: 20px 40px;– фиксированные координаты в пикселях.
При работе с 3D-трансформациями допускается третий параметр – ось Z:
transform-origin: 50% 50% -20px;
Рекомендации:
- Используйте проценты для адаптивных блоков, чтобы точка вращения сохраняла пропорции при изменении размеров.
- Пиксели удобны при фиксированных макетах, когда нужно привязать анимацию к конкретной координате.
- Для сложных анимаций комбинируйте
transform-originсtransitionили@keyframesдля контроля динамики вращения.
Создание плавного поворота с transition

Для анимации вращения достаточно добавить к элементу свойство transition, указывая время и функцию изменения. Например, transition: transform 0.6s ease; обеспечит равномерное замедление к концу вращения.
При наведении курсора можно применить правило :hover с поворотом. Код:
.box {
transition: transform 0.6s ease;
}
.box:hover {
transform: rotate(90deg);
}
Значение в градусах задаёт конечный угол. Используя разные значения времени (например, 0.3s или 1s), можно контролировать скорость. Для постоянного движения рекомендуется свойство linear, для акцентированных эффектов – ease-in или ease-out.
Чтобы сохранить производительность, рекомендуется использовать transform, а не свойства вроде top или left, так как вращение через GPU обрабатывается быстрее.
Анимация бесконечного вращения через keyframes

Для создания непрерывного вращения объекта используется CSS-анимация с ключевыми кадрами (@keyframes). Основной принцип – изменение свойства transform: rotate() от 0 до 360 градусов. Например:
@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
Далее анимация применяется к элементу через свойства animation-name, animation-duration и animation-iteration-count. Для бесконечного вращения задаётся infinite:
div { animation-name: spin; animation-duration: 4s; animation-iteration-count: infinite; animation-timing-function: linear; }
Важно использовать linear для animation-timing-function, чтобы скорость вращения оставалась постоянной, без ускорений и замедлений. Продолжительность можно изменять в зависимости от желаемой скорости: меньшее значение – быстрее вращение.
Для одновременного масштабирования или изменения прозрачности вращающегося объекта можно комбинировать свойства в keyframes:
@keyframes spinScale { 0% { transform: rotate(0deg) scale(1); opacity: 1; } 50% { transform: rotate(180deg) scale(1.2); opacity: 0.8; } 100% { transform: rotate(360deg) scale(1); opacity: 1; } }
Для снижения нагрузки на рендеринг рекомендуется использовать transform: rotate() вместо top/left, так как GPU оптимизирован под трансформации и анимации на уровне композитинга.
Чтобы несколько элементов вращались с разной скоростью или фазой, можно добавлять animation-delay и уникальные animation-duration, создавая визуально сложные эффекты без JavaScript.
Вопрос-ответ:
Как повернуть элемент на странице вокруг своей оси с помощью CSS?
Для поворота элемента используется свойство transform с функцией rotate(). Например, transform: rotate(45deg); повернёт блок на 45 градусов по часовой стрелке вокруг центра. Центр вращения можно изменить с помощью свойства transform-origin.
Можно ли задать несколько типов поворота сразу, например по X и Y?
Да, для трёхмерного вращения используют функции rotateX(), rotateY() и rotateZ(). Их можно комбинировать, например: transform: rotateX(30deg) rotateY(45deg);. При этом важно включить perspective на родительском элементе, чтобы увидеть эффект объёма.
Как сделать плавное вращение элемента при наведении курсора?
Необходимо использовать CSS-переходы. Например: transition: transform 0.5s ease; добавляет плавность при изменении свойства transform. После этого можно задать другой угол поворота при наведении: :hover { transform: rotate(180deg); }. Элемент будет вращаться плавно при наведении.
Можно ли вращать объект относительно определённого угла, а не центра?
Да, для этого используется transform-origin. Оно задаёт точку, вокруг которой происходит трансформация. Например, transform-origin: top left; заставит элемент вращаться вокруг верхнего левого угла. Также можно задавать конкретные координаты в пикселях или процентах.
Какие ограничения есть при использовании CSS-поворотов?
CSS-трансформации влияют только на визуальное отображение элемента, не меняя его фактическое положение в потоке документа. При вращении могут появляться проблемы с перекрытием элементов и сглаживанием. Для сложных 3D-эффектов важно учитывать производительность на мобильных устройствах.
Как повернуть элемент на 90 градусов вокруг своей оси с помощью CSS?
Для поворота элемента в CSS используется свойство transform. Чтобы повернуть объект на 90 градусов, можно задать правило transform: rotate(90deg);. При этом угол указывается в градусах, и поворот осуществляется относительно центра элемента. Если необходимо изменить точку вращения, применяется свойство transform-origin, например, transform-origin: top left;, чтобы вращение происходило относительно верхнего левого угла. Такой подход позволяет изменять ориентацию элементов без изменения их положения в потоке документа.
