#css3 #svg #анимация #css_animation #transform
Столкнулся с непониманием, как сделать поворот определенной части сгруппированной
svg части объекта. Приведу пример
.game_block {
position: relative;
width: 100%;
height: 100%;
min-height: 100vh;
}
.btn_gamePlay {
width: 100vh;
height: 100vh;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: none;
transition: 0.2s all;
}
.st7 {
fill: #70203c;
}
.st8 {
fill: #ef447e;
stroke: #5e112d;
stroke-width: 0.5;
stroke-miterlimit: 10;
}
.za_rightArm__one {}
.za_rightArm__two {
transition: .2s linear;
transform-origin: 100% 40px;
transform: rotate(0deg);
}
.game_block:hover .za_rightArm__two {
transition: .2s linear;
transform: rotate(35deg);
}
Идея следующая. По наведению на область в которой находиться кнопка, SVG картинка
выбрасывает руку вверх, при выходе из области hover опускает с предварительной задержкой.
Пытаюсь понять, как в SVG задается transform-origin, но что-то пока не дошло. Пробовал
читать но ясности не принесло. Как определить
вот эти вот точки объектов, а потом организовать правильный поворот. (Желательно
что б оно ещё и FF работало, а то постоянно мне там баги лезут)
Ответы
Ответ 1
Понял, свою ошибку. Можно сделать и без привлечения сторонних библиотек. Просто надо правильно задавать контрольные точки и делать смещение .game_block { position: relative; width: 100%; height: 100%; min-height: 100vh; } .btn_gamePlay { width: 100vh; height: 100vh; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background: none; transition: 0.2s all; } .st7 { fill: #70203c; } .st8 { fill: #ef447e; stroke: #5e112d; stroke-width: 0.5; stroke-miterlimit: 10; } .za_rightArm__one { transform-origin: 50px 100px; transition: .2s all; transform: translateX(0) translateY(0); } .game_block:hover .za_rightArm__one { transform-origin: 50px 100px; transition: .2s all; transform: translateX(-11px) translateY(-20px); } .za_rightArm__two { transform-origin: 50px 100px; transition: .2s all; transform: rotate(0deg) translateX(0) translateY(0); } .game_block:hover .za_rightArm__two { transform-origin: 50px 100px; transition: .2s all; transform: rotate(46deg) translateX(14px) translateY(-10px); }Ответ 2
Вариант очень сырой, выкладываю по предложению автора вопроса. Пример будет доработан. Анимация начинается после клика по кнопке .container { width:75%; height:75%; } .game_block { position: relative; width: 100%; height: 100%; min-height: 100vh; } .btn_gamePlay { width: 100vh; height: 100vh; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background: none; transition: 0.2s all; } .st7 { fill: #70203c; } .st8 { fill: #ef447e; stroke: #5e112d; stroke-width: 0.5; stroke-miterlimit: 10; }
Комментариев нет:
Отправить комментарий