CSS3 动画实现放大缩小、涟漪扩散效果、叠加图片循环来回显示

一、无限放大缩小,可以应用于跳动的气球等场景,效果如下
这里写图片描述

html部分
<div class="ballon"></div>

    1
    2

css部分
   @keyframes scaleDraw {  /*定义关键帧、scaleDrew是需要绑定到选择器的关键帧名称*/
            0%{
                transform: scale(1);  /*开始为原始大小*/
            }
            25%{
                transform: scale(1.1); /*放大1.1倍*/
            }
            50%{
                transform: scale(1);
            }
            75%{
                transform: scale(1.1);
            }
        }
    .ballon{
            width: 150px;
            height: 200px;
            background: url("images/balloon.png");
            background-size: 150px 200px;
            -webkit-animation-name: scaleDraw; /*关键帧名称*/
            -webkit-animation-timing-function: ease-in-out; /*动画的速度曲线*/
            -webkit-animation-iteration-count: infinite;  /*动画播放的次数*/
            -webkit-animation-duration: 5s; /*动画所花费的时间*/
        }

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26

上面的几个属性也可以合在一起写

-webkit-animation: scaleDraw 5s ease-in-out infinite;

    1

二、涟漪扩散, 效果图如下
这里写图片描述
实质就是就是利用了动画的延迟属性,两层圆的动画相关的属性基本相同,除了最外层的圆多设置了animation-delay属性

html部分
 <div class="live">
         <img src="images/live.png" alt="">
         <span></span>
         <span></span>
     </div>

    1
    2
    3
    4
    5
    6

css部分
.live{
           position: relative;
           width: 100px;
           height: 100px;
       }
       .live img{
           width: 100px;
           height: 100px;
           z-index: 0;
       }
        @keyframes living {
            0%{
                transform: scale(1);
                opacity: 0.5;  
            }
            50%{
                transform: scale(1.5);  
                opacity: 0;   /*圆形放大的同时,透明度逐渐减小为0*/
            }
            100%{
                transform: scale(1);
                opacity: 0.5;
            }
        }
        .live span{
            position: absolute;
            width: 100px;
            height: 100px;
            left: 0;
            bottom: 0;
            background: #fff;
            border-radius: 50%;
            -webkit-animation: living 3s linear infinite;
            z-index: -1;
        }
        .live span:nth-child(2){
            -webkit-animation-delay: 1.5s; /*第二个span动画延迟1.5秒*/
        }

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39

三、叠加图片循环来回显示,效果如下
这里写图片描述
思路:将第二张图片用绝对定位叠加在第一张图片上,通过在动画函数里设置透明度来控制图片的显示隐藏

html部分
   <div class="pics">
         <img src="images/avatar1.png" alt="" class="pic1">
         <img src="images/avatar2.png" alt="" class="pic2">
     </div>

    1
    2
    3
    4
    5

css部分
        .pics{
            position: relative;
            width: 400px;
            height: 400px;
        }
        .pic1{
            width: 400px;
            height: 400px;
        }
        @keyframes picDraw {
            0%{
                opacity: 0;
            }
            50%{
                opacity: 1;
            }
            100%{
                opacity: 0;
            }
        }
        .pic2{
            position: absolute;
            width: 400px;
            height: 400px;
            left: 0;
            top: 0;
            -webkit-animation: picDraw 5s ease-in-out infinite;
        }
 

猜你喜欢

转载自blog.csdn.net/zhangchen124/article/details/87216096