Как использовать свойство rotate?
Добрый день, помогите пожалуйста с версткой.
Есть круг, который позиционируется по центру. На круге есть элементы. При клике его свойство ротейт должно изменять на + 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)`); });
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для использования свойства rotate в CSS, вы можете использовать функцию rotate() для поворота элемента на определенный угол. Это свойство позволяет вам поворачивать элементы веб-страницы как по часовой, так и против часовой стрелки.
Пример использования свойства rotate в CSS:
.rotate { transform: rotate(45deg); }
В этом примере мы создали класс .rotate, которому присвоено свойство transform с функцией rotate(), указывающей угол поворота в 45 градусов. Вы можете изменить значение угла по вашему усмотрению.
Вы также можете комбинировать свойство rotate с другими свойствами трансформации, такими как scale или translate, для создания более сложных эффектов.
Например, вы можете повернуть элемент на 45 градусов и увеличить его в 2 раза:
.rotate { transform: rotate(45deg) scale(2); }
Таким образом, свойство rotate позволяет вам управлять поворотом элементов на веб-странице, что открывает широкие возможности для создания интересного и динамичного дизайна. Не забывайте проверять совместимость с различными браузерами, чтобы ваш дизайн отображался корректно на всех устройствах.