Данный Q-A является продолжением прошлого(стилизация текста SVG). В этом Q-A(Question-Answer) мы рассмотрим Crack effect, ниже будут приведены примеры этого эффекта, всего их будет 3 штуки. Первый пример (появление трещины вдоль текста с дальнейшей трансформацией):
Второй пример (верхняя часть текста отламывается и плавно съезжает после взмаха мечом, при том, что сам текст должен находится под наклоном примерно в 1-2deg):
Третий пример (похож на второй, но есть своё отличие, происходит два взмаха вдоль и поперёк текста):
Текст будет реализован на SVG, его размещение через clipPath, а анимация с помощью @keyframes. P.S. Все примеры срабатывают после клика.
Ответ Второй пример: В этом примере используется то же самое позиционирование, только в добавок нужно повернуть rect'ы на 1deg и после клика добавлять transform: translateX(N):
Осталось сделать polygon, который будет имитировать взмах мечом(или катаной:D), а в финальной версии этого примера мы будем смещать его также по оси X, примерно на 700-800px:
Финальная версия. После клика мы меняем местоположение polygon, при этом добавляется класс для #top, из-за чего и происходит смещение верхней части текста, также видна задержка после взмаха, так как у rect добавлен transition-delay:
function crack() { var rect = document.getElementById("top") var polygon = document.getElementById("sword") rect.classList.add("active") polygon.classList.add("_activate") } * { margin: 0 padding: 0 } body { background-color: #000000 display: flex justify-content: center align-items: center flex-direction: column } svg text { font-family: 'Russo One', sans-serif text-transform: uppercase font-size: 4em pointer-events: none } svg rect { transform: rotate(-1deg) transition: cubic-bezier(1, 0.3, 0.6, 1) 3.5s transition-delay: 1s } #top.active { transform: translateX(-30px) rotate(-1deg) opacity: 0 } #sword { transform: rotate(-1deg) translateX(-100px) } #sword._activate { animation: attack 0.4s 1 } @keyframes attack { to { transform: rotate(-1deg) translateX(750px) } } Breaking text