dmz社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 698|回复: 0

[Html/Css] css3使用animation属性实现炫酷效果

[复制链接]
  • TA的每日心情

    2024-2-20 11:15
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    878

    主题

    4343

    帖子

    3995

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    3995

    发表于 2020-3-26 16:00:00 | 显示全部楼层 |阅读模式

    本站资源全部免费,回复即可查看下载地址!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    animation-name 动画名称,可以有多个值,用逗号隔开,表示绑定了多个动画

    animation-name属性为动画指定一个名称
    animation-name兼容主流的浏览器,不过还是需要加前缀去兼容
    animation-name有两个属性值,分别是keyframename和none



    [HTML] 纯文本查看 复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        body{
            margin:0 auto;    
            background:#abcdef;    
        }
        div{    
            width:800px;
            height:800px;
            margin:0 auto;    
        }
        .container{
            position: relative;
        }
        .inner, .middle, .outer, .pic{
            position: absolute;
            top:0;
            right:0;
            bottom:0;
            left:0;
            margin:auto;        
        }
        .inner{
            background:url(source/circle_inner.png) center no-repeat;
            animation-name:circle_inner;
        }
        .middle{
            background:url(source/circle_middle.png) center no-repeat;
            animation-name:circle_middle;
        }
        .outer{
            background:url(source/circle_outer.png) center no-repeat;
            animation-name:circle_outer;
        }
        .pic{
            background:url(source/pic.png) center no-repeat;
        }
    </style>
    </head>
    <body>
        <div class="container">
            <div class="inner"></div>
            <div class="middle"></div>
            <div class="outer"></div>
            <div class="pic"></div>
        </div>
    </body>
    </html>

    animation-duration 动画持续时间 默认是0
    animation-timing-function 动画时间函数
    animation-delay 动画延迟时间
    animation-delay 属性定义动画什么时候开始,单位可以是秒(s)或毫秒(ms),允许负值,-2s使动画马上开始,但会跳过2s进入动画
    animation-iteration-count 动画循环次数
    animation-iteration-count: number | infinite  默认为1
    animation-direction: normal | reverse | alternate | alternate-reverse 正常; 反向; 正反交替; 反正交替
    alternate 和 alternate-reverse ,如果animation-itreation-count 不是设置成 infinite ,则只会执行一次就停止
    animation-fill-mode 动画延迟未执行时,或者动画执行完毕后的停留状态(动画不能设置为循环,否则无法停止)
    animation-fill-mode: none | forwards | backwards | both 无 结束状态 开始状态 看情况
    animation-play-state: running | paused 动画运行状态:运行 | 暂停
    animation 简写
    animation: name  duration  timing-function  delay  iteration-count  direction  fill-mode  play-state

    [HTML] 纯文本查看 复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        body{
            margin:0 auto;    
            background:#abcdef;    
        }
        div{    
            width:800px;
            height:800px;
            margin:0 auto;    
        }
        .container{
            position: relative;
            -webkit-transform-style:preserve-3d;
               -moz-transform-style:preserve-3d;
                -ms-transform-style:preserve-3d;
                 -o-transform-style:preserve-3d;
                    transform-style:preserve-3d;
        }
        .inner, .middle, .outer, .pic{
            position: absolute;
            top:0;
            right:0;
            bottom:0;
            left:0;
            margin:auto;        
        }
        .container:hover div{
            -webkit-animation-play-state:paused;
               -moz-animation-play-state:paused;
                -ms-animation-play-state:paused;
                 -o-animation-play-state:paused;
                    animation-play-state:paused;
        }
        .inner{
            background:url(source/circle_inner.png) center no-repeat;    
            /*循环*/
            -webkit-animation:circle_inner 10s ease-in-out 1s infinite alternate running;
               -moz-animation:circle_inner 10s ease-in-out 1s infinite alternate running;
                -ms-animation:circle_inner 10s ease-in-out 1s infinite alternate running;
                 -o-animation:circle_inner 10s ease-in-out 1s infinite alternate running;
                    animation:circle_inner 10s ease-in-out 1s infinite alternate running;    
            /*不循环,填充效果*/
            /*-webkit-animation:circle_inner 10s ease-in-out 1s forwards running;
               -moz-animation:circle_inner 10s ease-in-out 1s forwards running;
                -ms-animation:circle_inner 10s ease-in-out 1s forwards running;
                 -o-animation:circle_inner 10s ease-in-out 1s forwards running;
                    animation:circle_inner 10s ease-in-out 1s forwards running;*/
        }
        .middle{
            background:url(source/circle_middle.png) center no-repeat;
            -webkit-animation:circle_middle 10s ease-in-out 1s infinite alternate running;
               -moz-animation:circle_middle 10s ease-in-out 1s infinite alternate running;
                -ms-animation:circle_middle 10s ease-in-out 1s infinite alternate running;
                 -o-animation:circle_middle 10s ease-in-out 1s infinite alternate running;
                    animation:circle_middle 10s ease-in-out 1s infinite alternate running;    
        }
        .outer{
            background:url(source/circle_outer.png) center no-repeat;
            -webkit-animation:circle_outer 10s ease-in-out 1s infinite alternate running;
               -moz-animation:circle_outer 10s ease-in-out 1s infinite alternate running;
                -ms-animation:circle_outer 10s ease-in-out 1s infinite alternate running;
                 -o-animation:circle_outer 10s ease-in-out 1s infinite alternate running;
                    animation:circle_outer 10s ease-in-out 1s infinite alternate running;    
        }
        .pic{
            background:url(source/pic.png) center no-repeat;
        }
        @keyframes circle_inner{
            0%{ transform:rotateX(0deg); }
            50%{ transform:rotateX(90deg); }
            100%{ transform:rotateX(360deg); }
        }
        @keyframes circle_middle{
            0%{ transform:rotateY(0deg); }
            50%{ transform:rotateY(90deg); }
            100%{ transform:rotateY(360deg); }
        }
        @keyframes circle_outer{
            0%{ transform:rotateZ(0deg); }
            50%{ transform:rotateZ(90deg); }
            100%{ transform:rotateZ(360deg); }
        }
    </style>
    </head>
    <body>
        <div class="container">
            <div class="inner"></div>
            <div class="middle"></div>
            <div class="outer"></div>
            <div class="pic"></div>
        </div>
    </body>
    </html>


    1.png


    动画性能优化:
    用position-fixed代替background-attachment
    带图片的元素放在伪元素中
    will-change
    兼容性IE13+ 感觉可以放弃了……

    [HTML] 纯文本查看 复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        body{
            margin:0 auto;    
            background:#abcdef;    
        }
        div{    
            width:30px;
            height:30px;
            position: fixed;
            left:0;
            right:0;
            bottom:100px;
            margin:0 auto;    
            cursor:pointer;
            -webkit-transform:rotate(90deg);
               -moz-transform:rotate(90deg);
                -ms-transform:rotate(90deg);
                 -o-transform:rotate(90deg);
                    transform:rotate(90deg);
            -webkit-animation:upDown 2s ease-in-out infinite;
              -moz-animation:upDown 2s ease-in-out infinite;
               -ms-animation:upDown 2s ease-in-out infinite;
                -o-animation:upDown 2s ease-in-out infinite;
                   animation:upDown 2s ease-in-out infinite;
        }
        @-webkit-keyframes upDown{
            0%{ bottom:100px; }
            50%{ bottom:80px; }
            100%{ bottom:100px; }
        }
        @-moz-keyframes upDown{
            0%{ bottom:100px; }
            50%{ bottom:80px; }
            100%{ bottom:100px; }
        }
        @-ms-keyframes upDown{
            0%{ bottom:100px; }
            50%{ bottom:80px; }
            100%{ bottom:100px; }
        }
        @-o-keyframes upDown{
            0%{ bottom:100px; }
            50%{ bottom:80px; }
            100%{ bottom:100px; }
        }
        @keyframes upDown{
            0%{ bottom:100px; }
            50%{ bottom:80px; }
            100%{ bottom:100px; }
        }
    </style>
    </head>
    <body>
        <div>></div>
    </body>
    </html>

    2.png





    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|小黑屋|本站代理|dmz社区

    GMT+8, 2025-2-2 04:49 , Processed in 0.116855 second(s), 34 queries .

    Powered by Discuz! X3.4 Licensed

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表