CSS3-动画

首先了解浏览器兼容问题

不同浏览器写法不同

当您在 @keyframes 中创建动画时,请把它捆绑到某个选择器,否则不会产生动画效果。

@keyframes myfirst
{
from {background: red;}
to {background: yellow;}
}

@-moz-keyframes myfirst /* Firefox */
{
from {background: red;}
to {background: yellow;}
}

@-webkit-keyframes myfirst /* Safari 和 Chrome */
{
from {background: red;}
to {background: yellow;}
}

@-o-keyframes myfirst /* Opera */
{
from {background: red;}
to {background: yellow;}
}

举例








注释:本例在 Internet Explorer 中无效。

定义和用法

通过 @keyframes 规则,您能够创建动画。

创建动画的原理是,将一套 CSS 样式逐渐变化为另一套样式。

在动画过程中,您能够多次改变这套 CSS 样式。

以百分比来规定改变发生的时间,或者通过关键词 "from" 和 "to",等价于 0% 和 100%。

0% 是动画的开始时间,100% 动画的结束时间。

为了获得最佳的浏览器支持,您应该始终定义 0% 和 100% 选择器。animation-timing-function

注释:请使用动画属性来控制动画的外观,同时将动画与选择器绑定。

infinite——加上之后相当于循环,一直动!

div
{
width:100px;
height:100px;
background:red;
position:relative;
animation:mymove 5s infinite;
}

animation-timing-function

规定动画的速度曲线


CSS3-动画_第1张图片
2262bd97638378733afe65b9efc6b783_754x243.png

CSS3-动画

当您在 @keyframes 中创建动画时,请把它捆绑到某个选择器,否则不会产生动画效果。

通过规定至少以下两项 CSS3 动画属性,即可将动画绑定到选择器:

  • 规定动画的名称
  • 规定动画的时长

把 "myfirst" 动画捆绑到 div 元素,时长:5 秒:

div
{
   width:100px;
   height:100px;
   background:red;
   animation:myfirst 5s;
   -webkit-animation:myfirst 5s; /* Safari and Chrome */
@keyframes myfirst
{
  from {background:red;}
  to {background:yellow;}
}
@-webkit-keyframes myfirst /* Safari and Chrome */
{
  from {background:red;}
  to {background:yellow;}
}
}

注释:您必须定义动画的名称和时长。如果忽略时长,则动画不会允许,因为默认值是 0。

几个动画例子

1.当动画为 25% 及 50% 时改变背景色,然后当动画 100% 完成时再次改变:

div
{
  width:100px;
  height:100px;
  background:red;
  animation:myfirst 5s;
}
@keyframes myfirst
{
  0%   {background:red;}
  25%  {background:yellow;}
  50%  {background:blue;}
  100% {background:green;}
}

2.改变背景色和位置:

div
{
  width:100px;
  height:100px;
  background:red;
  position:relative;
  animation:myfirst 5s;
}@keyframes myfirst
{
  0%   {background:red; left:0px; top:0px;}
  25%  {background:yellow; left:200px; top:0px;}
  50%  {background:blue; left:200px; top:200px;}
  75%  {background:green; left:0px; top:200px;}
  100% {background:red; left:0px; top:0px;}
}

3.使 div 元素匀速向下移动:

div
{
  width:100px;
  height:100px;
  background:red;
  position:relative;
  animation:mymove 5s infinite;
}
@keyframes mymove
{
  from {top:0px;}
  to {top:200px;}
}

4.上下弹动

div
{
  width:100px;
  height:100px;
  background:red;
  position:relative;
  animation:mymove 5s infinite;
}
@keyframes mymove
{
  0%   {top:0px;}
  25%  {top:200px;}
  75%  {top:50px}
  100% {top:100px;}
}

5.在一个动画中改变多个 CSS 样式:

div
{
width:100px;
height:100px;
background:red;
position:relative;
animation:mymove 5s infinite;
}
@keyframes mymove
{
0%   {top:0px; background:red; width:100px;}
100% {top:200px; background:pink; width:600px;}
}

6.所有动画属性:

div
{
  width:100px;
  height:100px;
  background:red;
  position:relative;
  animation-name: myfirst;//规定 @keyframes 动画的名称。
  animation-duration: 5s;//规定动画完成一个周期所花费的秒或毫秒。
  animation-timing-function: linear;//规定动画的速度曲线。
  animation-delay: 2s;//规定动画何时开始。
  animation-iteration-count: infinite;//规定动画被播放的次数.
  animation-direction: alternate;//规定动画是否在下一周期逆向地播放。
  animation-play-state: running;//规定动画是否正在运行或暂停。
}
@keyframes myfirst
{
  0%   {background:red; left:0px; top:0px;}
  25%  {background:yellow; left:200px; top:0px;}
  50%  {background:blue; left:200px; top:200px;}
  75%  {background:green; left:0px; top:200px;}
  100% {background:red; left:0px; top:0px;}
}

7.简写的动画 animation 属性:

div
{
  width:100px;
  height:100px;
  background:red;
  position:relative;
  animation: myfirst 5s linear 2s infinite alternate;//顺序写上
}
@keyframes myfirst
{
  0%   {background:red; left:0px; top:0px;}
  25%  {background:yellow; left:200px; top:0px;}
  50%  {background:blue; left:200px; top:200px;}
  75%  {background:green; left:0px; top:200px;}
  100% {background:red; left:0px; top:0px;}
}

旋转

1.rotate旋转

CSS3-动画_第2张图片
1.gif

    
        

2.skew

CSS3-动画_第3张图片
2.gif
     .box{
        width: 150px;height: 150px;
        position: relative;
        overflow: hidden;
    }
     .bg-img{
        width: 150px;height: 150px;
        background: url("images/item20.jpg") no-repeat center center;
        background-size: cover;
        
    }
      .cover{
        width: 150px;
        height: 150px;
        position: absolute;
        left: 0;top: 0;
        background: rgba(240, 128, 114, 0.35);
        transform:skew(60deg,20deg);
        /* transform: rotate(90deg); */
        transition: all 0.85s;
        transform-origin: left bottom;
        
    }
    .box:hover .cover{
        transform: rotate(0deg);
    }
    
    

3.线条

CSS3-动画_第4张图片
3.gif
div{
        width: 800px;
        height: 5px;
        position: relative;
        animation: myfirst 5s infinite;
    }
    @keyframes myfirst{
        0%{
            width: 0;
            top: 0px;
        }
        25%{
            width: 25%;
            top: 200px;
            background: skyblue;
        }
        50%{
            width: 50%;
            top: 50px;
            background: salmon;
        }
        75%{
            width: 75%;
            top: 100px;
            background: orangered;
        }
        100%{
            width: 100%;
            top: 20px;
            background: teal;
        }0
    }
    
         

4.导航

CSS3-动画_第5张图片
4.gif
*{margin: 0;padding: 0}
        body{
            height: 2000px;
        }
        .nav{
            height: 50px;
            background-color: salmon;
            padding: 0 10%;
            transition: all 1s;
        }
        .nav ul{
            list-style: none;
            overflow: hidden;
        }
        .nav li{
            float: left;
            margin-right: 30px;
        }.nav a{
            line-height: 100px;
        }
        .fixed{
            position: fixed;
            width: 100%;
            background: skyblue;
        }
        .fixed a{
            color: white !important; /* 强制使用 */
        }
        
         
        
        

5.尖角

CSS3-动画_第6张图片
5.png
.box{
        width: 100px;
        height: 100px;
        background: skyblue;
        position: relative;
    }
    .box:after{
        position: absolute;
        content: "";
        border: 7px solid transparent;
        border-left-color: skyblue;
        right: -14px;top: 10px;
    }
    
        

6.模态框

CSS3-动画_第7张图片
6.gif

利用bootstranp,先引用




再直接复制代码,改东西


    
Launch demo modal

7.正反旋转

CSS3-动画_第8张图片
7.gif
    .container{
        width: 300px;height: 300px;
        margin: 100px auto;
        position: relative;
    }
    .container>div{
        width: 300px;height: 300px ;
        position: absolute;
        transition: all 3s;
        backface-visibility: hidden;
    }
    .front{
        background-color: salmon;
        z-index: 999;
        animation: toback 2s infinite;
    }
    /* .back{
        transform: rotateY(-180deg);
    } */
    /* .container:hover .front{
        transform: rotateY(180deg);
    }
    .container:hover .back{
        transform: rotateY(0deg);
    } */
    .back{
        height: 300px;
        background-color: skyblue;
        animation: tofront 2s infinite;
    }
    @keyframes toback{
        0% {transform: rotateY(0deg);}
        50% {transform: rotateY(180deg);}
        100% {transform: rotateY(360deg);}
    }
    @keyframes tofront{
        0% {transform: rotateY(-180deg);}
        50% {transform: rotateY(0deg);}
        100% {transform: rotateY(180deg);}
    }
    
        

你可能感兴趣的:(CSS3-动画)