Делаем анимацию живым и вращаемся по часовой стрелке.
Я гуглил для появления эффекта div, как здесь.
Здесь изображение нарисовано с помощью < canvas >
"эффект радиальных часов "
Как я могу этого добиться.
Я нашел эту библиотеку JavaScript. Но это обеспечивает этот эффект только для изображения.
Мне нужен такой же эффект для div.
Каковы подходы, чтобы сделать то же самое.
Заранее спасибо.
4 ответа
Я создал эффект анимации 1/2 часа, который похож на тот, который вы хотите. Я надеюсь найти решение для обеспечения точной анимации.
Код
Вам нужна разметка для анимации:
<div class="wrapper">
<div class="content">
This is a good day. Maybe.
</div>
<div class="rotate"></div>
<div class="mask"></div>
</div>
- обертка - используется для установки позиции содержимого
- content - ваш контент в div (или любом другом элементе)
- вращение - анимация для имитации 1/2 часа
- маска - анимация, чтобы скрыть
content
И это CSS (написано в SCSS):
переменные
$width: 200px;
$height: 200px;
$duration: 2s;
$delay: 1s;
$color-alpha: #308991;
$color-beta: #80c144;
$color-gamma: #b83d54;
.wrapper {
position:relative;
width: $width;
height: $height;
margin:0 auto;
}
.content {
width: $width;
height: $height;
background: $color-beta;
border-radius: 50%;
padding: 2em;
overflow: hidden;
text-align:center;
}
/* Rotates 360 deg */
.rotate {
position: absolute;
z-index: 2;
top: 0;
right: 0;
width: $width / 2;
height: $height;
box-shadow:0 0 0 .15em $color-alpha;
background: $color-alpha;
transform-origin: 0 50%;
animation: rotate $duration linear 1 forwards;
animation-delay: 1s;
}
@keyframes rotate {
0% {
transform: rotate(0deg);
}
62% {
opacity:1;
}
99.99% {
z-index: 2;
}
100% {
transform: rotate(360deg);
opacity: 0;
z-index: -1;
}
}
/* The .content is hidden by .mask until the .rotate reveals it */
.mask {
position:absolute;
z-index:1;
top: -1px;
left: -1px;
width: $width + 2px;
height: $height + 2px;
background:
linear-gradient(top, transparent 50%, $color-alpha 50%),
linear-gradient(top, $color-alpha 50%, transparent 50%);
background:
linear-gradient(to top, transparent 50%, $color-alpha 50%),
linear-gradient(to top, $color-alpha 50%, transparent 50%);
background-position:100% 100%, 0 0;
background-size: 50% 200%;
background-repeat: no-repeat;
border-radius: 50%;
box-shadow:0 0 0 .65em $color-alpha;
animation: mask $duration / 1.25 linear 1 forwards;
animation-delay: (-$duration / 7.5) + $delay;
}
@keyframes mask {
50% {
background-position: 100% 0, 0 0;
}
99.99% {
z-index: 1;
}
100% {
background-position: 100% 0, 0 100%;
z-index: -1;
}
}
демонстрация
Вы можете увидеть живое демо на CodePen: 1/2 часовая анимация
Если я хорошо понимаю, вы ищете эффект таймера пирога. Вот чистый CSS, который я сделал некоторое время назад: http://css-tricks.com/css-pie-timer/.
Этот скрипт может конвертировать HTML в изображение. http://html2canvas.hertzen.com/