У меня есть кнопка, к которой я применил постоянную вращающуюся анимацию.
@keyframes rotateinf {
from { transform: rotate( 0deg); }
to { transform: rotate(360deg); }
}
Проблема в том, что к дочернему тексту тоже применяется анимация.
Мне удалось найти дешевое решение этой проблемы: я создал элемент и установил абсолютную позицию, поместив его прямо поверх кнопки с атрибутами top и right.
Класс imptxt просто устанавливает шрифт.
<span class = "imptxt" style = "position: absolute;z-index: 10; color: black; top:40%; right:44%; pointer-events: none;"
>
All about
</span>
<span class = "imptxt" style = "position: absolute;z-index: 10; color: black; top:48%; right:48%; pointer-events: none;"
>
me
</span>
<button id = "trns" class = "buttonrot" onmousedown = "redirect()"></button>
Класс buttonrot следующий:
padding: 200px ;
border-radius: 50px;
z-index: 9;
animation:fadeintop 1s ease-in-out, rotateinf 10s linear infinite 1s;
position: relative;
display: inline-block;
cursor: pointer;
overflow: hidden;
transform-origin: center;
Вот результат (.gif):

Есть ли реальный и лучший способ заставить текст оставаться неподвижным и применить анимацию вращения к кнопке?
Фрагмент кода:
.buttonrot {
padding: 200px;
border-radius: 50px;
z-index: 9;
animation: fadeintop 1s ease-in-out, rotateinf 10s linear infinite 1s;
position: relative;
display: inline-block;
cursor: pointer;
overflow: hidden;
transform-origin: center;
}
@keyframes rotateinf {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}<span class = "imptxt" style = " position: absolute;z-index: 10; color: black; top:40%; right:44%; pointer-events: none;">All about</span>
<span class = "imptxt" style = "position: absolute;z-index: 10; color: black; top:48%; right:48%; pointer-events: none;">me</span>
<button id = "trns" class = "buttonrot" onmousedown = "redirect()"></button>





Поместите текст в span внутри кнопки и переверните анимацию в диапазоне.
.buttonrot {
padding: 50px;
border-radius: 10px;
animation: rotateinf 10s linear infinite;
position: relative;
display: inline-block;
cursor: pointer;
overflow: hidden;
}
.buttonrot span {
display: inline-block;
animation: rotateinf 10s linear reverse infinite;
}
@keyframes rotateinf {
100% {
transform: rotate(360deg);
}
}<button id = "trns" class = "buttonrot" onmousedown = "redirect()"><span>All About Me</span></button>Мне кажется, текст немного размыт.
Спасибо! Похоже, это работает :) Не могу поверить, что ответ оказался таким простым...
Вы даже можете использовать свойство ::after для достижения желаемого без каких-либо дополнительных элементов.
.buttonrot {
padding: 50px;
border-radius: 10px;
animation: rotateinf 10s linear infinite;
position: relative;
display: inline-block;
cursor: pointer;
overflow: hidden;
}
.buttonrot::after {
content: attr(data-text);
display: inline-block;
animation: rotateinf 10s linear reverse infinite;
}
@keyframes rotateinf {
100% {
transform: rotate(360deg);
}
}<button id = "trns" class = "buttonrot" onmousedown = "redirect()" data-text = "About Me"></button>
Добро пожаловать в СО. Возможно, вам будет полезно прочитать раздел «Помощь» на сайте , когда нужно задать хороший вопрос . Чтобы получить наилучшие ответы на ваш вопрос, нам хотелось бы видеть, что вы сначала попытались решить проблему самостоятельно, используя минимально воспроизводимый пример . Вот контрольный список вопросов, который может оказаться вам полезным...