css3动画之圆形运动轨迹
2024-08-29 08:35:55
css3中通过@keyframes定义动画,animation设置动画属性,从而实现动画效果;
在animation属性当中,可以规定动画的名称、整个动画的运行时间、运动的速度曲线以及其延迟时间、播放次数等。
animation
animation作为一个复合属性,包括了以下动画属性。
animation-name -------------------------------------规定动画名称
animation-duration ---------------------------------规定动画完成一次的时间
animation-timing-function ----------------------规定动画的运动速度曲线
animation-delay ------------------------------------规定动画的延迟时间
animation-iteration-count -----------------------规定动画的播放次数
animation-direction ------------------------------规定动画下一周期是否逆向开始
animation-fill-mode -------------------------------规定动画时间之外的状态
animation-play-state ------------------------------规定动画的运行和暂停
animation-timing-function
规定动画的速度曲线。默认是 "ease"。常用的运动速度曲线还有以下几种:
- linear:线性过渡。
- ease-in:由慢到快。
- ease-out:由快到慢。
- ease-in-out:由慢到快再到慢。
也可以直接使用贝塞尔曲线规定运行的速度曲线,贝塞尔曲线的4个数值需在[0, 1]区间内。
animation-direction
规定动画是否在下一周期逆向播放。默认是 "normal"。
- reverse:反方向运动
- alternate:先正常方向再反方向运动,持续交替
- alternate-reverse:先反方向再正常方向运动,持续交替
animation-fill-mode
规定对象动画时间之外的状态。常用值如下:
- none:默认值
- forwards:设置对象状态为动画结束时的状态
- backwards:设置对象状态为动画开始时的状态
圆形运动轨迹
实现代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>沿圆形轨迹运动</title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
html,body{
height: 100%;
}
#trajectory {
width: 300px;
height: 300px;
border: 4px solid #949494;
border-radius: 50%;
position: relative;
left: calc(50% - 153px);
top:calc(50% - 153px);
}
@keyframes moveX{
0% {left: -22px;}
100% {left: 282px;}
}
@keyframes moveY{
0% {top: -22px;}
100% {top: 282px;}
}
#move {
width: 40px;
height: 40px;
font-size: 12px;
background-color: #32c33a;
border-radius: 50%;
position: absolute;
left:-22px;
top:-22px;
animation: moveX 4s cubic-bezier(0.36,0,0.64,1) -2s infinite alternate, moveY 4s cubic-bezier(0.36,0,0.64,1) 0s infinite alternate;
}
</style>
</head>
<body>
<div id="trajectory">
<div id="move">Immortal brother</div>
</div>
</body>
</html>
以上代码的注意点如下:
- 对body高度100%的设置原因在于html5环境下body的默认高度为0
- calc在使用过程中,值与值之间的“-”和“+”两端的空格必不可少
- 动画当中的left和top值为物体运动的起始位置和结束位置,要注意border值
- 动画一次执行的运动轨迹仅为一半
- 速度曲线:cubic-bezier(0.36,0,0.64,1);
- 两个方向的延迟时间的设置 X:-2s;Y : 0s
- 先正方向再反方向持续交替运行 :alternate
最新文章
- day1 基础总结
- Hadoop系列(二)hadoop2.2.0伪分布式安装
- linux自带抓包工具tcpdump使用说明
- linux上安装shell编辑器与linux运维面试题
- WndPric的使用方法
- mapreduce程序来实现分类
- 六、spark常见问题总结(转载)
- c++邻接表存储图(无向),并用广度优先和深度优先遍历(实验)
- 从parcel.js打包出错,到拥抱nvm
- golang urlencode
- 利用 UDF 轻松迁移
- vim编辑器学习记录
- js模板引擎art-Template(以前的artTemplate)
- Spring Boot 非常好的学习资料
- openzeppelin-solidity/contracts的代码学习——access
- DOM树中节点与节点之间的关系图
- 基于C/S模式的android手机与PC机通信系统的开发
- c# 终止线程
- swoole WebSocket 消息推送
- C# 下载文件的四种方法
热门文章
- 基于zookeeper的MySQL主主负载均衡的简单实现
- [51nod1035]最长的循环节
- LeafLet之气泡框隐藏";x";图标
- MS SQL的CASE...WHEN...THEN...END语法
- MATLAB实现回归分析
- java接口中成员变量和方法的默认修饰符(转)
- ue4 改c++类名
- Unity3d 5.3.5使用sqlite3
- opengl Polygon Offset
- Python学习笔记(socket)