Вы перезаписываете свой атрибут transform, так как у вас может быть только один на элемент, поэтому вам нужен элемент для перемещения и еще один элемент div для дыхания; вот решение:
class FollowCursor {
constructor(element, window) {
this.element = element;
this.w = window;
this.w.onmousemove = this.move.bind(this);
}
move(e) {
this.element.setAttribute(
"style",
`transform: translate(${e.clientX}px, ${e.clientY}px);`
);
}
}
const el = document.querySelector(".el")
const cursorFollowing = new FollowCursor(el, window)
.el {
position: absolute;
left: 0;
top: 0;
width: 30px;
height: 30px;
background-color: yellow;
}
.breathing-element {
animation: a-breathing 8s infinite forwards;
width: 100%;
height: 100%;
background: red;
}
div {
position: relative
}
@keyframes a-breathing {
0% {
transform: scale(1);
}
60% {
transform: scale(1.8);
}
100% {
transform: scale(1);
}
}
<div>
<div class="el">
<div class="breathing-element"></div>
</div>
</div>
Вы также можете объединить несколько значений для атрибута преобразования, следуя этому шаблону:
transform: translate | transform | scale | rotate