#css #css3 #svg #анимация
Я хочу воспроизвести анимацию gif с помощью чистого CSS или SVG, возможно ли это
сделать?
Меня также устроят другие подходящие решения.
Ниже приведен фрагмент, который воспроизводит только статический смайлик.
body {
background: #fff;
margin: 50px;
}
.loader {
position: relative;
border-radius: 50%;
box-sizing: border-box;
width: 80px;
height: 80px;
background: linear-gradient(to bottom, #fff 50%, #51cf66 50%);
}
.loader:before {
content: "";
position: absolute;
left: 10px;
right: 10px;
top: 10px;
bottom: 10px;
border-radius: 50%;
background: #fff;
}
.dot {
position: absolute;
width: 10px;
height: 10px;
border-radius: 50%;
background: #51cf66;
}
.dot:first-child {
left: 10px;
top: 10px;
}
.dot:last-child {
right: 10px;
top: 10px;
}
Ответы
Ответ 1
Хотя эта анимация для смайликов может быть достигнута с использованием CSS, но SVG, безусловно, является лучшим вариантом, главным образом, по следующим причинам: анимационные градиенты - не обеспечивают лучшую производительность сделать круг по каждой стороне смайла будет очень трудно, без добавления семантической разметки SVG - это инструмент, созданный для того, чтобы было просто рисовать такие формы и оживлять их. Это упрощает их обслуживание, а код легче читать и понимать. И вот код (упрощенный из codepen): svg { width:100px; height:auto; display:block; transform:rotateZ(0deg); margin:0 auto; } .smile, .eyes { stroke:teal; stroke-width:1.3; stroke-linecap:round; fill:transparent; } svg:hover {animation:rotate 1.2s cubic-bezier(0.65, 0.000, 0.75, 1.000);} svg:hover .smile{animation: smile 1s cubic-bezier(0.2, 0.000, 0.8, 1.000);} svg:hover .eyes{animation: eyes 1s cubic-bezier(.7, 0.000, 0.4, 1.000);} @keyframes rotate { to { transform:rotateZ(720deg); } } @keyframes smile { 50% { stroke-dasharray:20,5.1327;} } @keyframes eyes { 70% { stroke-dasharray:1,0,.5,23.6327;} } h1 {text-align:center;color:teal;}Hover me !
Как создаются смайлик и анимация? Этот смайлик выполнен с двумя элементами окружности SVG (один для глаз и один для улыбки) и атрибутом stroke-dasharray, чтобы сделать глаза и улыбку. Анимация: Svg вращается при наведении с использованием анимации CSS, а атрибут stroke-dasharray анимируется, чтобы глаза «исчезали» в улыбке. Длина улыбки также изменяется примерно на 3/4 длины окружности. Easing function : Гладкий эффект достигается с помощью функций easing кривой Безье. Время анимации также изменено, чтобы приблизиться к желаемой анимации смайликов. Источник: CSS rotating smiling face loader] @web-tiki
Комментариев нет:
Отправить комментарий