CSS3_03

CSS3-03

一、动画(animation)
1、什么是动画
  • 动画是使元素从一种样式逐渐变化为另一种样式的效果
  • 动画是 CSS3 中最具颠覆性的特征之一,可通过设置多个节点来精确的控制一个或者一组动画,从而实现复杂的动画效果
2、动画实现步骤
  • 定义动画
  • 调用定义好的动画
二、定义动画
  • 语法:

    @keyframes 动画名称 {
        0% {
            width: 100px;
        }
        
        100% {
            width: 200px
        }
    }
    
  
- 在 @keyframs 中规定某项 CSS 样式,就有创建当前样式逐渐改为新样式的动画效果
  
- 0% 是动画的开始,100 % 是动画的完成,这样的规则就是动画序列
  
- 可以用百分比来规定变化发生的时间,或用 `from` 和 `to`,等同于 0% 和 100%
  
- 动画序列和动画中的样式可以定义任意多个
  
    

#### 三、使用动画

- 语法:

  ```css
  /* 调用动画 */
  animation-name: 动画名称;
  /* 持续时间 */
  animation-duration: 持续时间;
  • @keyframes 创建动画,需要把它绑定到一个html元素,否则动画不会有任何效果
  • 必须定义动画的名称和时长。如果忽略时长,则动画不会允许,因为默认值是 0

代码演示

div {
    position: absolute;
    width: 100px;
    height: 100px;
    background-color: red;
    /* 调用动画 */
    animation-name: divRun;
    /* 持续时间 */
    animation-duration: 5s;
} 

/* 定义动画 */
@keyframes divRun {
    0% {
        left: 0;
        top: 0;
    }
    50% {
        background-color: green;
        left: 600px;
    }
    100% {
        left: 0px;
        top: 600px;
        background-color: blue;
    }
}
四、动画常见属性
属性描述
@keyframes定义动画
animation-name动画名称(必须)
animation-duration动画完成一个周期所需时间,默认为0 (必须)
animation-timing-function动画的速度曲线,默认是ease
animation-iteration-count动画播放的次数,默认为1,还可设置为infinite(无限)
animation-direction动画是否在下一周期逆向播放,默认为normal,逆播放为alternate
animation-fill-mode动画结束后状态。保持结束状态为forwards, 保持起始状态为backwards,both为两者效果都有
animation-delay动画延迟执行的时间,默认为0
animation-play-state动画当前状态。默认为running,还可设置为paused
animation所有动画的简写属性。除了amination-play-state

代码演示

div {
    width: 100px;
    height: 100px;
    background-color: green;
    /* 动画名称 */
    animation-name: move;
    /* 动画花费时长 */
    animation-duration: 2s;
    /* 动画速度曲线 */
    animation-timing-function: ease-in-out;
    /* 动画等待多长时间执行 */
    animation-delay: 2s;
    /* 规定动画播放次数 infinite: 无限循环 */
    animation-iteration-count: infinite;
    /* 是否逆行播放 */
    animation-direction: alternate;
    /* 动画结束之后的状态 */
    animation-fill-mode: forwards;
}

div:hover {
    /* 规定动画是否暂停或者播放 */
    animation-play-state: paused;
}

@keyframes move {
    0% {
        transform: translate(0px)
    }
    100% {
        transform: translate(500px, 0)
    }
}
1、动画速度曲线

​ 可以通过谷歌浏览器来调节贝塞尔曲线的值

  • 语法:

    animation-timing-function: ease(默认) | linear | ease-in | ease-out | ease-in-out | steps()
    
描述
ease动画低速开始,然后加快,在结束前变慢(默认)
linear动画匀速
ease-in动画以低速开始
ease-out动画以低速结束
ease-in-out动画以低带开始和结束
steps()动画以指定时间间隔步长执行
2、动画简写方式
  • 语法:

    animation: 动画名称 持续时间 运动曲线  播放次数 是否反方向 结束状态 延迟时间;
    
    • 动画名称和持续时间必须要有

    • 其它有默认值的属性如果不需要可以省去

    • 简写属性里面不包含animation-paly-state

    • 暂停动画: animation-paly-state: paused,经常和鼠标经过等配合使用

    • 要想动画走回来,而不是直接调回来:animation-direction: alternate

    • 要想动画结束后,停在结束位置:animation-fill-mode: forwards

五、奔跑的小熊

在这里插入图片描述

代码展示

<!-- html部分 -->

<div class="bg1"></div>
<div class="bg2"></div>
<div class="bear"></div>
/* css部分 */
 * {
     margin: 0;
     padding: 0;
}

body {
    width: 100vw;
    height: 100vh;
    background-image: linear-gradient( rgb(112, 104, 104), #fff, #ccc);
}

.bg1,
.bg2 {
    position: absolute;
    bottom: 0;
    width: 100%;
    height: 300px;
    animation: changeBg 5s linear infinite;
}

.bg1 {
    background: url(image/bg1.png) repeat-x;
}

.bg2 {
    z-index: 1;
    background: url(image/bg2.png) repeat-x;
}

.bear {
    z-index: 2;
    position: absolute;
    bottom: 10px;
    width: 200px;
    height: 100px;
    background: url(image/bear.png) no-repeat;
    animation: run .6s steps(8) infinite, move 2s linear forwards;
}

@keyframes changeBg {
    from {
        background-position: 0 0;
    }
    to {
        background-position: -3840px 0;
    }
}

@keyframes run {
    0% {
        background-position: 0 0;
    }
    to {
        background-position: -1600px 0;
    }
}

@keyframes move {
    0% {
        left: 0;
    }
    100% {
        left: 50%;
        transform: translateX(-50%);
    }
}
思考:跳动的心
  • 思路:
    • 通过旋转和移动得到心型图形
    • 通过缩放动画实现跳动效果
      在这里插入图片描述
思考:地图热点
  • 思路:
    • 通过多个动画延迟时间的不同达到扩散效果

      0% {
      left: 0;
      }
      100% {
      left: 50%;
      transform: translateX(-50%);
      }
      }


#### 思考:跳动的心

* 思路:
  * 通过旋转和移动得到心型图形
  * 通过缩放动画实现跳动效果

![在这里插入图片描述](https://img-blog.csdnimg.cn/700b4b53193540cfa036918d3bb58558.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6Ieq6Iul,size_14,color_FFFFFF,t_70,g_se,x_16#pic_center)


#### 思考:地图热点

* 思路:
  * 通过多个动画延迟时间的不同达到扩散效果
![在这里插入图片描述](https://img-blog.csdnimg.cn/1a3ff811a12241ee8d39f4894eeb5ca4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6Ieq6Iul,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值