Как использовать свойство rotate?

Ссылка скопирована
1 ответ

Добрый день, помогите пожалуйста с версткой.
Есть круг, который позиционируется по центру. На круге есть элементы. При клике его свойство ротейт должно изменять на + 30 дег.
Но круг когда позиционируется по центру начинается смещаться по не понятной мне траектории, я не могу понять как это исправить.
https://codepen.io/scrappyjs666/pen/KKrvwye

Если же не позиционировать по центру (в тевтулзах просто стрелочкой увеличивать ротейт, то он вращается как раз на месте (но тут правда не заметно вращение, но все же)

https://codepen.io/scrappyjs666/pen/YzRxPLW

Дополнительно:

const button = document.querySelector('.test'); const circle = document.querySelector('.circle');  button.addEventListener('click', () => {   circle.style.transform = `translate(-50%, -50%) rotate(${circle.style.transform+30}deg)`; });

const button = document.querySelector('.test'); const circle = document.querySelector('.circle'); button.addEventListener('click', () => { circle.style.transform = `translate(-50%, -50%) rotate(${circle.style.transform+30}deg)`; });

  • Спасибочки
  • sw213, на будущее: В скриптах (да и в css) лучше отделить зависимость одного свойства трансформации от другого. Бывают случаи, когда их может быть два, три и более, плюс они могут по разному изменяться.
    Тут лучшим подходом будет устанавливать их отдельно друг от друга с помощью пользовательских свойств.

    В вашем случае будет примерно так

    .circle {   /* ... */   --translate: translate(-50%, -50%);   --rotate: rotate(0deg);   transform: var(--translate) var(--rotate); }  /* можно отдельно изменить свойство, например по :hover */  .circle:hover {   --rotate: rotate(90deg); }

    .circle { /* ... */ --translate: translate(-50%, -50%); --rotate: rotate(0deg); transform: var(--translate) var(--rotate); } /* можно отдельно изменить свойство, например по :hover */ .circle:hover { --rotate: rotate(90deg); }

    button.addEventListener('click', () => {   // в скрипте также можно изменить отдельное свойство   circle.style.setProperty('--rotate', `rotate(${circle.style.rotate+30}deg)`); });

    button.addEventListener('click', () => { // в скрипте также можно изменить отдельное свойство circle.style.setProperty('--rotate', `rotate(${circle.style.rotate+30}deg)`); });

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Максим Павлов Ответ

Для использования свойства rotate в CSS, вы можете использовать функцию rotate() для поворота элемента на определенный угол. Это свойство позволяет вам поворачивать элементы веб-страницы как по часовой, так и против часовой стрелки.

Пример использования свойства rotate в CSS:

.rotate {
    transform: rotate(45deg);
}

.rotate { transform: rotate(45deg); }

В этом примере мы создали класс .rotate, которому присвоено свойство transform с функцией rotate(), указывающей угол поворота в 45 градусов. Вы можете изменить значение угла по вашему усмотрению.

Вы также можете комбинировать свойство rotate с другими свойствами трансформации, такими как scale или translate, для создания более сложных эффектов.

Например, вы можете повернуть элемент на 45 градусов и увеличить его в 2 раза:

.rotate {
    transform: rotate(45deg) scale(2);
}

.rotate { transform: rotate(45deg) scale(2); }

Таким образом, свойство rotate позволяет вам управлять поворотом элементов на веб-странице, что открывает широкие возможности для создания интересного и динамичного дизайна. Не забывайте проверять совместимость с различными браузерами, чтобы ваш дизайн отображался корректно на всех устройствах.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно