#javascript #css #svg #snapsvg #smil
На многих сайтах я видел как svg path в виде треугольника по hover/click превращается
в круг, и потом в книгу или ещё в какой то объект!
Сам вопрос: как это работает и что нужно анимировать?
Я пересмотрел кучу всякого кода и так и не понял, каким образом такое реализуется!
Если это не сложно, поясните, что анимируют и каким образом?
Этот пример не на SVG, но покажет суть:
.a {
border: 1px solid red;
width: 50px;
height: 50px;
border-radius: 50%;
animation: cub 20s linear infinite;
position: relative;
}
.a:before {
content: "";
animation: text 10s linear;
}
@keyframes cub {
0% {
width: 100px;
height: 100px;
}
5% {
border-radius: 0;
transform: translate(200px, 0);
}
10% {
transform: translate(200px, 20px)rotate(180deg);
}
15% {
transform: translate(200px, 100px)rotate(180deg)scale(3);
}
20% {
background: tomato;
}
25% {
transform: scale(.5);
}
100% {
width: 10px;
height: 10px;
opacity: 0;
}
}
@keyframes text {
10% {
content: "Hello word";
font-size: 30px;
position: absolute;
top: 0;
color: #fff;
transform: rotate(-220deg);
}
}
Ответы
Ответ 1
Сам вопрос: как это работает и что нужно анимировать? Автор задал очень хороший вопрос и привел пример реализации анимации path с помощью изменения аттрибута d="M.." Главное требование: для успешной реализации этой техники анимации - должно быть одинаковое количество узлов в начальном и конечном положении. Другими словами, если вы превращаете пятиугольник в квадрат, у вас должно быть по пять узлов в патче и для пятиугольника и для квадрата. Это можно реализовать с помощью любого векторного редактора, в котором есть инструменты для рисования патчей. Возьмем например Inkscape для получения согласованных патчей пятиугольника и прямоугольника Задаем размер документа 400х400 px Устанавливаем горизонтальные и вертикальные направляющие, проходящие через центр документа и узловые точки. На рис. ниже - это голубые линии. На них будем ориентироваться при перетаскивании узлов. В палитре инструментов выбираем многоугольники Рисуем пятиугольник Выбираем в меню: Контур / Оконтурить объект (Shift+Ctrl+C) Сохраняем файлы в формате *.svg, но редактор не закрываем Из всего кода файла нам нужна только одна строчка c атрибутом d="m.."Возвращаемся в Inkscape, выбираем инструмент - редактировать узлы контура и перетаскиваем узлы, чтобы получился квадрат Снова сохраняем файл и копируем новые значения атрибута d="m.." Полученные значения нам нужны для подстановки в переменную values=".." values="m200 724.1 124-0.2 0.9 231.3-246.8-1 0.9-230.3z; m200 724.1 122 88.6-46.6 143.4-150.8 0-46.6-143.4z" Точка с запятой разделяет значения путей для квадрата и пятиугольника. При анимации путь будет изменяться от одного значения к другому. Ниже код реализующий анимацию плавной трансформации одной фигуры в другую: Анимация атрибута "d" патча очень мощный и эффективный инстумент, позволяющий реализовать разнообразные трансформации. Вот более сложный пример анимации движения и развевания волос на ветру. UPD Трансформация одной формы в другую (без возврата в исходное положение) Ответ 2
Это мой второй кривожопый пример но он запускается по click через jQuery function с использованием TweenMax, все path брал из inkscape и не преследовал красоту ... $('.weed').click(function() { TweenMax.to(".st1", 1, { ease:Linear.easeNone, delay: 4.8, fill:"#357AC6" }); TweenMax.to(".st2", 3, { ease:Linear.easeNone, strokeDashoffset:"0" }); }); .weed .st0 { fill:#2666AD; } .weed .st1 { fill:#2666ad; } .weed .st2 { fill:none; stroke:#FFFFFF; stroke-width:5; stroke-linecap:round; stroke-linejoin:round; stroke-dasharray: 3779; stroke-dashoffset: 3779; }
Комментариев нет:
Отправить комментарий