使用javascript可以设置css动画的当前百分比
Use javascript in order to set the current percentage of a css animation
我使用css动画来表示一天的太阳周期(从早上6点到下午6点)。不幸的是,我还希望能够根据一天中的时间设置当前的百分比(例如,如果当前时间是上午12点,我希望将太阳放在动画的50%。
这是我的小提琴:http://jsfiddle.net/vyhjt6mu/3/
这是我的代码:
/* Chrome, Safari, Opera */
@-webkit-keyframes sunAnimation {
0% {
left: -100px;
top: 30%;
}
25% {
left: calc(25% - 25px);
top: 20%;
}
50% {
left: calc(50% - 40px);
top: 10%;
}
75% {
left: calc(75% + 25px);
top: 20%;
}
100% {
left: calc(100% + 100px);
top: 30%;
}
}
@keyframes sunAnimation {
0% {
left: -100px;
top: 30%;
}
25% {
left: calc(25% - 25px);
top: 20%;
}
50% {
left: calc(50% - 40px);
top: 10%;
}
75% {
left: calc(75% + 25px);
top: 20%;
}
100% {
left: calc(100% + 100px);
top: 30%;
}
}
.sun {
width: 100px;
height: 100px;
position: absolute;
animation-name: sunAnimation;
animation-duration: 60s;
animation-timing-function: linear;
-webkit-animation-name: sunAnimation;
/* Chrome, Safari, Opera */
-webkit-animation-duration: 60s;
/* Chrome, Safari, Opera */
-webkit-animation-timing-function: linear;
/* Chrome, Safari, Opera */
}
如何简单地设置css3动画的当前百分比?如果做这件事很复杂,那么有图书馆吗?
谢谢你的帮助。
这不是重复的,因为需求不同。
要回答您的实际问题:是的,您可以使用CSS变量和JS的组合来实现这一点。
$(function () {
$(window).mousemove(function (e) {
var t = (-1/$(window).width()*e.pageX);
document.documentElement.style.setProperty('--delay', t+'s');
});
});
:root {
--delay: 0;
}
.box {
width: 20px;
height: 20px;
background-color: #ff6600;
animation: move 1s;
animation-play-state: paused;
animation-delay: var(--delay);
}
@keyframes move {
100% {
transform: translate(200px, 100px) scale(2) rotate(180deg);
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="box">
</div>
您可以指定负animation-delay
属性。
示例:http://jsfiddle.net/vyhjt6mu/4/
在这个例子中,我设置了animation-delay: -30s
,所以动画将从中间点开始
对于这个任务,你可以在CSS中设置24
不同的类(每小时一个),就像一样
.h00 {
animation-delay: 0s;
-webkit-animation-delay: 0s;
}
.h01 {
animation-delay: -2.5s;
-webkit-animation-delay: -2.5s;
}
.h02 {
animation-delay: -5s;
-webkit-animation-delay: -5s;
}
...
.h22 {
animation-delay: -55s;
-webkit-animation-delay: -55s;
}
.h23 {
animation-delay: -57.5s;
-webkit-animation-delay: -57.5s;
}
其中每小时之间的延迟差为2.5
秒(60s/24
);然后,通过JS,通过getHours()
方法获得当前小时数,并将正确的类名应用于元素
相关文章:
- 如何设置html元素填充的动画
- 如何使用动画实现纸张推车
- 如何在生成下载文件时显示加载动画
- 剑道网格jQuery动画()问题
- EaseJS拖放;放下(动画CC)电影剪辑的鼠标坐标
- 使用javascript可以设置css动画的当前百分比
- 在一定百分比上禁用引导进度条的平滑动画过渡
- 制作jQuery高度百分比动画
- 图表.js动画进度进度百分比
- jQuery使用calc作为值(从百分比中减去px)对位置进行动画处理
- 使javascript动画条与动画百分比同步
- 滚动到顶部,动画为百分比
- 函数.动画百分比不起作用
- 边缘动画自定义百分比预加载程序
- jQuery:如何使用一个元素的百分比宽度作为动画另一个元素的值,并确保它的工作,即使在调整窗口的大小
- 在Android Native Browser (4.x)上动画化翻译百分比
- CSS圆圈动画显示百分比
- 如何显示网站加载的百分比,而不是gif或任何动画图像
- 我可以用JavaScript检测CSS关键帧动画中的百分比
- 基于滚动百分比的动画翻译