动画系列,案例思路加拓展

191 阅读2分钟

动画

1.动画的基础练习

 animation: ai 5s:动画单词,动画名字,动画时长,缺一不可。
定义动画名字和书写关键帧:
@keyframes ai {
            /* 关键帧:定义开始和结束的变化,你可以随意改变里面的样式,还有百分比写法,比如0%代表from,还有15%,30%,这样类推,100%代表to */
            from {
                background-color: red;
                width: 500px;
                font-size: 20px;
            }

            to {
                background-color: yellow;
                height: 300px;
            }
        }

2.动画的单写

1.animation-name 设置动画的名称 @keyframes 起名字 设置关键帧

2.animation-duration 设置动画的播放时间 (数字加 s 就是秒的意思)

3.animation-timing-function 设置动画的速度曲线 linear 匀速 steps() 逐帧动画 用背景图显示,是几个图括号里面输入几,背景图移动就要用背景图的移动方式 background-position: 0 0;

  1. animation-delay 设置动画的延迟时间 直接用数字加s表示 (注意要写在动画的播放时间的后面,不然 会被默认为播放时长)
  2. .animation-iteration-count 播放次数 直接数字表示即可 infinite表示无限循环
  3. .animation-direction 设置动画的方向 normal 默认值 先正再正 altemate 先正再反(常用)
  4. .animation-fill-mode 设置延迟状态和结束状态 backword 设置延迟时间内元素变成第一帧的画面 forwords 设置动画结束后 停留最后一帧
  5. .animation-play-state 设置动画播放还是暂停 running 播放 默认值 paused 暂停

3.动画播放的方向

4.动画暂停

 /* 当鼠标移入时动画暂停 */
        div:hover {
            /* paused:暂停 */
              running  :播放
            /* 动画暂停单写 */
            animation-play-state: paused;
        }

5.动画的播放速度

默认 ease 一般用 linear 匀速播放

6.速度曲线

案例:精灵动画

<!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: 140px;
            height: 120px;
            /* border: 1px solid #000; */
            background-image: url(./bg.png);
            /* 背景图一帧一帧的动,总共12帧 ,因为背景图是无限循环,所有盒子停了背景图还在跑*/
            animation: qr 2s steps(12) infinite,
                /* 复合写法加逗号隔开,让盒子四秒内跑完,匀速移动,停留在最后一帧 */
                box 4s linear forwards;
        }

        /* 背景图一帧一帧的动形成动画效果 */
        @keyframes qr {
            to {
                background-position: 1680px 0;
            }
        }

        /* 盒子一起动,让人感觉背景图在跑 */
        @keyframes box {
            to {
                transform: translateX(800px);
            }
        }
    </style>
</head>

<body>
    <div>

    </div>
</body>

</html>

案例:跑马灯轮播图

1.技巧:

1 静态 html结构 box 显示 边框 里面 大的div 存放多个小图片 后期移动的时候 只移动装着小图片的盒子就行

2 动态效果 1 inner盒子 从右往左移动

3 无缝滚动 技巧 1 两个大盒子 1 外层盒子 设置 眼看宽度和高度 2 里层盒子 用来存放多张图片(里面要存放多少张图片 设置宽度为多少!! ) 2 真实存放的图片张数 比实际的要多 1 多多少 看你一下的外层盒子能装几张 (浮动) 3 设置动画 1 设置内层盒子的位移 等于 真实的那几张图片的位移! 2 设置动画无线滚动!!

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1.0,maximum-scale=1,minimum-scale=1,user-scalable=no"
    />
    <title>index.html</title>
    <style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }
      .box {
        width: 1440px;
        height: 270px;
        background-color: aqua;
        margin: 200px auto;
        overflow: hidden;
      }
      .inner {
        /* 需要加上三张图片的宽度 */
        width: 4800px;
        height: 270px;

        animation: move 3s linear infinite;
      }

      @keyframes move {
        100% {
          transform: translateX(-3360px);
        }
      }
      img {
        float: left;
      }
    </style>
  </head>
  <body>
    <div class="box">
      <div class="inner">
        <img src="./images/1.jpg" alt="" />
        <img src="./images/2.jpg" alt="" />
        <img src="./images/3.jpg" alt="" />
        <img src="./images/4.jpg" alt="" />
        <img src="./images/5.jpg" alt="" />
        <img src="./images/6.jpg" alt="" />
        <img src="./images/7.jpg" alt="" />

        <!-- 技巧 故意增加前面张三张图片下去 -->
        <img src="./images/1.jpg" alt="" />
        <img src="./images/2.jpg" alt="" />
        <img src="./images/3.jpg" alt="" />
      </div>
    </div>
  </body>
</html>
<!-- 
  1 静态 html结构
    box 显示 边框 里面 大的div 存放多个小图片 后期移动的时候 只移动装着小图片的盒子就行 

  2 动态效果
    1 inner盒子 从右往左移动  

  3 无缝滚动 技巧
    1 两个大盒子
      1 外层盒子 设置 眼看宽度和高度 
      2 里层盒子 用来存放多张图片(里面要存放多少张图片 设置宽度为多少!! )
    2 真实存放的图片张数 比实际的要多
      1 多多少 看你一下的外层盒子能装几张 (浮动)
    3 设置动画
      1 设置内层盒子的位移 等于 真实的那几张图片的位移! 
      2 设置动画无线滚动!! 
 -->

拓展问答

问:你如何知道一个css属性有没有兼容性呢?

答: can i use ,在程序里面输入该属性