
Поворот изображений на веб-странице можно выполнить без графических редакторов и JavaScript. CSS предоставляет для этого свойство transform с функцией rotate(), которая изменяет угол наклона элемента относительно его центра. Например, transform: rotate(45deg); повернёт изображение на 45 градусов по часовой стрелке.
Для задания направления вращения достаточно использовать положительные или отрицательные значения градусов. При значении -90deg изображение повернётся против часовой стрелки. Если требуется плавное вращение при наведении, можно добавить переход: transition: transform 0.3s; – и применить поворот в псевдоклассе :hover.
Чтобы избежать искажений, стоит контролировать точку поворота с помощью свойства transform-origin. По умолчанию вращение происходит вокруг центра, но можно задать любую позицию, например transform-origin: top left; – тогда изображение повернётся относительно верхнего левого угла. Такой подход позволяет точно выровнять элементы в дизайне без лишнего кода.
Поворот изображения с помощью свойства transform: rotate()

Свойство transform: rotate() изменяет угол поворота элемента относительно его центра. Значение указывается в градусах (deg), радианах (rad), градах (grad) или оборотах (turn).
Пример:
transform: rotate(45deg);
Повернёт элемент на 45° по часовой стрелке. Отрицательные значения, например rotate(-90deg), вращают против часовой стрелки.
Если нужно задать ось вращения, применяется свойство transform-origin. По умолчанию – центр элемента (50% 50%), но можно указать любое смещение, например:
transform-origin: top left;
Эта запись повернёт элемент относительно верхнего левого угла.
Для плавного вращения используется transition:
transition: transform 0.3s ease;
Это добавит анимацию при изменении угла.
Комбинировать поворот можно с другими трансформациями, например:
transform: rotate(30deg) scale(1.2);
В этом случае изображение одновременно увеличится и повернётся.
Задание центра поворота через свойство transform-origin
По умолчанию вращение элемента выполняется относительно его центра, однако свойство transform-origin позволяет изменить точку поворота. Это особенно полезно при создании анимаций или при позиционировании элементов с нестандартным центром вращения.
Свойство задаётся в виде координат: transform-origin: x y;, где x и y могут быть значениями в пикселях, процентах или ключевыми словами top, bottom, left, right, center. Проценты рассчитываются относительно размеров самого элемента. Например, transform-origin: 0% 0%; смещает ось вращения в верхний левый угол, а transform-origin: 100% 50%; – к центру правого края.
Для трёхмерных трансформаций допускается третье значение – ось Z: transform-origin: 50% 50% 20px;. Это изменяет глубину точки вращения и влияет на перспективу.
Рекомендуется явно задавать transform-origin при использовании сложных анимаций, чтобы избежать нежелательных смещений. Тестировать позицию точки поворота удобно через инструменты разработчика, изменяя координаты в реальном времени.
Анимация вращения изображения с помощью @keyframes

Для создания непрерывного вращения изображения применяется правило @keyframes в сочетании со свойством animation. Основная идея – задать изменение угла поворота от 0 до 360 градусов.
Пример CSS-кода:
img {
width: 200px;
animation: spin 4s linear infinite;
}
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
Параметр 4s определяет длительность одного полного оборота, а linear обеспечивает равномерную скорость вращения. Ключевое слово infinite делает анимацию цикличной.
Для изменения направления можно использовать отрицательное значение в rotate(), например rotate(-360deg). Если требуется замедление в начале и конце вращения, значение linear заменяется на ease-in-out.
Анимацию можно остановить или запустить с помощью изменения значения свойства animation-play-state между paused и running. Это удобно при наведении курсора или клике.
Поворот изображения при наведении курсора

Для создания эффекта поворота при наведении курсора используется свойство transform в сочетании с псевдоклассом :hover. Этот приём работает без скриптов и подходит для любых элементов с фоновым изображением.
Пример CSS-кода:
.element {
width: 200px;
height: 200px;
background: url('photo.jpg') no-repeat center/cover;
transition: transform 0.4s ease;
}
.element:hover {
transform: rotate(15deg);
}
Основные рекомендации:
- Используйте свойство
transitionдля плавности вращения. - Для обратного эффекта можно применить
transform: rotate(0deg);в исходном состоянии. - Если нужно изменить центр вращения, добавьте
transform-origin(например,center bottom). - При сложных анимациях комбинируйте
rotate()с другими функциями, напримерscale()илиtranslate().
Чтобы вращение выглядело естественно, избегайте резких углов и используйте небольшие значения поворота – от 5 до 20 градусов.
Комбинирование поворота с другими трансформациями

CSS позволяет объединять несколько трансформаций в одном свойстве transform. Последовательность указания функций имеет значение: результат зависит от порядка их применения.
Пример комбинирования поворота с масштабированием и сдвигом:
transform: rotate(45deg) scale(1.2) translateX(20px);
В этом случае элемент сначала поворачивается, затем увеличивается, а после смещается по оси X. Если поменять порядок, визуальный результат будет иным, так как координатная система меняется после каждой операции.
Для точной настройки можно использовать префикс transform-origin, чтобы задать центр поворота относительно края или произвольной точки:
transform-origin: top left;
Ниже приведена таблица с описанием наиболее часто используемых комбинаций:
| Комбинация | Описание | Пример значения |
|---|---|---|
rotate + scale |
Поворот с одновременным изменением размера | transform: rotate(30deg) scale(0.8); |
rotate + translate |
Смещение после вращения относительно новой оси | transform: rotate(15deg) translateY(50px); |
rotate + skew |
Поворот с искажением по оси X или Y | transform: rotate(25deg) skewX(10deg); |
Для плавных переходов между комбинированными состояниями можно добавить transition или анимацию через @keyframes. Это особенно полезно при создании динамичных интерфейсов и интерактивных эффектов.
Использование CSS-переменных для управления углом поворота
CSS-переменные позволяют централизованно задавать значения угла поворота и легко изменять их для нескольких элементов. Для этого создают переменную, например --rotate-angle, в корневом селекторе или родительском блоке:
:root { --rotate-angle: 45deg; }
Далее применяют эту переменную в свойстве transform через функцию rotate():
.element { transform: rotate(var(--rotate-angle)); }
Изменение значения переменной на уровне родителя автоматически обновляет все вложенные элементы, использующие этот угол. Например:
.container { --rotate-angle: 90deg; }
Для анимации угла удобно использовать transition совместно с переменной:
.element { transition: transform 0.3s ease; transform: rotate(var(--rotate-angle)); }
В JavaScript можно динамически менять CSS-переменную через style.setProperty, что упрощает создание интерактивного интерфейса:
document.documentElement.style.setProperty('--rotate-angle', '120deg');
Использование CSS-переменных повышает масштабируемость и упрощает поддержку кода, так как поворот на несколько элементов регулируется одним значением.
Вопрос-ответ:
Как повернуть изображение на 90 градусов с помощью CSS?
Для этого можно использовать свойство transform. Например, transform: rotate(90deg); повернёт изображение на 90 градусов по часовой стрелке. Это свойство можно добавить к селектору изображения в CSS, и поворот произойдёт без изменения исходного файла.
Можно ли сделать плавный поворот изображения на CSS при наведении?
Да, для плавного эффекта используют свойство transition. Например, transition: transform 0.5s; вместе с :hover { transform: rotate(45deg); } позволит изображению плавно вращаться на 45 градусов, когда курсор наведён на него.
Как изменить точку вращения изображения?
Точка вращения задаётся с помощью свойства transform-origin. По умолчанию изображение вращается вокруг центра, но можно изменить координаты, например: transform-origin: top left; или transform-origin: 50% 100%;, чтобы вращение происходило относительно верхнего левого угла или нижней центральной точки.
Поддерживает ли Internet Explorer поворот изображений через CSS?
Современные версии Internet Explorer (начиная с IE9) поддерживают transform, поэтому базовые вращения работают. Для более старых версий использовались фильтры вроде filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);, но это устаревший метод и его применение ограничено.
Можно ли повернуть изображение на CSS на произвольный угол с помощью переменной?
Да, можно использовать CSS-переменные. Например: :root { --angle: 30deg; } img { transform: rotate(var(--angle)); }. Это позволяет изменять угол вращения в одном месте и применять его к нескольким изображениям одновременно.
Как повернуть изображение на 90 градусов с помощью CSS?
Для поворота изображения можно использовать свойство transform с функцией rotate(). Например, чтобы повернуть изображение на 90 градусов по часовой стрелке, нужно добавить к нему CSS: transform: rotate(90deg);. Если нужно повернуть против часовой стрелки, можно указать отрицательное значение: transform: rotate(-90deg);. Также стоит учитывать, что при повороте изображение может выходить за пределы блока, поэтому иногда добавляют display: inline-block; или устанавливают размеры контейнера.
