大前端技术架构是什么(〖大前端 – 基础入门三大核心之CSS篇㉔〗- 动画效果与实战小案例)
文章目录
⭐️ 动画 🌟 动画的定义 🌟 动画的调用 🌟 多关键帧动画 🌟 动画效果实战我们学习了 “过渡 ” 之后 ,结合 “变形 ” ,已经可以实现动画了 ,但编写起来比较复杂 ,而且一定手动来触发这个动画(比如鼠标浮上去),如果说 ,我们打开网页就可以看到一些动画 ,该怎么实现呢?这就用到了css3新增的另一个强大的功能—— “动画 ” 。
⭐️ 动画
在css3中可以直接定义动画,这些动画不需要通过鼠标触碰等来触发
🌟 动画的定义
定义动画:使用@keyframes来定义动画 ,keyframes表示“关键帧 ” ,在项目上线前 ,要补上例如@-webkit-这样的浏览器私有前缀 。 什么叫关键帧? 在制作动画的时候 ,只需要制作“ ”起始“和 ”结束“两种状态 ,这两种状态就叫做动画的 “关键帧 ” 。中间的帧由css3自动补全 。我们看到这里面没有包含动画的时间 、速度等内容 ,这些内容要在动画调用里去实现 。
🌟 动画的调用
调用动画:使用 animation 属性调用动画 ,animation就是动画的意思 。
上面四个参数和过渡非常的像 ,大家可以对比记忆。动画还有第五个参数:动画的执行次数 。
动画的执行次数有几种写法:
如果想永远执行可以写:animation: r 2s linear 0s infinite;
我们还可以让动画第2 、4 、6…(偶数次)自动逆向执行 ,那么需要加上alternate参数即可:animation: r 2s linear 0s infinite alternate;
如果想让动画停止在最后结束状态,那么要加上forwards:animation: r 2s linear 0s forwards;
只看这些很难理解 ,下面我们来举例说明:
动画效果如下:
🌟 多关键帧动画
在之前的例子中 ,我们都是只定义了两个关键帧:开始状态和结束状态 。事实上,我们还可以定义多个关键帧 ,例如:
百分数代表时间节点 ,例如20%代表动画总时长的前20%
下面看个例子:
🌟 动画效果实战
案例一
发光的灯泡
第一步,先把“灯泡”和“光 ”通过绝对定位 ,调整到一起 ,让光笼罩着灯泡。
可以打开开发者调试工具 ,通过尝试去寻找移动的值 。
第二步 ,给“光 ”添加动画 ,透明度由0变1 ,再有1变0 ,无限循环
案例二
穿梭在宇宙中的小火箭
代码如下:
<!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; } .box { width: 200px; height: 200px; position: relative; margin: 300px auto; } img { width: 200px; height: 200px; animation: zd .5s linear 0s infinite alternate; } @keyframes zd { from { transform: translateX(20px) translateY(20px); } to { transform: translateX(-20px) translateY(-20px); } } .line { width: 2px; height: 120px; background-color: blue; position: absolute; top: 0; left: 0; animation: yd .8s linear 0s infinite; } .line2 { height: 80px; left: 30px; animation: yd .8s linear .4s infinite; } .line3 { height: 100px; left: 100px; animation: yd .8s linear .5s infinite; } .line4 { height: 200px; left: 180px; animation: yd .8s linear .6s infinite; } @keyframes yd { 0% { transform: rotate(45deg) translateY(-200px); opacity: 0; } 50% { opacity: 1; } to { transform: rotate(45deg) translateY(200px); opacity: 0; } } </style> </head> <body> <div class="box"> <img src="/imges/huojian.png" alt=""> <div class="line line1"></div> <div class="line line2"></div> <div class="line line3"></div> <div class="line line4"></div> </div> </body> </html>创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!