34.前端笔记-CSS3-动画

news/2024/10/25 17:24:30/

1、动画

动画animation是CSS3中具有颠覆性的特征之一,可以通过设置多个节点来精确控制一个或一组动画,常用来实现复杂的动画效果
相比较过渡,动画可以实现更多变化,更多控制,连续自动播放等效果

2、动画的基本使用

1、先定义动画
2、在使用动画

2.1 定义动画keyframes

2.1.1 动画序列

  • 0%是动画的开始,100%是动画的结束,范围是0-100。这样的规则就是动画序列
  • 在@keyframes中规定某些CSS样式,就能创建由当前样式逐渐改为新样式的动画效果
  • 动画是使元素从一种样式逐渐变为另一种样式的效果 。可以改变任意多的样式,任意多的次数
  • 要用百分比规定变化发生的时间,或用关键词“from"和”to",等同于0%和100%

2.1.2 语法

/*动画名称是自己取得*/
@keyframes 动画名称{
/*开始状态*/0%{width:100px;}
/*结束状态*/100%{width:200px;}
}

2.2 元素使用动画

2.2.1 语法

div{/*调用动画*/animation-name:动画名称;/*持续时间,单位是秒s*/animation-duration:持续时间; 
}

练习1:

打开页面,盒子就从左边走到右边

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>@keyframes moving{0%{transform:translateX(0);}100%{transform: translate(300px);}}div{width: 100px;height: 100px;background-color: orange;animation-name: moving;animation-duration: 2s;}</style>
</head>
<body><div></div>
</body>
</html>

动画1

练习2:

设置动画多个状态,盒子转一圈回到原点

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>@keyframes move{0%{transform:translate(0);}25%{transform: translate(1000px,0);}50%{transform: translate(1000px,400px);}75%{transform: translate(0,400px);}100%{transform: translate(0,0);}}div{width: 100px;height: 100px;background-color: orange;/*动画名称*/animation-name: move;/* 持续时间 */animation-duration: 10s;}</style>
</head>
<body><div></div>
</body>
</html>

动画2

练习3:波纹放大

opacity:透明度属性0-完全透明 1.0完全不透明
position:定位
box-shadow:阴影
animation:pulse 1.2s linear infinite

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.map {width: 100%;height: 616px;background: url(../images/map.webp) no-repeat;}.city {position: absolute;top: 381px;left: 721px;color: #fff;}.dotted {width: 8px;height: 8px;border-radius: 50%;background-color: orange;}.city div[class^="wave"] {width: 8px;height: 8px;box-shadow: 0 0 12px rgb(229, 197, 137);position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);border-radius: 50%;animation: wave 1.2s linear infinite;}.city div.wave2{animation-delay: 0.4s;}.city div.wave3{animation-delay: 0.8s;}@keyframes wave{0%{}70%{width: 40px;height: 40px;opacity: 1;}100%{width: 80px;height: 80px;opacity: 0;}}</style>
</head><body><div class="map"><div class="city"><!-- city没有设置宽带高度,所以dotted就是city的大小 --><div class="dotted"></div><div class="wave1"></div><div calss="wave2"></div><div class="wave3"></div></div></div></body></html>

动画3波纹效果

2.3 动画的属性

在这里插入图片描述

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>@keyframes move {0% {transform: translate(0);}25% {transform: translate(1000px, 0);}50% {transform: translate(1000px, 400px);}75% {transform: translate(0, 400px);}100% {transform: translate(0, 0);}}div {width: 100px;height: 100px;background-color: orange;/*动画名称*/animation-name: move;/* 持续时间 */animation-duration: 10s;/* 何时开始 */animation-delay: 1s;/* 运动曲线 */animation-timing-function: ease;/* 循环播放次数,默认是1,无限infinite */animation-iteration-count: 2;/* 是否反方向播放:默认是normal,反方向写alternate循环播放次数必须设置大于1才可以看到反向效果 */animation-direction: alternate;/* 动画结束后的状态:默认是backwards回到起始状态,可以停留在结束状态forwards */animation-fill-mode: forwards;}/* 鼠标经过,动画停止 */div:hover {/* 规定动画是否正在运行或暂停,默认是running,暂停是paused */animation-play-state: paused;}</style>
</head><body><div></div>
</body></html>

动画属性简写

前两个属性(动画名称 持续时间)一定要写,其余可以省略
简写属性里不包括animation-play-state,要用的话得单独写

animation:动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或结束状态
animation: move 5s linear 2s infinate alternate;

速度曲线细节

animation-timimg-function:规定动画的速度曲线,默认是ease

描述
linear匀速
ease默认。低速开始-然后加快-结束前变慢
ease-in动画以低速开始
ease-out动画以低速结束
ease-in-out动画以低速开始和结束
steps()指定了时间函数中的间隔数量(步长)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div{width: 0;height: 30px;font-size: 20px;background-color: orange;white-space: nowrap;overflow: hidden;animation-name: change;animation-timing-function: steps(10);animation-duration: 4s;animation-fill-mode: forwards;}@keyframes change{0%{width: 0;}100%{width: 200px;}}</style>
</head>
<body><div>我们一个家名字叫中国</div>
</body>
</html>

动画3步长

练习:极光下奔跑的熊

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>*{margin: 0;padding: 0}body {width: 100%;height: 550px;background: url(../images/media/bg2.png) repeat-x 0 100px;background-color: #e6eef0;vertical-align: middle;animation: mountain 8s linear forwards infinite;}.mountain{position: relative;top:200px;left: 0;width: 100%;height: 330px;background: url(../images/media/bg1.png) repeat-x 0 100px;/* background-color: #ccc; */vertical-align: middle;animation: mountain 8s linear forwards infinite;}div {position: absolute;width: 200px;height: 100px;top: 220px;background: url(../images/media/bear.png);animation: bear 1s infinite steps(8), run 3s forwards;}@keyframes bear {0% {background-position: 0 0;}100% {background-position: -1600px 0;}}@keyframes run {0% {left: 0;}100% {left: 50%;transform: translate(-50%, 0);}}@keyframes mountain {0% {background-position: 0;}100% {background-position: -3840px 0;}}</style>
</head><body><div class="mountain"><div></div></div></body></html>

奔跑的熊


http://www.ppmy.cn/news/5754.html

相关文章

DNS协议分析

上一篇文章从工作原理角度分析了DNS的作用与意义&#xff0c;这次来看看DNS到底是以什么形式进行通信的。 DNS报文格式如下所示&#xff1a; DNS报文由12字节长的首部和4个长度可变的字段组成。 1.标识&#xff0c;由主机端设置&#xff0c;为的是唯一标识当前DNS报文。 2.1…

GridLayout案例

GridLayout-网格布局案例 1.网格布局-GridLayout 1.简介 无限细的线绘制的分割区域成行成列&#xff0c;和棋盘的样子差不多2.注意点 自己设置行数和列数自己控件在几行几列自己定义跨越的行数和列数自己设置子布局的排列的样式3.常见属性 4.网格布局属性 android:columnCount&…

Unprojecting_text_with_ellipses过程分析

文章目录一、单应性1. 图片实例2. 数学表达式二、算法思路1. 算法流程2. 透视失真具体解决方案3. 图片旋转具体解决方案4. 图片文字倾斜具体解决方案三、实际处理过程四、算法问题五、OCR识别原文链接 https://mzucker.github.io/2016/10/11/unprojecting-text-with-ellipses.h…

手办商城系统|Springboot+vue+ElementUI手办商城系统

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…

【软件测试】概念篇

目录 一、需求 1.1用户需求 1.2软件需求 1.3需求的重要性 二、测试用例 三、BUG 3.1什么是BUG 3.2如何描述一个BUG 4.3BUG优先级 四、软件开发模型 4.1软件生命周期 4.2开发模型 定义&#xff1a;软件测试就是一系列活动&#xff0c;这些活动是为了评估一个程序或者…

git push踩坑记录【看注意事项】

记录一次git push的踩坑过程&#xff08;详细在注意事项里&#xff0c;列出了具体的解决办法&#xff09;。 push远程仓库命令 使用命令 git init git add . git commit -m "提交说明写在这里" git remote add origin gitgithub.com:xxx/surgical-robot.git git p…

为什么硬盘在macbook上无法编辑?mac不能往移动硬盘拷东西

为什么硬盘在macbook上无法编辑&#xff1f;如果您只想在Mac上查看NTFS文件&#xff0c;只需将NTFS 外置存储设备连接到mac电脑并查看文件。但要编辑或传输文件&#xff0c;则需要NTFS工具。 NTFS文件格式与Mac不兼容&#xff0c;但许多用户仍然喜欢使用NTFS文件&#xff0c;而…

基于松鼠算法改进的DELM预测-附代码

松鼠算法改进的深度极限学习机DELM的回归预测 文章目录松鼠算法改进的深度极限学习机DELM的回归预测1.ELM原理2.深度极限学习机&#xff08;DELM&#xff09;原理3.松鼠算法4.松鼠算法改进DELM5.实验结果6.参考文献7.Matlab代码1.ELM原理 ELM基础原理请参考&#xff1a;https:…