CSS教程--动画

Posted MYUNB

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSS教程--动画相关的知识,希望对你有一定的参考价值。

目录

一.2D转换

1.translate()平移操作

2.rotate() 旋转操作

3.scale() 放大缩小操作

3.1.scaleX() 

3.2.scaleY() 

4.skew() 倾斜操作

二.3D变换

1.rotateX() 

2.rotateY() 

3.rotateZ() 

三.CSS过渡

1.transition 属性

2.transition-delay 属性

3.transition-timing-function 属性

4.transition- property 属性和transition-duration属性

四.CSS动画


一.2D转换

CSS中的2D转换顾名思义就是在平面内对元素或标签进行二维变换,通过tranform属性可以对元素进行平移,旋转,放大缩小和倾斜等操作,如下是这几种变换的方法:

  • translate
  • rotute
  • scale
  • skew

1.translate()平移操作

        translate方法有两个参数,对应X轴Y轴,也就是该元素要移动到位置

例如:将一个div标签沿x移动50px,沿y移动100px

.div{
width:30px;
height:50px;
transform:translate(50px,100px)
}

2.rotate() 旋转操作

        给rotate()方法传入一个角度时可以实现旋转操作,旋转的方向取决于传入角度的正负,正角度顺时针旋转,负角度逆时针旋转

例如:将一个div标签顺时针旋转20度

 div
            width: 60px;
            height:80px;
            background-color: chartreuse;
            border-radius:20%;
            transform: rotate(20deg);
        

3.scale() 放大缩小操作

        scale()方法传入两个数值分别表示宽度和高度变换的倍数,数值对于1表示放大,小数表示缩小,当然,负数是没有意义的

例如:将一个div标签宽放大2倍,高放大3倍

  div
            width: 60px;
            height:80px;
            background-color: chartreuse;
            position: fixed;
            border-radius:20%;
            transform: scale(2,3) translate(50px,100px);
        

3.1.scaleX() 

        scaleX()方法和csale()方法一样,但scaleX()只对元素宽度进行改变


3.2.scaleY() 

        不用说,都懂


4.skew() 倾斜操作

        skew()方法传入两个角度参数,实现沿X,Y轴对元素的倾斜,注意倾斜和旋转不一样

例如:沿X轴倾斜div标签20度,Y轴30度

 div
            width: 60px;
            height:80px;
            background-color: chartreuse;
            position: fixed;
            border-radius:20%;
            transform: skew(20deg,30deg) translate(50px,100px);
        

注意skewX()方法和skewY()方法分别是沿X,Y轴倾斜


二.3D变换

3D变换只涉及到三维的旋转,3D变换的transform属性有如下几个方法:

  • rotateX
  • rotateY
  • rotateZ

1.rotateX() 

rotateX()方法沿x轴旋转指定角度

例如:

#myDiv 
  transform: rotateX(150deg);


2.rotateY() 

rotateX()方法沿x轴旋转指定角度

例如:

#myDiv 
  transform: rotateY(150deg);


3.rotateZ() 

rotateX()方法沿x轴旋转指定角度

例如:

#myDiv 
  transform: rotateZ(150deg);


三.CSS过渡

        CSS过渡指可以在一定时间内改变元素的属性,所有,一个过渡操作要包含过渡的元素和过渡的时间,如下是过渡的几个属性:

  • transition
  • transition-delay
  • transition-duration
  • transition-property
  • transition-timing-function


1.transition 属性

        transition属性给定过渡的元素和时间,即可在给定时间内执行过渡操作,注意的是,transition属性只通过过渡的条件,过渡的操作自行定义

例如:但鼠标悬停时改变div标签的宽度

 div
            width: 90px;
            height: 100px;
            background-color: #3425;
            border-radius:20%;
            transition:width 2s;
        
        div:hover
            width: 150px;
        

2.transition-delay 属性

        transition-delay属性规定了过渡效果的延迟时间,说通俗一点就是该属性规定了要等待几秒后在发生过渡的效果(以秒为单位)

例如:等待1秒后再实现鼠标悬停时改变div的宽度

   div
            width: 90px;
            height: 100px;
            background-color: #3425;
            border-radius:20%;
            transition:width 2s;
            transition-delay: 1s;
        
        div:hover
            width: 150px;
        

3.transition-timing-function 属性

        transition-timing-function 属性规定过渡效果的速度曲线。

transition-timing-function 属性可接受以下值:

  • ease - 规定过渡效果,先缓慢地开始,然后加速,然后缓慢地结束(默认)
  • linear - 规定从开始到结束具有相同速度的过渡效果
  • ease-in -规定缓慢开始的过渡效果
  • ease-out - 规定缓慢结束的过渡效果
  • ease-in-out - 规定开始和结束较慢的过渡效果
  • cubic-bezier(n,n,n,n) - 允许您在三次贝塞尔函数中定义自己的值

4.transition- property 属性和transition-duration属性

        transition-property属性指定元素过渡的属性,相当于transition属性的第一个参数,而transition-duration属性规定过渡的时间,类似于第二个参数

例如:上个例子可以写成这样

   div
            width: 90px;
            height: 100px;
            background-color: #3425;
            border-radius:20%;
            transition-duration:2s;
            transition-property: width;
            transition-delay: 1s;
        
        div:hover
            width: 150px;
        

四.CSS动画

        CSS通过改变HTML元素来实现动画效果

        首先谈到CSS动画,我们先要知道@keyframes,它规定了一个html标签可以在一段时间里改变从而实现动画效果,

        然后是animaton-duration,规定了动画的时间,如果没有设置animation-durantion属性动画是没法子实现,因为该属性默认值为0,我们可以以from和to为时间规定动画变化的时间,或者是以0%~100%为时间线来表示

        animation-delay,设置动画的延迟效果,如果是负值,表示动画提前开始

        animation-retrion-count,设置动画播放的次数,如果次数为infinite表示动画一直播放

        

        animation-direction 属性指定是向前播放、向后播放还是交替播放动画。

animation-direction 属性可接受以下值:

  • normal - 动画正常播放(向前)。默认值
  • reverse - 动画以反方向播放(向后)
  • alternate - 动画先向前播放,然后向后
  • alternate-reverse - 动画先向后播放,然后向前

        

        animation-timing-function 属性规定动画的速度曲线。

animation-timing-function 属性可接受以下值:

  • ease - 指定从慢速开始,然后加快,然后缓慢结束的动画(默认)
  • linear - 规定从开始到结束的速度相同的动画
  • ease-in - 规定慢速开始的动画
  • ease-out - 规定慢速结束的动画
  • ease-in-out - 指定开始和结束较慢的动画
  • cubic-bezier(n,n,n,n) - 运行您在三次贝塞尔函数中定义自己的值

        

        animation-fill-mode 属性规定目标元素的样式,就是动画结束了,图案的位置

animation-fill-mode 属性可接受以下值:

  • none - 默认值。动画在执行之前或之后不会对元素应用任何样式。
  • forwards - 元素将保留由最后一个关键帧设置的样式值(依赖 animation-direction 和 animation-iteration-count)。
  • backwards - 元素将获取由第一个关键帧设置的样式值(取决于 animation-direction),并在动画延迟期间保留该值。
  • both - 动画会同时遵循向前和向后的规则,从而在两个方向上扩展动画属性。

例如:一个简单的颜色变换动画

 @keyframes example
          fromtop:0px;background-color: chartreuse;
         totop: 200px;background-color: aqua;
      
      div
          background-color: chartreuse;
          width: 80px;
          height: 70px;
          position: relative;
          border-radius: 50px;
          animation-name: example;
          animation-duration: 2s;
          animation-delay:1s;
          animation-iteration-count: 2;
          animation-fill-mode: backwards;
      

以上是关于CSS教程--动画的主要内容,如果未能解决你的问题,请参考以下文章

如何将css3动画添加到bootstrap中

CSS3CSS3动画——我离前端的炫酷又近了一步

用CSS3制作50个超棒动画效果教程

前端25款不得不说的html5+css3动画效果

前端25款不得不说的html5+css3动画效果

前端25款不得不说的html5+css3动画效果